MCP.Market

Writ Cloud MCP server

online · 100% uptime
by usewrit.app·app.usewrit/writ-cloud·v1.0.0·1 stars

Read, crawl and act on websites, signed in as the user, and turn any site into an API.

A87/100grade A
What users say
No reviews yet
Be the first
Safety scan
A87/100

full report

Adoption
Growing

1 stars220 downloads/wk

Reviews

Write one

Nobody has reviewed Writ Cloud yet.

If you have run it, two minutes of your experience saves the next person an afternoon.

Writ Cloud tools (40, 12 write)

write = sends, deletes, buys or posts
  • writ_browser_actwrite actionFree

    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, wait, wait_for. SEE: query_dom, find_text, read_text, count, get_attributes, inspect, list_candidates, get_dom, get_screenshot. NETWORK: capture_network, get_request, rotate_exit. CODE: evaluate_js, search_scripts, read_script. RECORD: extract {variable,script}, api_call, login_post, probe_write, confirm_write. 2FA: twofa {challenge_method}. A value written {{name}} with its real value in `inputs` becomes a workflow input. Each action's arguments: the session's start answer, or writ_help('writ_browser_act').

  • writ_browser_ask_userFree

    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), or 'question' (their text answer). Holds up to 60 s; answers answered, waiting_for_user (the same call again) or expired.

  • writ_browser_cancelwrite actionFree

    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_composeFree

    Authors the workflow in an open session beyond a recording: named API functions (define_function from a captured call's index or a lists payload, live-tested as defined; compile_function for an authenticated request), set_inputs, add_steps, test_function, remove_function, remove_step, list. Payload shapes: writ_help('writ_browser_compose').

  • writ_browser_contextFree

    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_networkFree

    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. An index feeds writ_browser_compose define_function from_index.

  • writ_browser_saveFree

    Saves the open session as a replayable workflow and closes the browser. Composed functions become callable API functions, declared inputs become its parameters. The answer carries the steps, the inputs and a run_example; the workflow runs at zero AI cost through writ_run_workflow. A save that references something no run could resolve is refused with the reasons, and the browser stays open.

  • writ_browser_sessionsFree

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

  • writ_browser_useFree

    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 a plain fetch cannot open (login wall, 403, CAPTCHA). Opens the browser and returns the first page; writ_browser_act drives it (Writ runs no model here). Recording is always on: writ_browser_save turns the session into a workflow that replays without a browser, writ_browser_cancel closes it (an open browser bills). The start answer carries the action vocabulary, the recording rules and, with a persona, the 2FA rules. NOT FOR: reading pages (writ_scrape) or building an API (writ_website_to_api).

  • writ_crawl_filesFree

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

  • writ_crawl_siteFree

    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 page_budget. Modes: markdown (default, no AI), extract_mode='schema' (uniform records), executor='ai' + extract_prompt (per-page understanding, 5x the page rate). A bounded crawl answers with its rows; an open one returns a crawl_id for writ_crawl_status wait=true. NOT FOR: reading a few pages now (writ_scrape). Every option: writ_help('writ_crawl_site').

  • writ_crawl_statusFree

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

  • writ_create_automationwrite actionFree

    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 options: writ_help('writ_create_automation').

  • writ_create_http_extractionwrite actionFree

    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_create_monitorwrite actionFree

    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 alert, a workflow or an AI task (a price watch takes a threshold there). Without `interval` the answer is needs_input: this plan's options and a tell_user for the user, nothing created. The page is read first: a sign-in answers needs_persona, a bot check offers use_residential.

  • writ_devicesFree

    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_diagnose_http_workflowFree

    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_discovery_statusFree

    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, or needs_guidance (the build is the caller's to finish with writ_website_to_api mode=guided build_id=<id>; its map comes with it).

  • writ_export_dataFree

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

  • writ_expose_workflow_apiwrite actionFree

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

  • writ_helpFree

    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 on a price, crawl and build modes), 'actions' / 'recording' / '2fa' for the browser rules, or empty for the list of topics.

  • writ_list_webhooksFree

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

  • writ_list_workflowsFree

    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_paymentwrite actionFree

    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 at the order button for the user's confirmation, then Writ places the order; fill; list (card handles only). Details: writ_help('writ_payment').

  • writ_personasFree

    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' domain=<site> shows the personas usable there; with none it answers persona_needed: a tell_user for the user, a create_url (a small Writ window with only the sign-in form, pre-filled for the site) and a link_id. action='wait' link_id=<id> is one held call that answers when the user saves it, with its persona_id. Also get, request (a link for another account), sign_in (refresh the session) and record_login. A persona_id works on writ_scrape, writ_crawl_site, writ_browser_use and writ_run_workflow; a desktop persona ('device:...') signs in on that desktop, from its own vault.

  • writ_pin_workflow_toolFree

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

  • writ_record_websiteFree

    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 goes to writ_website_to_api's build instead.

  • writ_run_saved_crawlwrite actionFree

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

  • writ_run_workflowwrite actionFree

    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). max_age reuses a recent result at no cost. A write function previews with mutation_mode='dry_run'. Runs sign in as the workflow's persona or persona_id; no password is ever passed. Venue, network, files and output shape: writ_help('writ_run_workflow').

  • writ_saved_crawl_dataFree

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

  • writ_saved_crawlsFree

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

  • writ_scrapeFree

    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 JavaScript (render_mode='browser'; a read that only got the page's shell says so and gives the retry), behind a bot wall or 403 (an automatic residential retry), or behind the user's sign-in (persona_id). Discussion threads keep their comments. format='html' returns the raw HTML for selectors. NOT FOR: a site-wide dataset (writ_crawl_site) or clicking and typing (writ_browser_use).

  • writ_search_dataFree

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

  • writ_set_scheduleFree

    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_update_saved_crawlwrite actionFree

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

  • writ_update_workflowwrite actionFree

    Inspects or edits a saved workflow: an outline, one function's source, targeted function or step edits, a settings patch. Every option: writ_help('writ_update_workflow').

  • writ_website_to_apiFree

    TURNS A WEBSITE INTO A CALLABLE API (named functions with inputs, returning JSON) for a service with no practical official API. 3 calls: (1) this tool with url = the page that already shows the rows (a search-results or listing URL, not the home page) and goal = the inputs and fields wanted; (2) writ_discovery_status(build_id, wait=true); (3) on success, its run_example (writ_run_workflow with function_name). Writ builds it itself (an AI fast path in a real browser, each function live-tested) and first proposes the user's matching saved workflows and marketplace APIs (skip_existing / skip_marketplace build fresh). A sign-in wall answers persona_needed. NOT FOR: reading content (writ_scrape) or a one-off task (writ_browser_use). Modes and the guided build: writ_help('writ_website_to_api').

  • writ_wire_monitorFree

    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 takes `threshold` (+ threshold_op): the action then runs once, when a check reads a price at or below it. Buying at a price (`buy`): writ_help('writ_wire_monitor').

  • writ_workflow_dataFree

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

  • writ_workflow_runswrite actionFree

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

Public scan report

scanner v0.1.10 · 2026-10-13 · same rubric, same numbers if you re-run it

1 high
  • Code scan2 source files scanned25/25
  • Live reliabilityremote reachable in 544ms20/20
  • Tool poisoning40 tool descriptions checked15/15
  • Auth qualityopen endpoint exposes 12 write-action tools with no auth3/15
  • Maintenancelast push 3 days ago15/15
  • Maintainer identityregistry namespace matches repository owner; website matches verified namespace9/10

Findings (1)

  • highWrite-action tools reachable without authenticationauth.open-write
Overall 87/100. Components that don't apply are left out of the denominator. Any critical finding is an F.RubricAppeal a findingJSON

How Writ Cloud compares

Against every graded Scraping and browsing MCP server, from our own scans and uptime checks. Updated after each scan run.

Safety score
87/100
higher than 68% of 807 Scraping and browsing servers
Tools
40
the typical Scraping and browsing server has 7
Tools that change things
30%
typical: 0%. Fewer write tools means less an agent can break
Uptime
100%
of our recent checks; the typical remote Scraping and browsing server answers 100%
Response time
750 ms
faster than 13% of 343 Scraping and browsing servers
GitHub stars
1
more than 50% of 553 Scraping and browsing servers
Downloads a week
220
more than 73% of 295 Scraping and browsing servers with a package

What its tools let an agent do: 28 read · 12 change

Install Writ Cloud in Claude Code, Cursor or VS Code

claude mcp add --transport http writ-cloud https://api.usewrit.app/mcp
Add to Cursor

What the publisher says

From the Writ Cloud repository's README, as published. We do not edit it. Read it on GitHub

Your saved browser workflows, as tools your assistant can call.

Quick start · Tools · Configuration · Security · Troubleshooting · Contributing

writ-mcp connects a stdio MCP client — Claude Code, Claude Desktop, Cursor, Windsurf, Codex — to Writ, so the browser workflows you already recorded become tools your assistant can call: run them, read the data they collected, search past results, schedule them, expose them as REST endpoints, and kick off site crawls.

It is a transparent stdio↔HTTP proxy and nothing else. Every tool, schema and rule lives server-side, so what you get always matches what your instance can do — and a new tool never requires upgrading this package. Zero dependencies, one file, Node core only.

Clients that speak Streamable HTTP natively don't need this at all — point them

straight at the /mcp endpoint with an Authorization: Bearer header.

Quick start

1. Get an API key. In the Writ app: Settings → Developers → API keys. Keys look like wt_….

2. Add the server.

Against a self-hosted coordinator:

claude mcp add writ-selfhost -e WRIT_API_KEY=<YOUR_API_KEY> -- npx -y writ-mcp --url https://writ.example.com

Against a coordinator on this machine:

claude mcp add writ-selfhost -e WRIT_API_KEY=<YOUR_API_KEY> -- npx -y writ-mcp --url http://localhost:8000

Against a published per-workflow endpoint (an "Expose as MCP" slug URL is used verbatim — no path rewriting):

claude mcp add my-tools -e WRIT_API_KEY=<YOUR_API_KEY> -- npx -y writ-mcp --url https://mcp.example.com/mcp/my-tools

3. Check it.

claude mcp list

Writ Cloud is the default target when you pass no --url

(https://api.usewrit.app). Pass --url to point the connector at your own

coordinator instead. See Status.

Pass the key through the environment, not the command line. --api-key

works, but it puts your key in the process's argument list where any local

process can read it via ps, and your shell records it in history. The

connector prints a note when you use it.

Your running coordinator also hands out these one-liners, pre-filled, on its Connect page and at GET /api/mcp/connect-info:

Shortened. The full README is on GitHub.

Nothing above is checked by us. What we check is on the safety report.

Writ Cloud: common questions

Is Writ Cloud MCP server safe?
Yes, by our scan: it is graded A (87/100). Read the Writ Cloud safety report
How do I install Writ Cloud?
It runs remotely at api.usewrit.app. Add it to Claude Code, Cursor, VS Code or Claude Desktop with the snippets above, or call it through the mcp.market gateway without installing anything.
Does Writ Cloud need an API key?
Yes. The registry entry asks for WRIT_API_KEY.
Is Writ Cloud maintained?
The last commit was 15 days ago (2026-10-10). The latest release is v1.0.0.
Is Writ Cloud up?
100% of our last 28 checks got an answer. We check remote servers about four times a day.
What can I use instead of Writ Cloud?
Servers from other publishers that do the same job: Unbrowse MCP server, Auth Your Agent MCP server and Svipall MCP server. Compare all Writ Cloud alternatives.
How does Writ Cloud compare with other Scraping and browsing MCP servers?
safety score 87/100 (higher than 68% of 807 Scraping and browsing servers); tools 40 (the typical Scraping and browsing server has 7); tools that change things 30% (typical: 0%. Fewer write tools means less an agent can break). Full comparison.

Alternatives to Writ Cloud

Same job from other publishers: the closest match first, then the best rated.

All Writ Cloud alternatives →
  • Unbrowse
    Websites as APIs: read pages, run site tasks via learned APIs, cloud browser with saved logins.
    A
  • Auth Your Agent
    Act for a person on websites: sandboxed browser, phone approvals, saved logins, scheduled plans.
    A
  • Svipall
    Read any page past its anti-bot wall, crawl sites, search without an API key, solve captchas locally
    C
  • Crawlberg
    Scrape, crawl, and map websites to Markdown or JSON via local CLI.
    A
  • Kreuzcrawl
    Scrape, crawl, and map websites to Markdown or JSON via local CLI.
    A