Debugging
Most problems with the MCP connector fall into three buckets: the connection never completed, the tokens expired, or a tool call failed. This page covers each.
”I can’t connect”: the OAuth flow failed
Symptom: You add the server URL and either don’t get redirected, get redirected and see an error, or come back to the client without an enabled connector.
Try:
- Confirm the server URL is exactly
https://mcp.traveler.md/mcp, including the/mcppath. - Confirm you’re signed in to TravelAI in the same browser. If your client opens an in-app browser, sign in there first.
- Check the consent screen. If you denied any scope, the client will treat the connection as failed. Restart and approve all requested scopes.
- If you’re on a corporate network, OAuth redirects can be blocked. Try a personal network briefly to isolate.
If you still can’t connect, see Support.
”It worked yesterday”: token expired or revoked
Symptom: The agent says something like “I lost access to your travel preferences.” You see 401 unauthorized in client logs.
This usually means:
- Your refresh token expired (30 days of inactivity).
- You revoked the connection from Connections on traveler.md and forgot. Revocation takes effect on the next call, so this can surface mid-session rather than at the next sign-in.
- The client’s stored token was wiped (signed out, reinstalled, etc).
Fix: Reconnect from your client’s connector settings. The OAuth flow will issue fresh tokens.
”The tool call failed”: agent saw an error
Symptom: The agent tried to call read_profile or another tool and got an error back.
Common error codes:
| Code | Meaning | What to do |
|---|---|---|
401 unauthorized | Token invalid or expired | Reconnect the connector |
403 forbidden | Token missing required scope | Reconnect and ensure all needed scopes are granted (for example, a write needs profile.update or trip.update) |
404 not_found | The requested trip doesn’t exist, isn’t visible to this token, or is already archived | Re-check list_trips — it hides archived trips. A missing Traveler.md is not this error: read_profile succeeds with a null version_hash, which is the signal to call create_profile |
409 conflict | Concurrent write detected, or a trip slug already in use | Re-read before retrying: sections are replaced wholesale, so resending the same body against the current hash overwrites the other writer. A slug collision names no hash in its message and needs a different slug or title, not a retry |
validation_error | A section name isn’t in the spec, a section exceeded its sentence cap, or a section was sent as an empty list without allow_clear_sections | The message names the offending fields. For a cap, send fewer, more concise sentences — the cap applies to the whole section you send, not just the new lines. To empty a section deliberately, resend with allow_clear_sections: true |
429 rate_limited | Too many calls in a short window | Back off; the response includes Retry-After |
500+ | Server error | Contact support |
Inspecting your data
You can always see exactly what the server has stored by signing in at traveler.md and viewing your Traveler.md and any Trip.md files. If something an agent wrote looks wrong, this is where to confirm it.
Write history
Every write is versioned. From your account at traveler.md , open Settings → Activity for a log of every edit to your Traveler.md and trips — what changed, when, and which connected app did it.
There is no one-click revert. Restoring an earlier state is an ordinary write: read the current version, send back the content you want, and it becomes the new version with the old one still in the history.
Still stuck?
See Support for contact paths.