Writ Cloud

app.usewrit由 usewrit.app 發布官方發布者v1.0.0更新於 Oct 24, 2026

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

已驗證Streamable HTTP可網頁執行效率與工作流網頁搜尋與抓取瀏覽器自動化

概覽

AI 產生的概覽

Writ Cloud 讓助理操作真實的雲端瀏覽器、執行已儲存的網頁工作流程、擷取與爬取網站,並把網站變成可呼叫的 API。

可以做什麼
開啟並操作真實瀏覽器工作階段:導覽、點擊、填寫表單、讀取頁面及其網路請求,再把工作階段儲存為可重播的工作流程或 API 函式,遇到驗證碼、兩步驗證碼或登入時交給使用者處理。執行、檢視、編輯、排程、固定並發布已儲存的工作流程,並讀取、搜尋或匯出它們收集的資料。把單一頁面或列表頁擷取為 markdown,啟動並輪詢整站爬取,讀取已儲存的爬取與擷取的檔案。監控頁面變化並把變化事件接到通知、工作流程或 AI 任務,或依事件、webhook 和排程建立自動化。以已儲存的身分登入、用使用者核准的卡片在網站上付款,並管理已連結的 Writ 桌面端。
適用情境
當需要助理操作必須用真實瀏覽器或已登入工作階段的網站、重複使用已錄製的瀏覽器任務,或依排程從頁面和整站收集並查詢資料時使用。
執行需求
需要 Writ 帳號和具 mcp 權限的 API 金鑰,透過環境變數 WRIT_API_KEY 提供。可作為 Writ Cloud 位址上的遠端端點執行,也可作為本機 npm 套件 writ-mcp 執行(需要 Node.js);可用 URL 指向自架協調器。需要能連線到 Writ 服務的網路。
安裝前請注意
API 金鑰是憑證:應透過 WRIT_API_KEY 傳入而非命令列,並盡量縮小權限範圍。開啟的雲端瀏覽器工作階段在關閉前持續計費,爬取按量計費,重複爬取代價高。付款工具可用使用者的卡片在網站上花錢,但需使用者核准並確認。工作流程、爬取、排程、監控和發布的端點會寫入和變更帳號資料;身分憑證封存在伺服器端。

安裝

在 SourceWeft 中

  1. 開啟 儀表板中的 Writ Cloud,將其新增到工作區。
  2. 為需要使用其工具的對話啟用該服務。

Web executable,透過 Streamable HTTP。 遠端服務在工作區中設定後即可從網頁執行環境執行。

交給代理程式安裝

把這段提示詞貼上到 Claude Code、Codex、Cursor 等代理程式,或 SourceWeft 對話中。代理程式會讀取該伺服器的安裝指南,先向你展示發布者、端點和登入方式,經你同意後再把它新增到你的客戶端。金鑰不會寫進任何命令。

閱讀 https://sourceweft.com/mcp/app.usewrit%2Fwrit-cloud/install.md,並按其中說明把這個 MCP 伺服器接入我的客戶端。修改任何設定之前,先告訴我它的發布者、端點和登入方式,等我確認。不要把 API 金鑰寫進命令或我會提交的檔案;問我金鑰應從哪裡取得。

檢視代理程式所依據的安裝指南

其他 MCP 客戶端

把它新增到你客戶端的 mcpServers 設定中。

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

README


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 <key> 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:

bash
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:

bash
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):

bash
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.

bash
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:

Claude Desktop / Cursor (config file)

Add to claude_desktop_config.json (Claude Desktop) or ~/.cursor/mcp.json (Cursor). The env form is recommended — it keeps the key out of the argument list:

json
{  "mcpServers": {    "writ-selfhost": {      "command": "npx",      "args": ["-y", "writ-mcp"],      "env": {        "WRIT_COORDINATOR_URL": "https://writ.example.com",        "WRIT_API_KEY": "<YOUR_API_KEY>"      }    }  }}

Without npm

A self-host install bundles this connector at connectors/writ-mcp. There is no build step, so you can run it straight from disk:

bash
node /path/to/writ/connectors/writ-mcp/index.js --url https://writ.example.com

It coexists with the other Writ servers. Each surface registers under its own slug on purpose — the desktop app is writ, Writ Cloud is writ-cloud, a self-hosted coordinator is writ-selfhost — and each identifies itself to the assistant with a distinct title. Keep any combination connected at once.

Tools you get

Served by the server you connect to, not by this package, so a new server tool reaches you without a connector update. Writ Cloud lists the 39 tools below; a self-hosted coordinator lists the ones marked in its column.

ToolWhat it doesWrit CloudSelf-hosted
writ_list_workflowsYour saved workflows (a run_<name> tool is added only for workflows you pin)yesyes
writ_run_workflowRun one and wait for the extracted datayesyes
writ_pin_workflow_toolPin or unpin a workflow as its own run_<name> tool — off by default, capped; everything still runs via writ_run_workflowyesyes
writ_update_workflowRead a workflow's outline or edit it in place (settings, steps, functions, its agent skill)yesyes
writ_diagnose_http_workflowShow what every request of a run was answered with, and whether it ran without a browseryesno
writ_create_http_extractionAuthor a multi-request browserless extraction from captured requestsyesno
writ_workflow_dataRead a workflow's accumulated data tableyesyes
writ_search_dataSearch across everything already collectedyesyes
writ_export_dataExport a workflow's data as CSV/JSONyesyes
writ_workflow_runsRun history and statusyesyes
writ_set_scheduleSchedule a workflow (interval / daily / weekly)yesyes
writ_expose_workflow_apiPublish a workflow as a callable REST endpointyesyes
writ_scrapeRead a page, or several, as clean markdown (Cloud also reads a listing's top N)yesyes
writ_crawl_site / writ_crawl_statusStart and poll a distributed site crawlyesyes
writ_crawl_filesThe original documents a crawl captured (PDFs, office files, images)yesno
writ_saved_crawls / writ_run_saved_crawl / writ_saved_crawl_dataSaved crawls (see below)yesyes
writ_update_saved_crawlInspect or change a saved crawl's settingsyesno
writ_personasSee your saved sign-in identities and get them ready (see below)yesyes
writ_paymentPay with a card the user approves; Writ places the order once they confirmyesno
writ_devicesYour linked Writ desktops: list them, or point this connection at oneyesno
writ_create_automationEvent or clock → run a workflow, notify, or wake an agentyesyes
writ_list_webhooksYour inbound webhook URLs and the automations they fireyesyes
writ_create_monitor / writ_wire_monitorWatch a page and react to changesyesyes
writ_browser_useOpen a real browser your assistant drives turn by turnyesyes
writ_record_websiteRecord a repeatable task as a workflowyesyes
writ_website_to_apiTurn a website into a callable APIyesyes
writ_discovery_statusFollow an API build to its resultyesno
writ_browser_act / _context / _network / _save / _cancelAct in the browser, read the page and its network calls, save or close the sessionyesyes
writ_browser_composeDefine named functions, inputs and explicit steps in a sessionyesno
writ_browser_ask_userHand a CAPTCHA, a code or a decision to the user in the live browseryesno
writ_browser_sessionsOpen browser sessions you can resumeyesno
writ_record_start / _act / _context / _network / _save / _cancelOlder names of the browser loop, kept for compatibilitynoyes

The build tools (writ_browser_use, writ_record_website, writ_website_to_api, then writ_browser_act / _context / _network / _save / _cancel) are on both targets; neither has a writ_build tool, so use writ_record_website. Your assistant opens a real browser, drives it turn by turn, and saves the session as a reusable workflow that afterwards replays with no model in the loop. Writ Cloud runs it on Writ's fleet; a self-hosted coordinator runs it on your own fleet agent. Either way your assistant is the brain — no second model key is involved.

Reusing a recent result (max_age)

Running a workflow drives a real browser, so asking the same question twice in one session costs two full runs and two waits. Every workflow tool takes an optional max_age (seconds) meaning a recent answer is good enough:

jsonc
{ "name": "run_price_check", "arguments": { "sku": "B0C123", "max_age": 300 } }
  • omitted or 0 — always run fresh (the default; nothing goes stale on its own).
  • N — reuse a result younger than N seconds, otherwise run.

A reused answer carries _cache: {hit: true, age_seconds: N} so the assistant can tell how current it is.

max_age works identically against Writ Cloud and a self-hosted coordinator, and on a pinned workflow's own run_<name> tool as well as writ_run_workflow.

Calling a saved crawl (writ_run_saved_crawl)

A whole-site crawl is slow and metered, so re-crawling to answer the same question is the most expensive mistake an assistant can make. A saved crawl is a stored crawl configuration with a stable name, and the same max_age contract applies to it:

jsonc
{ "name": "writ_run_saved_crawl", "arguments": { "crawl": "docs", "max_age": 86400 } }
  • hit — the pages that crawl already collected come back inline, instantly, with nothing crawled and nothing metered.
  • miss — the site is crawled again with the saved settings, and you get a crawl id to poll with writ_crawl_status (a crawl outlives a single tool call).

Three tools cover the surface:

ToolWhat it does
writ_saved_crawlsList saved crawls. Check here before crawling a site again.
writ_run_saved_crawlRun one, reusing recent data when max_age allows.
writ_saved_crawl_dataRead what one already collected, at any age. Never crawls.

To create one, pass save_as to writ_crawl_site — that saves the settings and runs them, so the crawl becomes callable by REST as well. Re-using the same save_as updates that saved crawl instead of piling up duplicates. Saving needs an admin-scoped credential (it creates reusable, callable configuration); running one needs only run.

Sites behind a login (writ_personas)

A persona is a saved sign-in identity — username, credentials sealed server-side, optional 2FA, and a warm signed-in session. writ_personas lists yours (with per-persona readiness), inspects one (get), refreshes its session by running its login workflow (sign_in), or has the AI record the sign-in flow once so the persona can sign itself in from then on (record_login). The assistant then passes a persona_id to writ_run_workflow (and each pinned run_<name> tool), writ_crawl_site, or writ_scrape — plus writ_browser_use on Writ Cloud — and the task runs signed in, with 2FA codes minted server-side.

By design the connector can only use personas, never manage them: creating, editing or deleting one involves credentials, and no credential or one-time code ever crosses the MCP connection in either direction. Personas are created in the Writ dashboard.

If a tool call times out

It comes back as status: "running" with retryable: true. The run was not cancelled — calling the tool again starts a second run. Wait, then retry with a max_age wide enough to pick up the first run's result once it lands.

Configuration

Flags take precedence over environment variables.

FlagEnvDefaultPurpose
--urlWRIT_COORDINATOR_URL / WRIT_URLhttps://api.usewrit.appTarget base URL. A URL whose path is already /mcp or /mcp/<slug> is used verbatim.
--api-keyWRIT_API_KEY— (required)Key for Authorization: Bearer. Prefer the env var.
--insecureWRIT_INSECURE_TLS=1offAccept a self-signed local-CA cert. Private networks only.
--timeoutWRIT_MCP_TIMEOUT_MS600000Per-request timeout (ms); covers long writ_run_workflow waits.
--help / --version——Print usage or version and exit.

HTTPS with a local CA (self-host): trust the CA (recommended) and use the https:// address, or set NODE_EXTRA_CA_CERTS=/path/to/ca.pem. Use --insecure only for localhost testing — it disables certificate verification entirely, which exposes your key to a man-in-the-middle.

Security

This process exists to carry a credential, so everything that could expose one is made loud rather than convenient. Full detail in SECURITY.md.

  • The key goes to --url and nowhere else. No telemetry, no analytics, no update check. Zero dependencies means there is no transitive code in the process that could phone home — and CI fails the build if that ever changes.
  • Redirects are never followed. Replaying your Authorization header to whatever origin a Location header names would hand your key to a host you didn't choose. A 3xx becomes an error telling you to point --url at the final URL.
  • Credentials in a URL are redacted from every diagnostic. MCP clients write a server's stderr to a log file on disk; https://user:pass@host/ would otherwise be written down in plaintext.
  • Loud warnings, on stderr, for every way a key leaks: TLS verification disabled, plaintext http:// to a non-loopback host, or a key passed on the command line.
  • Retries never double-run a workflow. Only read-only methods are retried; tools/call is sent exactly once, because a retry could re-execute a side effect the connector cannot see.
  • Responses are bounded at 32 MB, so a broken endpoint can't grow this process until the OS kills your session.
  • No request is ever left unanswered — a hung MCP client is a denial of service on your assistant, and that is the failure this connector works hardest to make impossible.

Scope your keys. Give a key only workflows:read / workflows:execute unless a tool you actually use needs more.

Verifying what you install

Releases are published from CI with npm provenance, so the tarball is cryptographically linked to the commit and workflow that built it:

bash
npm audit signatures

Troubleshooting

SymptomCause and fix
Unauthorized: … rejected the API keyThe key is wrong, disabled, or lacks scope. Recreate it under Settings → Developers with workflows:read / workflows:execute.
Cannot reach …Wrong --url, or the target is down. For a self-signed cert see the local-CA note above.
… redirected (HTTP 301)Your reverse proxy redirects (usually http → https). Point --url at the final URL.
The API key contains characters that cannot be sent in an HTTP headerA newline or control character got into the key — usually a copy-paste artifact. Re-copy it.
No tools listedThe connector could not reach the coordinator, or the key was rejected — see the rows above. With a working connection the static writ_* tools are always listed, even before you save a workflow.
A workflow has no run_<name> toolDerived tools are opt-in and off by default. Pin the workflow with writ_pin_workflow_tool (or the app's Expose as MCP tool switch) and it appears on the next tools/list, up to 20 per account. Every workflow runs through writ_run_workflow either way.
Client won't connect, no errorRead the connector's stderr — your client logs it. Claude Code: ~/Library/Caches/claude-cli-nodejs/<project>/mcp-logs-<name>/.

Status

Self-hosted coordinatorSupported and verified end to end.
Published /mcp/<slug> endpointsSupported.
Writ Cloud (https://api.usewrit.app, the no---url default)Supported. Used automatically when no --url is passed.

Development

bash
npm test

No dev dependencies — the suite uses Node's built-in node:test and drives the real index.js as a subprocess against a mock MCP server, exercising the same stdio path an MCP client uses. It runs in about six seconds. npm publish runs it automatically via prepublishOnly.

See CONTRIBUTING.md — note the two hard rules: zero dependencies, permanently, and no tool logic here.

The rest of Writ

usewrit/writThe self-host coordinator — web UI, API, your data. Start here.
usewrit/writ-agentThe Rust fleet worker that does the actual browsing.
writ-mcp (this repo)The MCP connector.

License

MIT — see LICENSE.

This package is deliberately permissive because it runs inside your MCP client, not inside the coordinator, so it has to be embeddable anywhere. The coordinator it talks to is AGPL-3.0-only; the two licenses are not interchangeable.

來源:README.md,提交 9af09e7

工具

41

writ_browser_use

Open a browser

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). An API: writ_website_to_api opens this same browser, bound to a build.

輸入參數url必填goalauth_modefresh_exitpersona_iduse_residentialexecution_targetresidential_country

writ_record_website

Record a website task

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 build instead: the same browser, bound to the build.

輸入參數url必填goal必填deviceauth_modefresh_exitpersona_idskip_existinguse_residentialskip_marketplaceresidential_country

writ_website_to_api

Turn a website into an 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 fields wanted. The call first proposes the user's matching saved workflows and marketplace APIs (skip_existing / skip_marketplace build fresh), then opens a cloud browser bound to the build: capture_network records the site's own calls, writ_browser_network reads them, api_call probes them; a failed probe is evidence, not the end. Functions: HTTP flows first (writ_browser_compose define_function `flow`; writ_help('http_flows')), single requests (from_index) mixed in, DOM extraction last. writ_browser_save, then run_example on two inputs. mode=intelligent: Writ builds it alone (+ writ_discovery_status wait=true), on request.

輸入參數urlgoalmodelevelscopedevicesave_asbuild_idanonymouspersona_idai_superviseskip_existing另有 5 個

writ_discovery_status

Check an API build

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).

輸入參數waitbuild_id必填timeout_seconds

writ_browser_act

Act in a browser session

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').

輸入參數inputsactions必填max_charssession_id必填

writ_browser_context

Read a browser session

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).

輸入參數offsetsectionmax_charssession_id必填

writ_browser_network

Read a session's network calls

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 requests); an index feeds writ_browser_compose define_function from_index.

輸入參數indexquerymethodoffsetmax_charsoperationsession_id必填

writ_browser_compose

Compose a workflow in a session

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 authenticated request), set_inputs, add_steps, test_function, remove_function, remove_step, list. Payload shapes: writ_help('writ_browser_compose').

輸入參數payloadoperation必填session_id必填

writ_browser_save

Save a session as a workflow

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 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.

輸入參數namesave_tokeep_opensession_id必填descriptionallow_no_data

writ_browser_ask_user

Ask the user to step in

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 the live page; no persona applies) or 'question' (their text answer). The call that opens the ask returns at once with user_link + tell_user to relay; later calls hold up to 60 s and answer answered, waiting_for_user (the same call again) or expired. Their answer is kept if your turn ends first.

輸入參數kindquestionsession_id必填wait_seconds

writ_browser_cancel

Close a browser session

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.

輸入參數discardsession_id必填

writ_browser_sessions

List open browser sessions

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

輸入參數limitinclude_closed

writ_personas

Use the user's saved sign-ins

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.

輸入參數whywaitforceaction必填devicedomainlink_idlogin_urlpersona_idinclude_runsexecution_target

writ_payment

Pay with a card the user approves

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').

輸入參數sitestepsaction必填fieldspurposesessionsummarycurrencygrant_idmax_amountautomation_idtotal_selector另有 3 個

writ_devices

Choose a linked desktop

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

輸入參數actiondevice

writ_list_workflows

List saved 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.

輸入參數search

writ_run_workflow

Run a saved 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). 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').

輸入參數waitfilesdeviceinputsoutputmax_ageworkflowpersona_idworkflow_idfunction_namemutation_modefunction_names另有 4 個

writ_update_workflow

Edit a saved 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').

輸入參數pathlimitpatchdeviceoffsetcopy_tosectionstep_idverboseoperatorworkflowmax_chars另有 8 個

writ_create_http_extraction

Build an 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').

輸入參數goal必填applyworkflowstep_indexworkflow_idrequirementsdesired_inputsrequest_samplesresponse_sample

writ_diagnose_http_workflow

Diagnose a workflow's HTTP lane

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

輸入參數task_idworkflowworkflow_id

writ_pin_workflow_tool

Pin a workflow as a tool

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

輸入參數pinnedworkflowworkflow_id

writ_workflow_data

Read a workflow's collected data

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

輸入參數qrefsviewlimitdeviceoutputrun_idworkflowworkflow_idpreview_chars

writ_search_data

Search collected data

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

輸入參數q必填limitdeviceworkflowworkflow_idpreview_chars

writ_export_data

Export collected data

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

輸入參數qviewformatworkflowworkflow_id

writ_workflow_runs

List workflow runs

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

輸入參數limitdevicestatusworkflowworkflow_id

writ_set_schedule

Schedule a workflow

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.

輸入參數tzdayskindtimeinputsenabledfunctionworkflowfunctionsworkflow_idevery_minutes

writ_expose_workflow_api

Publish a workflow as a REST API

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

輸入參數labelworkflowworkflow_idwait_timeouttimeout_seconds

writ_crawl_site

Crawl a site into a dataset

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').

輸入參數url必填namewaitlimitspeeddeviceintentoutputmax_agesave_asdelay_msexecutor另有 23 個

writ_saved_crawls

List saved crawls

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

輸入參數limit

writ_update_saved_crawl

Edit a saved crawl

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

輸入參數namecrawl必填settingsdescriptiondefault_max_age_seconds

writ_run_saved_crawl

Run a saved crawl

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

輸入參數waitcrawl必填limitoutputmax_agepreview_charstimeout_seconds

writ_saved_crawl_data

Read a saved crawl's data

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

輸入參數crawl必填limitoutputpreview_chars

writ_scrape

Read web pages

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).

輸入參數urlurlstop_ndeviceformatpersona_idrender_modeinclude_pathspreview_charsrespect_robotsuse_residentialresidential_country

writ_crawl_status

Check a crawl

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

輸入參數waitlimitoutputcrawl_id必填preview_charstimeout_seconds

writ_crawl_files

List a crawl's captured files

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

輸入參數runscrawllimitcrawl_id

writ_create_automation

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

輸入參數name必填whentitleblocksinputsnotifyenabledchannelspriorityscheduleai_prompttarget_id另有 13 個

writ_list_webhooks

List inbound webhook URLs

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

輸入參數webhook_trigger_id

writ_create_monitor

Watch a page for changes

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.

輸入參數url必填modewatchdeviceenabledextractintervalselectorzone_textpersona_idsession_idtry_anyway另有 5 個

writ_wire_monitor

Connect a monitor to an action

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').

輸入參數buynametitleaction必填devicepromptenabledmessagechannelsworkflowentry_urlmax_steps另有 7 個

writ_help

Writ tool reference

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, 'http_flows' / 'flow_operators' for writing an HTTP flow, or empty for the list of topics.

輸入參數topic

writ_browser_live_view

Live browser 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 user watches the page in the card and can take it over there. It is not part of a conversation's work.

輸入參數session_id必填

版本歷史

1
  1. v1.0.0最新Oct 10, 2026

評分

已滿足適用檢查項的 100%

該評分衡量此收錄條目的完整程度,依據註冊中心條目、端點與公開來源計算得出。它不是對伺服器本身的評價,也不表示伺服器安全或目前可用:可連通性是帶日期的檢查結果,評分也不包含安裝量或使用者評價。

  • 近 30 天內可連通必需25 分
  • 已宣告認證方式必需10 分
  • 已列出工具必需15 分
  • 描述必需15 分
  • 圖示10 分
  • 文件15 分
  • 授權條款10 分