Connect your AI agent to Anchor.
One URL. OAuth sign-in. Works with every MCP-compatible agent.
Skip the reading
Give this link to your AI and ask it what you need — it'll read this page and figure out the answer.
What is MCP?
The Model Context Protocol (MCP) is the open standard for AI agent tool use — think "USB-C for AI." It defines how an agent discovers and calls tools on a remote server. Any MCP-compatible agent can talk to any MCP server without custom integrations.
The Anchor MCP server exposes tools covering every action your agent can take in Anchor: design and query tables, write and upload files, organize folders, and build fully working apps. Anchor hosts the files and apps as live, shareable web pages you can open, read, and collaborate on right in the browser, with permissions and versioning handled for you.
One connection, every agent. No vendor lock-in. No webhooks. No custom integration code.
Supported agents
Anchor works with every MCP-compatible agent. The setup is the same everywhere: paste one URL, sign in, and you're connected. The whole thing takes less than a minute.
We have step-by-step walkthroughs for Claude, Claude Desktop, Claude Code, ChatGPT, Codex, Codex Desktop, Gemini CLI, Open WebUI, and OpenCode — with more agents added regularly.
View all supported agents and setup instructions
Any other MCP-compatible client also works — the server follows the Model Context Protocol spec exactly.
Tool reference
The
Anchor MCP server exposes the tools below, grouped by capability. Agents discover the same list at
runtime via tools/list.
| Tool | What it does |
|---|---|
| Navigation & discovery | |
ls |
The
workhorse of navigation. Call it with no arguments for a recursive, breadth-first map of every org
you belong to plus everything shared with you — or pass an org_id, folder_id, or file_id to scope in. Apps, documents
and presentations show up in the map alongside tables and files, and you can resolve an app
directly from its serving URL. Point it at one file and it also lists what that file is made of —
an app's source filenames, or a document's pages and assets.
Returns an indented text map bounded by number_of_items, with per-folder
item counts that show when there's more to drill into. |
| Files | |
write_file |
Create or
edit one or more files (HTML, Markdown, JSON, CSV, XML/YAML, source code, etc.) in a
single batched call — up to 100 entries, applied in order with per-item results. HTML and Markdown
render as live, human-viewable pages at a shareable link, so what your agent writes becomes a
durable page people can open and read. Supports new-file creation, surgical edits (oldString / newString, optional replaceAll), and full rewrites.
When your agent is assembling an app's source files, Anchor
checks the app's configuration and code as each file is written and flags any
problem in the same reply, rather than leaving it to surface later when the app
is built. HTML is the preferred format for documents and slides — Markdown is for source-style content where
structure matters more than layout. Pair write_file with
upload_file_presigned_url to
write any file type, binary and text alike: upload the bytes directly, then finalize with presigned_url instead of text_content. Tables have their
own tools — use query_table for those. |
read_file |
Read a
file's textable content. Text-like formats (HTML, Markdown, JSON, CSV/TSV, XML/YAML, plain text,
source code) are returned as raw bytes — byte-for-byte identical to what write_file would round-trip, so
surgical edits match exactly. Binary document formats (PDF, DOC/DOCX, PPT/PPTX, XLS/XLSX, RTF) are
returned as extracted plain text. Supports line-range reads for large files. For tables use describe_table or query_table. |
download_file_presigned_url
|
Get a short-lived link the agent fetches itself to download a file's raw bytes, so no content passes through the conversation. The preferred way to pull any file out of Anchor, including html and md, whenever the agent can reach the link. Expires in 15 minutes. |
upload_file_presigned_url
|
Get a
short-lived link the agent uploads raw bytes to itself, so no content passes through the
conversation. The preferred way to get any file into Anchor, text or binary, whenever the agent
can reach the link; agents confirm that with a tiny test upload before generating anything large.
Takes the folder the file will live in, and the link only works for that folder. Expires in 2
hours; the upload becomes a file with a follow-up write_file call, one file per
link. |
rm_file |
Permanently delete a file you own — a table (its data is dropped), an OTHER file (its content is
removed), an app (every version's source and build output is removed), or a document or
presentation (every version's files and everything rendered from them). Immediate and
irreversible. |
| Apps | |
build_app |
Build a
live, shareable app from source your agent writes into a scratch folder — an index.tsx, a favicon, and
optionally the SQL functions and table/file dependencies it needs. Anchor compiles the app and
checks that every table or file it touches is declared up front, then publishes it. Building
never hands out access on anyone's behalf — if the app touches tables or files, each person
who wants to use it separately reviews and approves what it's allowed to touch. |
unpack_file |
Pull an
existing app, document or presentation back out as files — to read how it works, or as the
starting point for saving a new version, or, for an app, for forking a fresh one with build_app. Anyone who can view
the file can unpack it; saving a new version still needs edit access, and an app's viewers get
its published version. |
commit_document |
Turn a folder of pages into an Anchor document — a multi-page, shareable document with its own version history. Write the pages, then commit them. A document can also read one of your tables, so its figures are the live ones every time somebody opens it. |
commit_presentation |
The same for a slide deck — one file per slide, laid out against a fixed canvas rather than reflowing. |
| Tables | |
create_table |
Create a new table with typed columns (STRING, NUMBER, INTEGER, BOOLEAN, ENUM, DATE, DATETIME, EMAIL, CREATED_BY_EMAIL), uniqueness and required constraints, default values, and optional foreign keys with CASCADE / SET_NULL behavior. Each Anchor table maps directly to a PostgreSQL table. |
describe_table |
Return a
table's full column schema, row count, and create/update timestamps. Does not return row data —
use query_table for that.
|
query_table |
Execute a
SQL statement (SELECT / INSERT / UPDATE / DELETE) against Anchor tables. Schema/DDL statements
(CREATE, ALTER, DROP, TRUNCATE) are rejected — use create_table, add_table_column, and delete_table_column for schema
changes. Joins across tables in the same org are allowed. |
add_table_column |
Add a new
column to an existing table. Same column schema as create_table. Required columns
must include a default value so existing rows can be backfilled; unique columns cannot be required
and cannot have a default. |
delete_table_column |
Permanently delete a column and all its data — immediate and irreversible. The record_id primary key cannot be
deleted. |
| Folders & organization | |
mkdir |
Create a
new folder at the org root (pass org_id) or inside an existing
folder (pass folder_id).
Requires write permission at the parent location. Returns the new folder's id and a link to view
it in the Anchor UI. Can also create a private scratch folder for staging an app's source code
before build_app. |
mv |
Move or
rename a file or folder within the same org — pass a destination, a new_name, or both. Files cannot
live at the org root; folder cycles and over-deep nesting are rejected. Moving re-anchors
inherited access roles to the destination's ancestor chain. |
cp |
Copy a file into a folder (same org only). Tables
get a fresh duplicate of schema and data; OTHER files clone their content;
apps are duplicated with their full version history and get a fresh link (copying an app requires
contributor access to it). Documents and presentations copy their latest version only, which
becomes version 1 of the copy — earlier versions are drafts rather than a history worth keeping,
and the tables the document reads are declared again so the copy asks for the same consent. The
copy gets a new ID and the caller becomes the owner — no existing
access roles are carried over. |
Authentication & security
Anchor's MCP server uses OAuth 2.0 with PKCE — the same flow Claude, ChatGPT, and other MCP clients already speak natively. No client secrets, no static API keys, no copy-paste tokens.
| Discovery | On first
request, your agent fetches /.well-known/oauth-protected-resource
and /.well-known/oauth-authorization-server
from mcp.anchor.cc
to learn where to authorize. |
| Dynamic client registration | Your
agent registers itself via POST /oauth/register.
No pre-provisioning required. |
| User sign-in | The authorization endpoint redirects to Google SSO. You sign in with the same Google account you use for anchor.cc. |
| Tokens | Access tokens are short-lived JWTs. Refresh tokens rotate on use. Revoke access anytime from your Anchor account settings. |
| Authorization | Every tool call runs as you. Your agent can only see and modify content you have access to — the same permission model used in the UI. |
The server implements the Model Context Protocol OAuth flow as specified by modelcontextprotocol.io — any MCP client that follows the spec will authenticate correctly.
Usage & limits
Each MCP tool call counts against your organization's monthly usage quota. Free organizations start with a generous allowance; paid plans raise the ceiling. See pricing for the full breakdown.
Large reads — such as
read_file
on long PDFs or query_table
on wide tables — count as a single unit regardless of size. Rate limits apply per-token to keep runaway
agents from exhausting your quota.
FAQ
Which MCP transport does Anchor support?
Streamable HTTP — the recommended transport for remote MCP servers. Any MCP client that speaks
Streamable HTTP over OAuth 2.0 works out of the box. Local stdio
transports are not required or supported.
Do I need an API key?
No. Anchor issues OAuth access tokens transparently when you connect your agent. There is no API key to generate, store, or rotate.
Can one agent connection access multiple orgs?
Yes. You authorize once; the agent sees every organization your account belongs to. Call ls
with no arguments to map them all at once, then pass an org_id
to navigate into a specific one.
Can I self-host the MCP server?
Enterprise customers can run Anchor — including the MCP server — under their own domain or inside a managed VPC. Contact us for details.
Where is the full tool spec?
Every tool's input and output schema is served by the MCP server itself — connect your agent and
call tools/list
to retrieve it. The Tool
reference above is the same list in human-readable form.