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.

canonical endpoint

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.
outbound tool gateway

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 txt

Grok

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. 1. added

    The client saved the endpoint and discovered public tool schemas. Private access is not proven yet.

  2. 2. authorized

    You approved the requested scopes and the client received a bearer token.

  3. 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-sitesread

List owned CM.S sites, their source HTML files, draft or live status, and editor URLs.

inputs
fileId (optional)
scaffold-sitewrite

Create 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-collectionwrite

Create a private queryable collection over selected owned folders without moving or publishing files.

inputs
name, folderIds
list-file-collectionsread

List private collections, their selected folders, and last indexing times.

inputs
none
query-file-collectionread

Refresh a collection, inspect its field catalog, or execute a bounded LLMQL query with file and revision provenance.

inputs
collectionId, plan (optional)
get-sync-statusread

Inspect 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-appsread

List supported local app sync adapters and their setup requirements.

inputs
none
preview-app-syncread

Preview app sync changes and conflicts before applying them.

inputs
snapshots (JSON)
create-listwrite

Create a portable list of links, notes, files, nested lists, or custom records.

inputs
title, items or text, requestId
create-listswrite

Create up to 50 lists atomically in one request.

inputs
lists, requestId
get-listread

Read ordered items, stable IDs, revision, and fork source.

inputs
id
list-listsread

Search and page through list metadata without fetching item bodies.

inputs
q, cursor, limit
edit-listwrite

Bulk add, update, remove, move, reorder, or deduplicate items in one revision.

inputs
id, revision, requestId, operations, title, description
fork-listwrite

Create an independent private copy of a list or selected items.

inputs
id, revision, requestId, title, itemIds
connect-fileswrite

Connect two files in the workspace brain and optionally accept a pending suggestion.

inputs
sourceFileId, targetFileId, reason, suggestionId
create-agent-checkoutagent action

Create a secure subscription checkout link for the authenticated phone-agent credential.

inputs
none
create-diagramwrite

Create a validated Mermaid diagram note.

inputs
name, source, folderId
create-filewrite

Create a workspace file and return its new file ID.

inputs
name, content, context, tags, fileType, folderId, availability
create-folderwrite

Create or reuse a workspace folder.

inputs
name, parentId, reuseExisting
create-publicationhuman approval

Create 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-notewrite

Save a snapshot or fork an editable published note into the Notes Brain.

inputs
issueId, kind
file-inforead

Inspect storage metadata, content type, byte size, and the private download endpoint without reading the body.

inputs
id
get-accountread

Check the connected dots.id account, phone-agent subscription, workspace access, and available functions.

inputs
none
get-clueread

Read brain clusters, suggestions, unresolved wikilinks, profile, and optional semantic neighbors.

inputs
fileId (optional)
get-fileread

Read the complete content of one file by its ID.

inputs
id
get-publicationread

Preview or read an authorized publication and its published notes.

inputs
slug
grow-ideation-noteAI action

Expand an owned note using its full contents and workspace-brain context.

inputs
id, seed
import-filewrite

Import a public HTTPS attachment into the user’s private dots storage.

inputs
url, name, folderId, context, tags
ingest-imagewrite

Preserve 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-skillread

Read a skills.sh package snapshot and its security audits without installing its untrusted contents.

inputs
id, agent
install-skillwrite

Install an audited package into the private .skills workspace; high-risk or failed audits remain blocked.

inputs
id, agent, folderId, files
list-filesread

List workspace folders and files with IDs, types, sizes, timestamps, and endpoint paths.

inputs
none
list-fx-modelsread

List the allowlisted models available for FX artifact iteration and identify the default.

inputs
includeIds
list-identitiesread

List connected dots.id users and identify the active user for this credential.

inputs
none
list-publication-subscriptionsread

List publication subscriptions for the active dots.id identity.

inputs
none
list-publicationsread

List owned folder publications with reader and published-note counts.

inputs
none
list-skillsread

List published agent skills, including collaborator-shared skills and their catalog paths.

inputs
none
publish-filehuman approval

Publish a selected note revision after human approval. Later private edits do not publish automatically.

inputs
publicationId, fileId
purge_trashed_notepermanent

Permanently delete an eligible trashed note using the exact confirmation phrase.

inputs
id, confirmation
render-artifactwrite

Render a source note into a validated static artifact and deployment handoff.

inputs
fileId, format, design
resolve-fileread / optional write

Resolve 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_notewrite

Restore a trashed note to the normal workspace.

inputs
id
run_aclueAI action

Re-reason over the workspace, updating brain state and possibly creating unreviewed drafts.

inputs
confirmation
search-skillsread

Search private txt skills and the federated skills.sh catalog as untrusted discovery metadata.

inputs
query, owner, view, limit
set-publication-subscriptionwrite

Subscribe or unsubscribe the signed-in dots.id user from a publication.

inputs
slug, active
share-filewrite

Create a short-lived external download link for a dots-backed file.

inputs
id, expiresIn
shorten-dropbox-linkwrite

Create a short txt preview or gallery link from a public Dropbox share URL.

inputs
url
start-agent-onboardingagent action

Complete phone-agent onboarding or return the required secure checkout link.

inputs
none
switch-identitywrite

Switch the active dots.id user for only this MCP or phone connection.

inputs
target
trash_notewrite

Move a note to reversible trash for the retention period.

inputs
id
update-filewrite

Change 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-skillwrite

Save an inert private package snapshot under .viewed-skills for review without installing it.

inputs
id
scaffold-codewrite

Use 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-storagewrite

Inspect 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-schemawrite

Save 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-serverwrite

Create 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-serverwrite

Read 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-draftwrite

Read 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-siteread

Read-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-groupwrite

Owner-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-accesswrite

Owner-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-releasewrite

Publish 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-releaseread

Read 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-sitewrite

Freeze 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-sitewrite

Create 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-siteread

Read 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-directorywrite

Create 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-recordwrite

Create 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-contentwrite

Delete 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-sitewrite

Freeze 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-sitewrite

Stop 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
gfxwrite

Generate 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-musicwrite

Resolve 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"
    }
  }
}