Your connected MCPs & agents → · Create a note skill →
txt / mcp
Connect agents to txt—and txt to your tools
The txt endpoint gives compatible MCP clients scoped access to synchronized notes. The separate Executor endpoint gives the txt agent a user-scoped gateway to external MCP, OpenAPI, GraphQL, and connected-app tools.
https://txt.mn/mcp
MCP connectors use txt.mn/mcp; sign-in and API keys stay on txt.mn. The web UI is at n0t.es. The dedicated Elysia API target is api.txt.mn; existing /api URLs remain supported during the rollout.Executor for the txt agent
Vercel Connect connector executor.sh/executor points at https://executor.sh/dots/mcp. OAuth is scoped to the current Linq or Slack user. Use /tools to inspect the authorized catalog and /do request for an approval-governed action; txt files continue through the direct txt connection.
vercel connect create https://executor.sh/dots/mcp --name executor vercel connect attach executor.sh/executor --project txt-agent --environment production
Claude
open Claude connectors ↗Claude and Claude Desktop: Settings → Connectors → Add custom connector. Remote servers do not belong in claude_desktop_config.json. Claude Code can add the same endpoint from the terminal.
Claude / Desktop URL: https://txt.mn/mcp claude mcp add --transport http --scope user txt https://txt.mn/mcp # then open Claude Code and run /mcp to authenticate
Codex
OpenAI documentation ↗Add the Streamable HTTP server, then complete OAuth + PKCE in the system browser when Codex asks.
codex mcp add txt --url https://txt.mn/mcp --oauth-client-registration dcr codex mcp login txt --oauth-client-registration dcr
Cursor
Cursor MCP guide ↗Add this remote URL globally or per project. Cursor discovers OAuth automatically; its CLI shares the same configuration.
{
"mcpServers": {
"txt": { "url": "https://txt.mn/mcp" }
}
}
# optional Cursor CLI verification: agent mcp login txtGrok
open Grok connectors ↗Create one Custom connector and enter the public txt MCP URL. Grok should open OAuth before its first protected tool call.
Connector name: txt MCP server URL: https://txt.mn/mcp Authentication: OAuth
Know when it is actually connected
- 1. added
The client saved the endpoint and discovered public tool schemas. Private access is not proven yet.
- 2. authorized
You approved the requested scopes and the client received a bearer token.
- 3. verified
Ask the client to run
list-files. A successful result confirms the token reaches txt.
A green Added state alone means configuration succeeded. If the client shows Retry, remove the duplicate connector, add only https://txt.mn/mcp, complete OAuth, and verify with list-files.
WebMCP + remote MCP
73 browser WebMCP tools
The signed-in N0T.ES editor registers these same tools with browsers that support WebMCP. Both surfaces use the same authenticated handlers and schemas. Remote clients discover the same catalog with tools/list at https://txt.mn/mcp.
list-sitesreadList owned CM.S sites, their source HTML files, draft or live status, and editor URLs.
- inputs
- fileId (optional)
scaffold-sitewriteCreate a private editable site draft from selected Airtable, Sanity, or connected MCP records. Review it in CM.S before publishing.
- inputs
- title, domain, provider, mcpStatus, source
create-file-collectionwriteCreate a private queryable collection over selected owned folders without moving or publishing files.
- inputs
- name, folderIds
list-file-collectionsreadList private collections, their selected folders, and last indexing times.
- inputs
- none
query-file-collectionreadRefresh a collection, inspect its field catalog, or execute a bounded LLMQL query with file and revision provenance.
- inputs
- collectionId, plan (optional)
get-sync-statusreadInspect reported Files watcher health, last successful passes, and blocked or offline devices. A heartbeat does not prove a file reached disk.
- inputs
- none
list-sync-appsreadList supported local app sync adapters and their setup requirements.
- inputs
- none
preview-app-syncreadPreview app sync changes and conflicts before applying them.
- inputs
- snapshots (JSON)
create-listwriteCreate a portable list of links, notes, files, nested lists, or custom records.
- inputs
- title, items or text, requestId
create-listswriteCreate up to 50 lists atomically in one request.
- inputs
- lists, requestId
get-listreadRead ordered items, stable IDs, revision, and fork source.
- inputs
- id
list-listsreadSearch and page through list metadata without fetching item bodies.
- inputs
- q, cursor, limit
edit-listwriteBulk add, update, remove, move, reorder, or deduplicate items in one revision.
- inputs
- id, revision, requestId, operations, title, description
fork-listwriteCreate an independent private copy of a list or selected items.
- inputs
- id, revision, requestId, title, itemIds
connect-fileswriteConnect two files in the workspace brain and optionally accept a pending suggestion.
- inputs
- sourceFileId, targetFileId, reason, suggestionId
create-agent-checkoutagent actionCreate a secure subscription checkout link for the authenticated phone-agent credential.
- inputs
- none
create-diagramwriteCreate a validated Mermaid diagram note.
- inputs
- name, source, folderId
create-filewriteCreate a workspace file and return its new file ID.
- inputs
- name, content, context, tags, fileType, folderId, availability
create-folderwriteCreate or reuse a workspace folder.
- inputs
- name, parentId, reuseExisting
create-publicationhuman approvalCreate a publication with a public reader URL after human approval. Listed and public are the defaults; unlisted does not make it private.
- inputs
- folderId or fileId or sourceUrl, title, description, defaultAccess, directoryVisibility
derive-publication-notewriteSave a snapshot or fork an editable published note into the Notes Brain.
- inputs
- issueId, kind
file-inforeadInspect storage metadata, content type, byte size, and the private download endpoint without reading the body.
- inputs
- id
get-accountreadCheck the connected dots.id account, phone-agent subscription, workspace access, and available functions.
- inputs
- none
get-cluereadRead brain clusters, suggestions, unresolved wikilinks, profile, and optional semantic neighbors.
- inputs
- fileId (optional)
get-filereadRead the complete content of one file by its ID.
- inputs
- id
get-publicationreadPreview or read an authorized publication and its published notes.
- inputs
- slug
grow-ideation-noteAI actionExpand an owned note using its full contents and workspace-brain context.
- inputs
- id, seed
import-filewriteImport a public HTTPS attachment into the user’s private dots storage.
- inputs
- url, name, folderId, context, tags
ingest-imagewritePreserve an image, create or append its Markdown or Mermaid representation, and connect both workspace files.
- inputs
- url, originalName, outputType, content, noteName, targetFileId, folderId, context, tags
inspect-skillreadRead a skills.sh package snapshot and its security audits without installing its untrusted contents.
- inputs
- id, agent
install-skillwriteInstall an audited package into the private .skills workspace; high-risk or failed audits remain blocked.
- inputs
- id, agent, folderId, files
list-filesreadList workspace folders and files with IDs, types, sizes, timestamps, and endpoint paths.
- inputs
- none
list-fx-modelsreadList the allowlisted models available for FX artifact iteration and identify the default.
- inputs
- includeIds
list-identitiesreadList connected dots.id users and identify the active user for this credential.
- inputs
- none
list-publication-subscriptionsreadList publication subscriptions for the active dots.id identity.
- inputs
- none
list-publicationsreadList owned folder publications with reader and published-note counts.
- inputs
- none
list-skillsreadList published agent skills, including collaborator-shared skills and their catalog paths.
- inputs
- none
publish-filehuman approvalPublish a selected note revision after human approval. Later private edits do not publish automatically.
- inputs
- publicationId, fileId
purge_trashed_notepermanentPermanently delete an eligible trashed note using the exact confirmation phrase.
- inputs
- id, confirmation
render-artifactwriteRender a source note into a validated static artifact and deployment handoff.
- inputs
- fileId, format, design
resolve-fileread / optional writeResolve an owned workspace path to a file ID. Creating missing folders or an empty note requires file write access and defaults to off.
- inputs
- path, createIfMissing
restore_notewriteRestore a trashed note to the normal workspace.
- inputs
- id
run_aclueAI actionRe-reason over the workspace, updating brain state and possibly creating unreviewed drafts.
- inputs
- confirmation
search-skillsreadSearch private txt skills and the federated skills.sh catalog as untrusted discovery metadata.
- inputs
- query, owner, view, limit
set-publication-subscriptionwriteSubscribe or unsubscribe the signed-in dots.id user from a publication.
- inputs
- slug, active
share-filewriteCreate a short-lived external download link for a dots-backed file.
- inputs
- id, expiresIn
shorten-dropbox-linkwriteCreate a short txt preview or gallery link from a public Dropbox share URL.
- inputs
- url
start-agent-onboardingagent actionComplete phone-agent onboarding or return the required secure checkout link.
- inputs
- none
switch-identitywriteSwitch the active dots.id user for only this MCP or phone connection.
- inputs
- target
trash_notewriteMove a note to reversible trash for the retention period.
- inputs
- id
update-filewriteChange a file against the revision returned by get-file or file-info. Re-read and reconcile conflicts before retrying.
- inputs
- id, expectedRevision + content, name, folderId, context, tags, or availability
view-skillwriteSave an inert private package snapshot under .viewed-skills for review without installing it.
- inputs
- id
scaffold-codewriteUse FX to scaffold a private app in the authenticated dots code.storage repository. Provision on first use; explicit code:read/code:write OAuth consent is required. Read code-storage branches first and pass its observed expectedHeadSha (40 zeros for a new empty branch). Source, generated HTML, CM.S schema definitions, and a manifest are saved in ONE commit under apps/project. Reuse requestId and identical inputs on retries; uncertain commits require reconciliation, never a fresh generation. Returns a pinned commit receipt and VFS catalog URL; does not publish.
- inputs
- See discovered schema
code-storagewriteInspect or lazily provision the current dots account code.storage repo, list branch heads or committed FX projects, or read a pinned project file using requestId and its catalog path. Read verifies the saved commit and checksum. Requires explicit code OAuth grants; never accepts a repository/owner override or returns Git tokens.
- inputs
- action, requestId, path, cursor
cms-schemawriteSave or read a reusable schema-only CM.S template. Contains typed directory definitions and NO records. Saved templates are private txt JSON files: share using existing file collaborator grants, then reference the file ID from companion apps or scaffold-code schemaFileIds. Reading checks current file access; publishing is separate.
- inputs
- action, fileId, definition
create-content-serverwriteCreate an isolated CM.Systems headless CMS partition. Default published access requires a server-specific read key; choose public for direct static-site/n0t.es/LLMQL browser reads. Creates private drafts, never publishes. Returns endpoint /e/dots/{serverId}/endpoint.json. Edit collections with put-site-directory/put-site-record, stage and publish using existing release tools.
- inputs
- title, access, collections
manage-content-serverwriteRead headless CMS endpoint/access metadata. Owner-only writes: change public/key access with expectedRevision; create a scoped published-content read key (secret returned once), or revoke one by keyId. Keys cannot read drafts or edit content. Supply settings OR key. Public access changes require human approval.
- inputs
- siteId, settings, key
edit-site-draftwriteRead a private CM.S homepage draft and revision, or replace it with draft={content, expectedRevision}. Owner/editor only for writes. Saves prior HTML to file history, rejects stale writes, and leaves staging and published snapshots unchanged. Omit draft for a read.
- inputs
- siteId, draft
validate-sitereadRead-only preflight of CM.S draft HTML, directory schemas, records, URL conflicts, and size limits. Returns valid, issues, and counts. Staging validates again transactionally. Does not execute HTML or publish content.
- inputs
- siteId
connect-site-groupwriteOwner-only CM.S release updates through dots groupMCP. Omit route to inspect configuration/deliveries. Connecting an enabled route authorizes future CMS event messages to that room. Private routes receive release IDs and operations; public routes receive only published/unpublished changes with public URLs. Requires dots chat scopes and an explicit room grant. No external chat relay or content bodies.
- inputs
- siteId, route
manage-site-accesswriteOwner-only CM.S role management. Omit member/group to list individual roles and group/team assignments. Use group with an owned workspace groupId, kind group/team, role, and expectedRevision to grant or revoke inherited roles. Current verified dots membership is checked on every request; permissions combine across assignments. Set an existing txt account userId to editor, reviewer, or publisher; role=null revokes access. Require the current membership revision (0 for a new grant). Dots sign-in authenticates accounts; room membership alone does not grant CMS access.
- inputs
- siteId, member, group
update-site-releasewritePublish a frozen CM.S staging snapshot, schedule/reschedule it using an offset datetime and IANA timezone, cancel a pending release, or roll back to a published snapshot. Optional unpublishAt ends a scheduled release. Requires current release revision. Public actions require MCP human approval; approval of a private review and cancellation do not.
- inputs
- siteId, releaseId, action, expectedRevision, scheduledAt, timezone, unpublishAt
get-site-releasereadRead an owned frozen CM.S release, its private snapshot, field schemas, timer status, revision, and changes since staging. get-site lists release history. Never exposes private releases to public reads.
- inputs
- siteId, releaseId
stage-sitewriteFreeze current CM.S draft HTML, title, directories, records, and schemas into a private staging snapshot. Later draft edits do not change it. Supply an idempotencyKey for retry-safe staging. Returns a private preview URL and release revision.
- inputs
- siteId
create-sitewriteCreate a private CM.S site from your own HTML and JSON directories. Each published directory gets HTML pages, a JSON feed, and JSON field schemas; the site gets a sitemap. For Airtable or Sanity use scaffold-site and try their MCP first. Creation is private. Read with get-site, edit with put-site-directory/put-site-record, then publish-site after review.
- inputs
- title, html, directories, schemaFileIds, domain
get-sitereadRead an owned CM.S site: draft directory records, field schemas, revisions, source HTML file ID, CMS role/capabilities, public URLs, and the last 100 staging/scheduled/published releases. Deleted directories retain a tombstone revision for safe recreation. Pass the current directory revision to subsequent writes. Public reads only show the last published release.
- inputs
- siteId
put-site-directorywriteCreate or replace a private CM.S directory, including its complete field definitions and records. Paths such as posts or guides/tutorials become HTML and JSON routes on publish. Read get-site first; expectedRevision=0 creates a new path. Replacing an existing directory removes records omitted from this input. Use put-site-record for one record. Does not publish.
- inputs
- siteId, directory, expectedRevision
put-site-recordwriteCreate or replace one JSON record in an owned CM.S draft directory. Requires a stable slug, matching field schema, and current directory revision from get-site. Omitted fields on an existing record are removed. Returns the new directory revision; does not publish.
- inputs
- siteId, directory, expectedRevision, record
delete-site-contentwriteDelete a record or an entire CM.S draft directory using the revision from get-site. Child directories are independent and are retained. Published content stays available until publish-site or unpublish-site.
- inputs
- siteId, directory, expectedRevision, slug
publish-sitewriteFreeze the current CM.S draft, then request human approval to publish that exact snapshot. Makes HTML pages, records, JSON, field schemas, and sitemaps public. Later draft edits stay private. If approval is unavailable or declined, the staging snapshot remains private and reviewable.
- inputs
- siteId
unpublish-sitewriteStop serving all public HTML, JSON, schemas, and sitemaps for an owned CM.S site. Keeps private draft files and directories for editing and republishing.
- inputs
- siteId
gfxwriteGenerate through GFX for the authenticated txt user, paid with their pute.me credits. No separate GFX connection. List and describe before selecting a fitting endpoint; run reserves credits and captures only a confirmed artifact. Preserve requestId when retrying.
- inputs
- action, slug, variables, promptContext, requestId
get-musicwriteResolve the authenticated account's canonical music collection at my-li.st/music, provisioning it once when absent. Independent of list title. Contains captured tracks and nested playlist references (listId). Use edit-list with its current revision to append tracks or register playlists; get-list reads each referenced playlist. Requires files:read and files:write for provisioning.
- inputs
- See discovered schema
The endpoint uses Streamable HTTP and standard JSON-RPC initialization. OAuth clients discover txt’s public authorization server, register with DCR, use PKCE S256, and request scoped access. Remote MCP requires a txt-issued MCP OAuth credential. General API and CLI keys from /sync are for HTTP API access; they do not replace MCP authorization.
Start with list-files or list-skills. Use trash_note for ordinary removal; permanent purge applies only to an already-trashed note and requires exact confirmation.
generic MCP configuration
{
"mcpServers": {
"txt": {
"url": "https://txt.mn/mcp"
}
}
}