Reference
MCP
TextText speaks MCP in both directions. A bearer-authenticated 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, Streamable HTTP, and a workspace token you create and save in the client's protected bearer-credential field.
https://texttext.app/api/mcp
Create a token at Connect, and revoke it there. The hosted endpoint does not currently provide the OAuth authorization flow required by some connector galleries.
Connect a client
Use the hosted endpoint only when the client accepts a bearer token. For local Claude or Codex, the recommended path is 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}"
}
}
}
}
Claude and Claude Desktop connectors
- Claude and Claude Desktop remote connectors currently accept authless or OAuth servers, not a manually supplied bearer token.
- TextText does not currently provide an OAuth authorization server, so do not add the hosted endpoint there and expect it to authenticate.
- On this Mac, use the token-free TextText plugin in Claude Code. Otherwise use Codex, Cursor, VS Code, or another client with protected bearer headers.
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.
- If the client is OAuth-only, it is not compatible with this endpoint today.
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.