Try the server by hand before wiring it into your product: list the tools, call a few, and see what actually comes back.
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/inspectorChoose 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.
localhostis allowlisted; your production callback domain isn't until you submit a connector request. A connector that works perfectly on your machine will still fail withredirect_uri domain not allowedthe first time it registers from your own domain.
| Symptom | Cause |
|---|---|
| Connection fails immediately | Client is configured for SSE. Only streamable HTTP is supported |
| Works for some users, fails for others | Account is in another region, or behind the other EU authorization server — see Data residency |
Tool call rejected for a missing account_id | Call accounts-list_accounts first and pass the result through |
| Token stops working mid-session | offline_access wasn't requested, so no refresh token was issued — see Authentication |
patch_form rejected | Missing or stale validation_token. Call forms-public_validate_patch first |
| Invalid field type or operator | Ops weren't built from forms-public_get_capabilities |
| Analytics query rejected | Field IDs are per form. Call insights-public_discover first |
| Form edits saved but users can't see them | patch_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.