Reference
MCP
TextText speaks MCP in both directions. An authorized client can work on your documents through the hosted server, and your own assistant can use tools from servers you connect to it.
The endpoint
One address and Streamable HTTP. ChatGPT can request access through TextText sign-in; other supported clients can use a workspace token.
https://texttext.app/api/mcp
Manage ChatGPT authorizations and manually created tokens at Connect.
Connect a client
ChatGPT uses browser authorization. Other clients listed below use a protected bearer token. For local Claude or Codex, use the token-free TextText plugin described in the connection guide.
Codex
- Create a revocable workspace token at Connect.
- Provide it to the Codex process as TEXTTEXT_WORKSPACE_TOKEN through your credential or environment manager. Do not put the token in this command.
- Run the copyable command below. It saves the endpoint and only the environment variable name.
- Start a new Codex task and run the shared connection proof below.
Codex command
codex mcp add texttext --url https://texttext.app/api/mcp --bearer-token-env-var TEXTTEXT_WORKSPACE_TOKEN
Claude Code
- Create a revocable workspace token at Connect.
- Put the configuration below in .mcp.json for a project. Keep the token itself out of the file.
- Provide TEXTTEXT_WORKSPACE_TOKEN through the environment that launches Claude Code, approve the project server, and check /mcp.
- Start a new Claude Code session and run the shared connection proof below.
.mcp.json
{
"mcpServers": {
"texttext": {
"type": "http",
"url": "https://texttext.app/api/mcp",
"headers": {
"Authorization": "Bearer ${TEXTTEXT_WORKSPACE_TOKEN}"
}
}
}
}
Cursor
- Create a revocable workspace token at Connect.
- Put the configuration below in ~/.cursor/mcp.json for every project, or .cursor/mcp.json for one project.
- Provide TEXTTEXT_WORKSPACE_TOKEN through the environment that launches Cursor, then enable the TextText server.
- Start a new Cursor conversation and run the shared connection proof below.
Cursor mcp.json
{
"mcpServers": {
"texttext": {
"url": "https://texttext.app/api/mcp",
"headers": {
"Authorization": "Bearer ${env:TEXTTEXT_WORKSPACE_TOKEN}"
}
}
}
}
VS Code
- Create a revocable workspace token at Connect.
- Open MCP: Open User Configuration and paste the configuration below.
- Start the TextText server. VS Code asks for the token once as a masked input and keeps it in secure storage.
- Start a new agent conversation and run the shared connection proof below.
VS Code mcp.json
{
"inputs": [
{
"type": "promptString",
"id": "texttext-token",
"description": "TextText workspace token",
"password": true
}
],
"servers": {
"texttext": {
"type": "http",
"url": "https://texttext.app/api/mcp",
"headers": {
"Authorization": "Bearer ${input:texttext-token}"
}
}
}
}
ChatGPT
- Add TextText as an MCP connector in ChatGPT using the endpoint below.
- ChatGPT opens TextText sign-in and an access approval page. Review the requested scope and approve it.
- Use the shared connection proof below, then manage or revoke the connection at Connect.
MCP endpoint
https://texttext.app/api/mcp
Claude and Claude Desktop connectors
- Claude and Claude Desktop remote connectors currently accept authless or OAuth servers, not a manually supplied bearer token.
- TextText currently recognizes ChatGPT's OAuth client metadata. Claude Desktop's OAuth client is not registered.
- On this Mac, use the token-free TextText plugin in Claude Code. Otherwise use ChatGPT, Codex, Cursor, VS Code, or another supported client.
Another bearer-authenticated MCP client
- Create a revocable workspace token at Connect.
- Add the endpoint below only in a client that provides a protected bearer-credential or Authorization-header field.
- Save the token in that protected field, enable the server, and run the shared connection proof below.
- OAuth-only clients other than ChatGPT need a separately supported client identity.
MCP endpoint
https://texttext.app/api/mcp
Check that it worked
Ask your agent, in its own words:
Use TextText to capture this private note with a stable idempotency key: Agent connection check, then a new line, then Connected through [your agent name], replacing the brackets with your name. Report the exact receipt title, item id, and saved location. Read that exact item id back, confirm the saved line, and do not publish or share it.
Success is one private note, an exact receipt with title, item id, and saved location, followed by a read of that same item id. Retry the prompt with the same idempotency key to confirm that it does not create a duplicate.
If the tools do not appear, the client is usually still holding an older tool list. Restart it, then reconnect.
The other direction: connect a server to TextText
Your assistant can also be a client. Connect an MCP server in Workspace Settings and its tools join the ones your assistant already has, so "put this spec in Figma" and "write up what you did in TextText" are the same conversation from either end.
- Workspace Settings, then Connected MCP servers, then Add server.
- Give it a name and its https address, and an access token if that server needs one. TextText connects once to see what it offers.
- It is saved switched OFF. Turn on Allow when you want your assistant to use it. Name this connection in the request when you want TextText to discover its tools; unrelated turns do not contact it.
The name becomes the namespace: a tool called create_frame on a connection named Figma reaches your assistant as figma__create_frame, so a connected server can never shadow one of TextText's own tools.
Servers on your own machine
Paper, pen.dev, and Figma can expose desktop MCP servers tied to the app's current file or selection. TextText does not execute local MCP tools in this release because that path cannot yet use the same durable exact-argument review as a hosted connection. Workspace Settings accepts public https connections, not loopback endpoints.
TextText's local Claude and Codex integration is different: the standalone Mac app bundles a signed-in CLI for working on TextText documents. It does not turn TextText into a client for another app's loopback MCP server.
What holds in both directions
- Every request is scoped to one workspace, and visibility fails closed. Notes and bookmarks stay unlisted.
- TextText workspace mutations write an audit row with the authenticated account. Every connected-server tool call waits for review of its exact arguments and stays named in the assistant conversation.
- A write that supplies the current content hash refuses a stale read instead of overwriting newer content. The guarded local CLI supplies that hash for edits.
- A connected server's tool names, descriptions and results are treated as untrusted data. Read-only and destructive annotations are server claims, not permission. Approval also compares the current tool definition, endpoint, and protected connection configuration with what you reviewed.
- A remote connected server's address is re-checked before every connection and must resolve to a public host. Its access token is encrypted at rest and never shown back to any browser.
Security and privacy covers what stays on your machine and how to revoke access.