Tracy MCP for ChatGPT and Claude
Tracy’s Model Context Protocol (MCP) server lets you work on a website from ChatGPT or Claude. You sign in to Tracy, choose one website, and grant access to that site’s content. The AI service uses your account with that service; your Tracy sign-in controls which website it can reach. You do not give ChatGPT or Claude your Tracy password or a CMS administrator password.
Connection address
Section titled “Connection address”https://cowork.tracy.ai/mcpUse this same URL in both services. It is the MCP endpoint, including the /mcp path.
tracy.ai is the product website; docs.tracy.ai serves this documentation. Neither is the MCP
server. Development deployments use their own application origin, such as cowork.tracy.site.
Directory availability depends on each platform’s review. A prepared submission is not an approved listing. Custom connections also depend on the options available in your account.
Before connecting
Section titled “Before connecting”- Have a Tracy account and a website hosted or imported into Tracy.
- Accept your invitation to that site. Your seat must allow content editing.
- Make sure you can sign in at Tracy Cowork.
- Use a test site for your first edit. Read its content before requesting a change.
The connector supports content operations on WordPress, Joomla and EmDash through Tracy’s existing API. Each site’s adapter decides which operations it supports; an unsupported operation returns a refusal rather than falling back to a shell, SQL or direct CMS access.
Connect from ChatGPT
Section titled “Connect from ChatGPT”- Add Tracy from the Plugins Directory when its listing is available. For development, use the remote MCP connection flow in ChatGPT developer mode with the URL above.
- Start the connection and sign in on cowork.tracy.ai.
- Check that the consent page names ChatGPT and the callback host chatgpt.com.
- Choose the website you want to connect, then select Connect.
- Enable Tracy for your chat and start with: “Show me the pages on my connected website.”
You do not need to create an OpenAI developer organization to use an available Tracy listing. Developer organizations are for publishing integrations, not for granting access to your site.
Connect from Claude
Section titled “Connect from Claude”- In Claude, open Settings → Connectors and add a custom connector where that option is available.
- Use Tracy as the name and https://cowork.tracy.ai/mcp as the MCP server URL.
- Continue to sign in to Tracy. No client secret is needed for the hosted Claude CIMD flow.
- Check that the consent page identifies claude.ai, choose a website, and select Connect.
- Enable the connector in your chat and ask it to read a page before editing.
These instructions cover hosted Claude, including claude.ai. Claude Code’s separate loopback OAuth callback is not supported by this initial Tracy integration. For platform requirements, see Claude connector authentication.
Work with content
Section titled “Work with content”Try one task at a time:
- “Which website is connected, and what can you edit there?”
- “List the published pages and show me the About page.”
- “Change this page’s title to ‘About our team’, keeping the rest unchanged.”
- “Show the receipt for that change and tell me what changed.”
- “Undo that change, then read the page again to confirm the result.”
The connector reads existing content and revisions before a supported edit. If someone else changes the same content, Tracy may refuse the stale edit. Read again and decide on the new version; do not repeatedly retry a write that failed or timed out.
Successful writes return a change receipt, identified by an apply id. Use that receipt to inspect the recorded steps or request supported undo. A content/database edit does not necessarily create a file diff or a Git commit. Undo can be refused when its preconditions no longer hold, or return individual failed steps; read back the content before claiming success.
Permissions and disconnecting
Section titled “Permissions and disconnecting”Each OAuth connection belongs to one Tracy account and one site, with the content scope.
It cannot grant more access than that person’s current seat. The connector does not provide
shell commands, arbitrary file access, billing, site provisioning or general account administration.
Access tokens last one hour. Refresh rotates the tokens while keeping the same connection identity for receipts and revocation. Consent lasts up to 30 days, after which you reconnect. Removing the seat or revoking the connection prevents it from being refreshed into access again.
To revoke access in Tracy, open Settings → API keys and revoke the corresponding ChatGPT · Tracy or claude.ai · Tracy key. You can also remove the connector in the AI service. Reconnect explicitly if you want to grant access again.
Tracy stores hashes of OAuth secrets rather than the original tokens. OAuth hash and grant metadata can remain after expiration or revocation for replay detection and audit; this initial implementation does not have a scheduled deletion period for those records. See the published privacy policy and terms for the service’s policies.
Tool reference
Section titled “Tool reference”Tool inputs are discovered through tools/list; the current catalogue is generated from
Tracy’s public REST routes. The key parameter must name the connected site. Use ids and
revisions returned by reads rather than guessing them.
| Tool | Purpose |
|---|---|
tracy_get_me |
Read the connection’s account, site and scopes. |
tracy_get_sites_by_key |
Discover content types, locales, capabilities and permissions. |
tracy_get_sites_by_key_pages |
List pages and their URLs. |
tracy_get_sites_by_key_contents |
List published content with fields and revisions. |
tracy_get_sites_by_key_contents_by_id |
Read one content item. |
tracy_get_sites_by_key_changes |
Read changes since a recent pages snapshot. |
tracy_get_sites_by_key_design |
Read the site’s recorded design tokens, when available. |
tracy_get_sites_by_key_records_by_kind |
List records of a supported CMS kind. |
tracy_get_sites_by_key_records_by_kind_by_id |
Read one CMS record. |
tracy_patch_sites_by_key_records_by_kind_by_id |
Create or update a supported record. |
tracy_delete_sites_by_key_records_by_kind_by_id |
Trash a supported record with a change receipt. |
tracy_post_sites_by_key_contract_by_operation |
Inspect or apply supported content-contract operations. |
tracy_get_sites_by_key_applies |
List recorded changes for this connection. |
tracy_get_sites_by_key_applies_by_id |
Inspect a change receipt. |
tracy_post_sites_by_key_applies_by_id_revert |
Undo supported steps from a receipt. |
For operation schemas, revision conditions and CMS limits, see the API reference, authentication and errors.
Technical connection details
Section titled “Technical connection details”The transport is stateless Streamable HTTP, using JSON-RPC over POST /mcp.
Send Content-Type: application/json and accept application/json, text/event-stream.
Requests are limited to 256 KiB. GET and DELETE on the MCP endpoint return 405;
a browser opening the URL is not a connection test.
Unauthenticated MCP requests return 401 with a WWW-Authenticate header pointing to protected
resource metadata. A browser session cookie and an ordinary manually created API key do not
authenticate MCP. Never put an access token in the URL.
| Setting | Production value |
|---|---|
| MCP resource | https://cowork.tracy.ai/mcp |
| Protected resource metadata | https://cowork.tracy.ai/.well-known/oauth-protected-resource/mcp |
| Metadata alias | https://cowork.tracy.ai/.well-known/oauth-protected-resource |
| OAuth issuer | https://cowork.tracy.ai |
| Authorization server metadata | https://cowork.tracy.ai/.well-known/oauth-authorization-server |
| Authorization endpoint | https://cowork.tracy.ai/oauth/authorize |
| Token endpoint | https://cowork.tracy.ai/oauth/token |
| Revocation endpoint | https://cowork.tracy.ai/oauth/revoke |
| Scope | content |
| PKCE | S256, required |
| ChatGPT public client id | tracy-chatgpt |
| ChatGPT callback | https://chatgpt.com/connector_platform_oauth_redirect |
| Hosted Claude registration | CIMD from HTTPS claude.ai metadata, public client authentication none |
| Hosted Claude callback | https://claude.ai/api/mcp/auth_callback |
Token exchange and refresh use application/x-www-form-urlencoded. The resource parameter is
the full MCP URL, including /mcp. Authorization codes are single-use and expire after five
minutes. Codes, grants, refresh and revocation are bound to the originating client and site.
Dynamic client registration and arbitrary redirect URLs are not supported.
Troubleshooting
Section titled “Troubleshooting”| Symptom | What to check |
|---|---|
| The service cannot discover Tracy | Use the full HTTPS MCP URL, including /mcp. Check that resource and authorization server metadata are reachable. An HTML sign-in page or 302 response is not an MCP response. |
| No website is available on consent | Sign in to the correct Tracy account, accept the site invitation, and check that the seat allows content editing. |
401 after a connection worked |
Let the client refresh. If access was revoked, the consent expired or the seat was removed, reconnect only after resolving that condition. |
invalid_client |
Use the supported ChatGPT public client or hosted Claude CIMD flow. Do not reuse another app’s client identity or callback. |
invalid_grant |
The code, verifier, resource, client or refresh token does not match, or the credential expired or was used already. Start a fresh sign-in rather than replaying it. |
403 on a tool call |
Check the connected site, current seat and content permissions. Reconnecting does not grant a stronger role. |
412 REVISION_STALE |
Read the record again and use its current revision before deciding on an edit. |
429 |
Wait for Retry-After. Do not repeatedly retry writes. |
| An operation is unsupported | Check site capabilities and the API reference. Do not work around the refusal with shell, SQL or direct CMS credentials. |
Support
Section titled “Support”For connection help, use the Tracy community on Discord, linked from the official Help Center. Include the AI service, the operation, the time, the HTTP/error code and a redacted receipt id when relevant. Do not post passwords, cookies, access/refresh tokens or private website content. Remove a failing connection and reconnect only when you are ready to grant access again.