MCP-native · agent-writable Neutral across Claude Code, Cursor, Windsurf & Codex

The system-of-record your AI agents write to.

Grounded, defensible, and shared across every project. Your agents log what they built and why — with sources you can defend to a client weeks later. Built for operators running real work with AI, not demos.

No credit card 50+ MCP tools Old versions kept forever
app.ctlsurf.com / acme-q2-migration
As of Jun 3, 2026 · 14:08 UTC

Provenance ledger

09:14May 28
claude-code measured invoice totals against source ledger.
1,284 / 1,284 rows a3f91c2
11:02May 30
Filed client call — Acme finance flagged the $48,210.00 figure.
call-notes/may30.md
14:08Jun 3
cursor traced figure to a rounding rule, reconciled.
Δ −$0.04 7d20be1
14:11Jun 3
Drafted reply to Acme citing the corrected figure & commit.
Works with every MCP client
Claude Code Cursor Windsurf VS Code Codex Any MCP client
See it in action

Three weeks later, someone questions a number — and a new agent traces it back to the source.

You finish the work and move on. Weeks pass and the context is gone — then a teammate or client asks, “wait, where did this number come from?” Instead of digging through old chats, a fresh agent opens the project, reads the record, and traces that exact figure to its source: the commit, the data, and the decision behind it. No re-explaining, no archaeology.

Acme finance — Slack thread
Priya · Acme Finance · today 09:51
“Hey — our books say the Q2 invoice total is $48,210.00 but the report shows $48,209.96. That four-cent gap is going to come up in the audit. Can you tell me exactly where it comes from?”
The kind of question that sinks undocumented work.

Weeks later, the number is challenged. Without a record, this is a scramble. With ctlsurf, it's a lookup.

Why this matters now

Agents ship work you can't defend later

The artifacts that should hold the truth either don't hold it, or are gone by next week.

CLAUDE.md is read-only

Your instructions go in; nothing comes back out. The agent can't record what it actually measured, decided, or chose to skip.

write_back("what I did") → not supported

Chats evaporate

The reasoning, the denominators, the “as-of” context — it lived in a chat window that's now closed. Next session starts from zero.

conversation_2026-05-28.json → deleted

PR diffs hide the truth

A diff shows what changed in code — never what was assumed, what was tried and failed, or what got quietly simplified to ship.

git diff → no assumptions, no skips

“Memory” is given away free

Vendor memory recalls vibes from past chats. Notion deliberately cripples agent writes. Neither gives you a dated, sourced record you can defend.

source_of(value) → unknown
How the record works

Read → work → write it down, grounded

One loop, agent-agnostic, over MCP. The record is a first-class part of the workflow, not an afterthought.

STEP 01

The agent reads the record

On session start it pulls the project's pages, datastores, decisions, and prior corrections — instantly grounded in everything that came before.

STEP 02

It does the work

Builds, measures, migrates, reconciles — in your codebase with your tools. ctlsurf doesn't change how it works; it captures what it produces.

STEP 03

It writes it down, grounded

Findings with denominators, numbers with an as-of date and a source, decisions with rationale, commits with SHAs — appended to a record that's kept forever.

Provenance, made concrete

Every write carries its own evidence

This is what “defensible” looks like in the product — not a buzzword, a data model.

0
MCP tools to read & write
0
of writes carry a source
0
sources behind one number: call · decision · commit
edits kept — nothing silently overwritten
Dated audit logappend-only
As of Jun 3, 2026 · 14:11 UTC
migrateMay 28
Validated 1,284 / 1,284 rows against source.
denominator showna3f91c2
reconcileJun 3
Closed 4¢ variance via ADR-014.
Δ −$0.047d20be1
Before → after reconciliationpenny-exact
ItemBeforeAfter
Raw line items$48,210.00$48,210.00
Rounding adj. (ADR-014)$0.00−$0.04
Reconciled total$48,210.00$48,209.96
Structured task completionon the record
Migrate Q2 invoices to new schema
Summary

1,284 invoices migrated; total reconciled to $48,209.96 against the source ledger.

Assumptions

Banker's rounding applied per ADR-014; USD only.

Attempted but failed

Bulk Stripe update hit rate limits at 800 rows; fell back to 100-row batches.

Simplified / skipped

EU tax recompute deferred — out of scope this pass. The agent logged what it skipped, on the record.

Reopen anytime — the loop stays open.
Datastore · typed columnsqueryable
id intinvoice textamount moneystatus enum
1281ACME-0419$3,120.00 reconciled
1282ACME-0420$8,940.00 reconciled
1283ACME-0421$48,209.96in audit
query_rows(status = 'in audit') → 1 row
Why a notebook can't just bolt this on

The neutral record — by design

The combination is the moat: agent-writable, MCP-native, provenance on every write, neutral across vendors and content, scoped across all your projects and clients.

Agent-writable

Agents don't just read context — they author the record. Pages, datastores, decisions, completions, all written through MCP.

Incumbents like Notion deliberately cripple agent writes.
Vendor-neutral

Claude Code today, Cursor tomorrow, Codex next quarter — the same record. Switch agents without losing your history.

Single-vendor tools lock you in.
Provenance-native

Sources, denominators, and as-of dates aren't a feature you remember to add — they're part of every write, scoped per project and client.

Free “AI memory” has no audit trail.
Also for solo devs & small teams

The fastest way to give any coding agent a memory and a paper trail

You don't need client audits to feel this. Point your agent at ctlsurf and its work compounds across sessions instead of evaporating — next time it picks up exactly where it left off.

  • Persistent memory — decisions, gotchas, and TODOs survive between sessions and machines.
  • A real paper trail — what was tried, what failed, what got simplified, captured automatically.
  • One setup, every project — pages, tables, trees, diagrams, datastores, all in one place.
  • Two-minute install — add the MCP server and you're writing to the record on the next prompt.
.mcp.json
{
  "mcpServers": {
    "ctlsurf": {
      "type": "http",
      "url": "https://app.ctlsurf.com/mcp",
      "headers": {
        "Authorization": "Bearer $CTLSURF_KEY"
      }
    }
  }
}

Works the same in Claude Code, Cursor, Windsurf, VS Code & any MCP client.

Skills & playbooks

Turn a good run into a repeatable playbook

Encode a workflow once — inputs, ordered steps, and guardrails — then attach it to any task. Personal, project, or public; forkable from a shared marketplace.

Guardrails travel with the skill, so the same safety rules apply every time an agent runs it — and the run is recorded like everything else.

inputsordered stepsguardrailsforkablepersonal · project · public
Reconcile client invoicev1.2
Input · source ledger
required · file or datastore
Step 1 · measure totals with denominators
log rows checked / rows total
Step 2 · reconcile & commit with SHA
before → after, penny-exact
Guardrail · never DELETE without a backup
enforced on every run
scope: project Fork to your library
Privacy

Your data is yours.

Built for people running real work for real clients.

  • No one else can see your work. No other user — or their agents — can read or touch your projects.
  • Share one project, not your portfolio. Invite a client to a project and they see only that one — never your other engagements.
  • Encrypted in transit. Every connection is HTTPS, and you can delete a project — and its record — anytime.
  • Never used to train models. Your work, and your clients' data, are never used to train anything.
Pricing

Start free. Upgrade when it's load-bearing.

Every plan includes full MCP access and the complete tool set. No credit card to start.

Free

For individual developers
$0/month
 
  • 5 projects
  • 100 requests / min
  • 500 MB storage
  • 10 project skills
  • MCP access
Get Started
★ Most Popular

Pro

For power users and teams
$10/month
Introductory price
  • 20 projects
  • 100 requests / min
  • 10 GB storage
  • 100 project skills
  • Block version history
Start Free Trial

Super admins bypass all limits. Stripe is optional — the system works without it.

FAQ

The record, in plain terms

Every entry an agent writes is grounded. Findings carry their denominators (1,284 / 1,284 rows, not “most”), numbers carry an as-of date and a source — a commit SHA, a datastore row, or a client call — and old versions are kept forever. Weeks later, a new agent can trace any figure back to where it came from and stand behind it.
No. ctlsurf is MCP-native (Model Context Protocol, the open standard from Anthropic) and deliberately neutral. It works with Claude Code, Cursor, Windsurf, VS Code, Codex, and any MCP client through 50+ tools. Switch agents whenever you like — the record stays.
CLAUDE.md is read-only and chats evaporate. ctlsurf is agent-writable and persistent: the agent records what it built, measured, decided, and skipped — on the record — so the next session starts grounded instead of from zero. Work compounds instead of evaporating.
Pages and blocks (text, tables, trees, diagrams), datastores with typed columns and queries, structured task completions with reopen, skills and playbooks, activity logs, plus sharing and exports — all with provenance attached to every write.
Free ($0/mo) gives individual developers 5 projects, 100 req/min, 500 MB storage, 10 project skills, and full MCP access. Pro ($10/mo, introductory) is for power users and teams: 20 projects, 100 req/min, 10 GB storage, 100 project skills, and block version history.
Yes. Beyond client-grade provenance, ctlsurf is the fastest way to give any coding agent a memory and a paper trail. Set it up once and your agent's work compounds across sessions and machines instead of evaporating.
Get started

Give your agents a record
you can defend.

Two minutes to connect. The next prompt writes to a grounded, sourced, version-kept system-of-record — across every project.