Skip to content
Writ logo

Writ MCP server

Which servers in the official MCP registry are Writ's own, whether they answer, and what they offer. A program checked each of these, nobody copied them from a product page.

read 2026-10-20

← Back to Writ

Whose server it is
  • Registry nameapp.usewrit/writ-cloudverified in the MCP registry

The registry name sits under usewrit.app. The registry only lets a publisher use that namespace after proving control of the domain through DNS or HTTP.

When we asked itchecked 2026-10-20
  • Stateanswerschecked 2026-10-20
  • Tools41
  • Server calls itselfWrit Cloud
  • Server version1.0.0
  • Protocol version2025-06-18

On 2026-10-20 the server answered initialize and tools/list without a sign-in. First answer in 343 ms.

Should an agent connect itConnect it, with care
  • Its tools do every use case we checked: crawl a whole site into one dataset; monitor a page and alert on changes.

Once connected

  • For "crawl a whole site into one dataset", the likely first call is writ_crawl_site.
  • For "monitor a page and alert on changes", the likely first call is writ_create_monitor.
  • writ_update_workflow, writ_create_http_extraction, writ_set_schedule, writ_update_saved_crawl, writ_create_automation change data without a sign-in: anyone with the address can call them.
  • Parameters are untyped or undescribed in 36 of 41 tools: check arguments before calling.

Said by rules from the measurements above. The likely first call is a model's pick from the tool list; read its description before relying on it.

Measured dailydaily checks: 7, the first on 2026-10-20
  • INITE MCP score67 of 100answers 100 · does the job 100 · definitions 85 · context 71 · use 29 · lowered by the warning signs below
  • What an agent can do with it2 of 2 use cases
  • Use28 npm downloads a week1 GitHub stars
  • Answered100% of days7 of 7 daily checks
  • Median first answer351 ms
  • Space in an agent's context≈ 8,854 tokensthe definitions of all its tools (41), which an agent carries on every turn
  • Tool definitionsB · 85 of 100
  • Typed results0 of 41 toolsdeclared outputSchema: results come typed, read once
  • Parameters without a description: in 36 of 41

What an agent can do with it

  • can do · crawl a whole site into one dataset
  • can do · monitor a page and alert on changes
  • not sure · automate logins to legacy internal systems

Each of the product's use cases, put to Jev against this server's tool list: can an agent do it with these tools?

Worth a look

  • Tools that change data, on a server that answers without a sign-in: writ_update_workflow, writ_create_http_extraction, writ_set_schedule, writ_update_saved_crawl, writ_create_automation

A program checks the server once a day: initialize and tools/list, no model. Tokens are the definitions' length at about four characters a token. The grade averages six checks of every tool's name, description, schema and annotations; it says how well the tools are described, not whether they work. The score weighs what was measured and nothing else: answering (30%), doing the product's job (25%), definitions (20%), context (10%) and use (15%). A part that was not measured is left out, and a hidden instruction caps the score at 40. The state of vendors' MCP servers: method and numbers →

Tools it offers41 tools · read 2026-10-20
  • writ_browser_use

    A REAL CLOUD BROWSER FOR A TASK ON A SITE: the user's signed-in account (a persona_id from writ_personas: the password stays sealed in Writ, and sessions never ask for a password), a click, form, submit or search inside an app, or a page…

  • writ_record_website

    Records a repeatable task on a site as a workflow (goal + start url): the same session as writ_browser_use, labelled with its goal, driven with writ_browser_act and saved with writ_browser_save. A goal that asks for an API opens as a…

  • writ_website_to_api

    TURNS A WEBSITE INTO A CALLABLE API (named functions with inputs, returning JSON), built by the caller in a real browser. url = the page that already shows the rows (search results or a listing, not the home page); goal = the inputs and…

  • writ_discovery_status

    Status of a writ_website_to_api build. wait=true is one held call (up to 75 s) that follows the build to its newest rung and returns when it is done or parked. Answers: succeeded (workflow_id, functions, run_example), failed, cancelled…

  • writ_browser_act

    Runs one batch of actions on an open session and returns the fresh page. Each action is an object, e.g. {"action":"click","selector":"#go"}. DRIVE: navigate, click, fill, type_text, select, check, hover, submit, press_key, scroll, back…

  • writ_browser_context

    Re-reads an open session: section=page (url, fields, buttons, cleaned DOM), lists (the page's repeating rows with a live-tested define_function payload for writ_browser_compose), map (the evidence of the build the session is bound to).

  • writ_browser_network

    Searches (operation=search, query, method) or reads in full (operation=detail, index) the backend requests the page made after capture_network: the site's real API. writ_browser_act api_call probes one with other values (a `flow`: several…

  • writ_browser_compose

    Authors the workflow in an open session beyond a recording: named API functions (define_function with a `flow` (preferred in an API build), from a captured call's index, or a lists payload; live-tested as defined; compile_function for an…

  • writ_browser_save

    Saves the open session as a replayable workflow and closes the browser, in the place its browser ran: the user's desktop library or Writ Cloud. Composed functions become callable API functions, declared inputs become its parameters. The…

  • writ_browser_ask_user

    Hands an open session to the Writ user: kind='captcha' (they complete a security check in the live browser), 'twofa' (they supply the one-time code and Writ types it; the code never reaches this conversation), 'sign_in' (they sign in on…

  • writ_browser_cancel

    Closes an open browser session (an open cloud browser bills until it is closed). Unsaved work that did more than visit pages is auto-saved first and the reply names it; discard=true keeps nothing.

  • writ_browser_sessions

    Lists the account's open cloud browser sessions (each resumable by its session_id).

  • writ_personas

    The user's own accounts on websites (personas): how Writ signs in as them. No password passes through this tool or the conversation, and its answers never ask for one: credentials are typed only into a Writ window. action='list'…

  • writ_payment

    Pays on a site with one of the user's cards; card numbers never reach this conversation. request (site, max_amount, purpose) returns a tell_user and an open_url where the user approves; wait (grant_id or confirmation_id); checkout pauses…

  • writ_devices

    The user's linked Writ desktops: list, use (scope this connection to one: runs, browsers, personas and monitors then target it), clear, monitors, datasets.

  • writ_list_workflows

    Lists the workflows saved in the Writ account; each runs on demand without live browsing. Returns id, name, declared inputs, schedule, and whether it is pinned as its own run_<name> tool.

  • writ_run_workflow

    Runs a saved workflow by workflow_id or name and returns its extracted data (it waits by default). Inputs go as top-level fields or under `inputs`; function_name runs one function of a multi-function API (with the sign-in it needs)…

  • writ_update_workflow

    Inspects or edits a saved workflow: an outline, one function's source, targeted function or step edits, a settings patch. copy_to keeps a linked copy on Writ Cloud or the user's desktop. Every option: writ_help('writ_update_workflow').

  • writ_create_http_extraction

    Drafts or revises a multi-request browserless HTTP extraction (loops, GraphQL, cursor pagination) from captured requests and a plain-language goal. Every option: writ_help('writ_create_http_extraction').

  • writ_diagnose_http_workflow

    Explains why a saved workflow's run returned nothing or failed: HTTP-lane readiness and, with task_id, the run's requests and responses.

  • writ_pin_workflow_tool

    Pins (or unpins) a saved workflow as its own run_<name> tool on this server.

  • writ_workflow_data

    Reads a saved workflow's collected data as a table: q filters, run_id picks one run, refs returns full records.

  • writ_search_data

    Searches everything the account's workflows already collected for a term, without running anything.

  • writ_export_data

    Exports a workflow's full data table as CSV or JSON.

  • writ_workflow_runs

    Run history (status, timing, errors, venue) of one workflow or all of them.

  • writ_set_schedule

    Schedules a saved workflow: every_minutes, or kind='daily'/'weekly' with time (HH:MM) and days. functions + inputs schedule chosen functions of a multi-function API.

  • writ_expose_workflow_api

    Publishes a saved workflow as a REST endpoint (a POST URL that waits and returns its JSON). Repeated calls reuse it.

  • writ_crawl_site

    COLLECTS a site or a section into a queryable, change-tracked dataset (one row per page). Scope: intent (a section, in plain words), rank_cap=N (the top N items of a listing), seed_urls (known pages), or the whole site capped by…

  • writ_saved_crawls

    Lists the crawls saved for re-running, with their scope.

  • writ_update_saved_crawl

    Inspects or changes a saved crawl's settings in place.

  • writ_run_saved_crawl

    Runs a saved crawl; max_age returns its recent data at no cost instead of re-crawling.

  • writ_saved_crawl_data

    Reads the data a saved crawl collected on its last completed run, without crawling.

  • writ_scrape

    READ PAGES NOW, no browser session: one page (url), up to 20 pages in parallel (urls), or a listing plus its top N item pages (url + top_n). Returns clean markdown in 2-10 s, including pages a plain fetch cannot read: rendered by…

  • writ_crawl_status

    Status of a crawl by crawl_id; wait=true holds up to 75 s and returns the collected rows when it converges.

  • writ_crawl_files

    The original files (PDFs, office documents, images, CSVs) a crawl captured, with short-lived download URLs.

  • writ_create_automation

    Creates an automation: on an event (a workflow or crawl completed, a monitor change, a webhook, a schedule) it runs a workflow, sends a notification templated over the event's data, and/or wakes an AI agent. Event, template and webhook…

  • writ_list_webhooks

    The account's inbound webhook URLs and the automations they fire.

  • writ_create_monitor

    WATCHES a page for changes: Writ checks it on a schedule and fires change_detected when the page, a CSS selector's text, a value read by `extract`, or a visual zone changes. Returns the monitor_id that writ_wire_monitor connects to an…

  • writ_wire_monitor

    Connects a monitor's change_detected event to an action: action='notify' (channels and recipients the account has configured), 'workflow' (runs a saved workflow), or 'ai_task' (an AI agent opens the page and works `prompt`). A price watch…

  • writ_help

    The full reference of any Writ tool (every parameter and its rules) and the complete guide. topic = a tool name (e.g. 'writ_browser_compose', a 'run_<workflow>' tool), 'guide' for the manual (recurring digests, HTTP flow building, buying…

  • writ_browser_live_view

    The live browser card's own access: the card ChatGPT and Claude show under writ_browser_use and writ_record_website calls it to read the session's state and get one-time passes for the session's screencast and its take-over channel. The…

How to connect

Add the server to your MCP client config. Claude Desktop, Cursor and most other clients read this shape:

{
  "mcpServers": {
    "writ-cloud": {
      "type": "http",
      "url": "https://api.usewrit.app/mcp"
    }
  }
}

Add it

Claude Code, in a terminal

claude mcp add --transport http usewrit https://api.usewrit.app/mcp

Add to CursorAdd to VS Code

claude.ai, ChatGPT and other clients: add https://api.usewrit.app/mcp as a custom connector in the settings.

Also shipped through: npm

Each line is something a program found when it went looking: the registry entry, the server's own answer, a spec that parses. A missing line means we did not find it, not that it does not exist.