MCP tools
Sixteen meta-tools cover every app — no per-doc tools, ever.
Rowly stays well under the 40-tool Cursor cap by exposing generic tools that accept a
doc name as a parameter. The MCP tool names themselves keep the legacy doc
spelling so existing AI agents keep working unchanged. Discovery tools let the AI
introspect the schema before constructing payloads, so it can self-correct instead of
hallucinating fields.
App management
Create, list, and archive named workspaces.
- •list_apps — List apps the caller can access. [read-only]
- •create_app — Create a new named workspace.
- •get_app — Fetch one app with its member list. [read-only]
- •archive_app — Two-step destructive archive with confirm_token. [destructive]
Membership
Invite, list, promote, and remove members inside an app.
- •list_members — List members + roles for the app. [read-only]
- •invite_member — Send an email invite with a role.
- •update_member_role — Change a member's role.
- •remove_member — Two-step removal with confirm_token. [destructive]
Discovery
Introspect docs so AI can self-correct payloads.
- •list_docs — List docs in the current app. [read-only]
- •get_doc_schema — Fetch the compiled schema + meta for a doc. [read-only]
- •list_workflows — List workflows attached to a doc. [read-only]
CRUD
Generic create / read / query / update / delete against any doc — not per-doc tools.
- •create_record — Create a record; supports idempotency_key.
- •get_record — Fetch one record by id. [read-only]
- •query_records — Cursor-paginated query with filters and response_format modes. [read-only]
- •update_record — Optimistic-lock update using version. [idempotent]
- •delete_record — Two-step destructive delete with confirm_token. [destructive]
Workflow + admin
Drive state transitions and define new docs.
- •run_workflow_action — Run a named action on a record, enforcing role + CEL condition.
- •define_doc — Create / update a doc schema. dry_run defaults to true in production. [destructive]
Tool annotations
Hints the server sets so MCP clients can render safer UX.
-
•
openWorldHint: falseon every tool — Rowly is a closed D1 world, not a web fetcher. -
•
readOnlyHint: trueon all list_*, get_*, plus search + fetch. -
•
destructiveHint: trueon delete_record, archive_app, and other two-step mutations. -
•
idempotentHint: trueon update_record.