Ratiflow

Tagline
Capability grants for page agents: the human chooses access → WebMCP registers only that catalog → every edit lands as reversible, attributed proof.

Try it out


Inspiration

Incident reports and launch docs already mix people and AI. The finished paragraph usually survives. The request, tools, sources, authorship, and rationale usually do not. The next teammate sees prose—not why it changed. Another agent often repeats the same work.

Most “AI in docs” products add chat beside a document. Ratiflow answers a different WebMCP question: what is this agent allowed to do on this page, right now?

The human chooses an access profile for the assignment. The live page registers only that tool catalog. The agent works inside that grant. The document records an immutable revision with prompt, sources, authorship, and diff.

WebMCP fits because the website—not a side chat—owns the capability surface for the current task.

What it does

Ratiflow is a shared Markdown workspace focused on two high-stakes templates: an incident postmortem and a product launch decision.

  1. Select a passage
  2. Assign @Code, @Data, or @General (expertise label)
  3. Separately choose assignment access: Repository, Metrics, or Editorial
  4. Ratiflow maps that choice to a capability grant and registers the matching WebMCP catalog
  5. The agent updates only the selection; Flight Recorder + History keep the proof

Product rule: bot name is not permission. The same @Code identity gets different tools when access switches from Repository → Editorial. During a managed run, the page withdraws the idle BYO-agent catalog and restores it after.

Demo sources are deterministic fixtures so judges can replay the same path. Server authority (range, lease, revision, evidence) is the security boundary; the visible catalog only guides the agent.

90-second demo

  1. Open completed INC-482 postmortem doc at the live URL
  2. Assign @Code + Repository scoped edit
  3. Watch Flight Recorder: catalog → tool calls → commit
  4. Keep @Code, switch to Editorial scoped edit → different catalog
  5. Open History → inspect diff / Restore

How we built it

Next.js · React · TypeScript · Supabase/Postgres · Vercel

  • Dynamic document.modelContext registration with generation-scoped catalogs
  • Two mutually exclusive surfaces: idle BYO-agent tools vs managed-assignment tools
  • Application-owned Luna ↔ WebMCP relay (Responses API tool search → browser getTools / executeTool); credentials stay server-side
  • Server enforcement of identity, access, document range, and source revision
  • Full Markdown snapshots with digests, diffs, and Restore

Challenges we ran into

Connecting a server-side model to live browser WebMCP tools (discovery, execute, cancel, retry, stale descriptors). WebMCP has no pub/sub, so mentions wake the open page; long unattended runs are out of scope by design. Catalog visibility is guidance only—permissions are enforced on the server.

Accomplishments that we’re proud of

  • Live, judge-runnable WebMCP workspace with coach + Flight Recorder
  • Capability grants as product: same agent identity, different access → different registered tool catalog
  • Application-owned Luna↔WebMCP relay with fail-closed stale-tool handling
  • Immutable revisions with prompt, sources, authorship, diff, and Restore
  • Narrow scope: two document types, deterministic fixtures, reproducible demo
  • Open-sourced under MIT

What we learned

WebMCP is not “MCP in the browser” and not a fixed API. The valuable unit is a live, task-scoped tool surface. Designing the handoff—human chooses grant → page registers tools → agent acts → human reviews proof—mattered more than adding more tools. Treat the catalog as UX and the server as authority.

What’s next for Ratiflow

Polish editor UX, add ChatGPT in-app browser smoke notes for judges, and expand fixture-backed evals around catalog switching and stale-tool rejection. Stay narrow: capability grants + reversible proof for high-stakes docs—not a general collab suite.

Built With

Share this project:

Updates

Submission history