Testing

Try the server by hand before wiring it into your product: list the tools, call a few, and see what actually comes back.

Test locally

The MCP Inspector serves its OAuth callback from your own machine, which is why localhost and 127.0.0.1 are already on the redirect-URI allowlist. Dynamic client registration works straight away — you don't need a connector request to start.

npx @modelcontextprotocol/inspector

Choose Streamable HTTP as the transport, enter https://api.typeform.com/mcp or your account's regional endpoint, and authorize in the browser window that opens. Then call accounts-list_accounts first, and pass the account_id it returns into everything after it.

You're connected to a real account, and there is no sandbox — every form you publish and every contact you delete is real. Use an account you don't mind breaking.

Working locally doesn't mean you're approved. localhost is allowlisted; your production callback domain isn't until you submit a connector request. A connector that works perfectly on your machine will still fail with redirect_uri domain not allowed the first time it registers from your own domain.

Common first-run problems

SymptomCause
Connection fails immediatelyClient is configured for SSE. Only streamable HTTP is supported
Works for some users, fails for othersAccount is in another region, or behind the other EU authorization server — see Data residency
Tool call rejected for a missing account_idCall accounts-list_accounts first and pass the result through
Token stops working mid-sessionoffline_access wasn't requested, so no refresh token was issued — see Authentication
patch_form rejectedMissing or stale validation_token. Call forms-public_validate_patch first
Invalid field type or operatorOps weren't built from forms-public_get_capabilities
Analytics query rejectedField IDs are per form. Call insights-public_discover first
Form edits saved but users can't see thempatch_form doesn't publish. Call forms-public_publish_form

If you need information about an error, check out Troubleshooting and errors.

Hit something that isn't in this table? Tell us — that's how it gets fixed.