Skip to main content
The tool-annotation step is the most common reason a ChatGPT submission is rejected. For every tool your MCP server exposes, OpenAI requires three annotation values and a written justification for each. This page gives you a template to lay them all out before you open the form, and a reference for what each value means.
For managed Waniwani apps, the annotations are already set in the server code and you receive these justifications pre-filled to review and paste. This template is for laying them out yourself or for checking that the prepared values match what your app actually does.

How to use this

  1. Add one row per tool to the table below.
  2. Fill the Yes/No values to match how each tool behaves (use the reference at the bottom if unsure).
  3. Write a one or two sentence justification for each value, stating plainly why it is accurate.
  4. When the form scans your server, confirm the values it shows match this table, then paste your justifications.

Tool annotations

Copy this table and fill one row per tool: Add or remove rows so the count matches your server exactly.

CSP metadata

If any tool interacts with external services, list its domains:

What each annotation means

If the annotations are not set, OpenAI assumes the worst defaults: readOnlyHint = false, openWorldHint = true, destructiveHint = true. That is why setting and justifying them accurately matters. For more background, see the MCP tool annotations post.

Back to ChatGPT submission

Where this template fits in the full checklist.

Test cases template

The other section reviewers check hardest.