{"$schema":"https://wellknown.network/schemas/agent-record-v1.json","schemaVersion":"1","id":"ag_vh5345ssd95c","handle":"writ-cloud","url":"https://wellknown.network/agents/writ-cloud","links":{"self":"https://wellknown.network/agents/writ-cloud/record.json","html":"https://wellknown.network/agents/writ-cloud","markdown":"https://wellknown.network/agents/writ-cloud/record.md","api":"https://wellknown.network/api/v1/agents/writ-cloud","status":"https://wellknown.network/api/v1/agents/writ-cloud/status","claim":"https://wellknown.network/agents/writ-cloud/claim","claimApi":"https://wellknown.network/api/v1/claims","claimDescriptor":"https://wellknown.network/agents/writ-cloud/claim.json","badge":"https://wellknown.network/agents/writ-cloud/badge.svg","openapi":"https://wellknown.network/openapi.json","history":"https://wellknown.network/api/v1/agents/writ-cloud/history","tools":"https://wellknown.network/api/v1/agents/writ-cloud/tools"},"ard":{"identifier":"urn:air:api.usewrit.app:server:writ-cloud","type":"application/mcp-server-card+json"},"kind":"mcp_server","declared":{"name":"Writ Cloud","summary":"Read, crawl and act on websites, signed in as the user, and turn any site into an API.","description":"Read, crawl and act on websites, signed in as the user, and turn any site into an API.","publisher":{"name":"app.usewrit","url":null},"homepage":"https://usewrit.app","repository":"https://github.com/usewrit/writ-mcp","version":"1.0.0","license":null,"protocols":["mcp"],"tags":[],"pricing":null,"endpoints":[{"url":"https://api.usewrit.app/mcp","type":"mcp_streamable_http","auth":null,"probeable":true},{"url":"npm:writ-mcp","type":"package_npm","auth":null,"probeable":false}],"skills":null,"tools":null,"extra":{"updatedAt":"2026-10-10T13:19:03.186616Z","publishedAt":"2026-10-10T13:19:03.186616Z","registryName":"app.usewrit/writ-cloud"},"attribution":{"kind":"mcp_registry","name":"mcp_registry","repoUrl":"mcp_registry","summary":"mcp_registry","version":"mcp_registry","description":"mcp_registry","homepageUrl":"mcp_registry","publisherName":"mcp_registry"}},"derived":{"capabilities":[{"slug":"communication.notifications","name":"Notifications","confidence":1,"provenance":"derived"},{"slug":"data.web-scraping","name":"Web Scraping","confidence":0.859,"provenance":"derived"},{"slug":"documents.extraction","name":"Data Extraction","confidence":0.554,"provenance":"derived"},{"slug":"dev.docs-lookup","name":"Documentation Lookup","confidence":0.54,"provenance":"derived"},{"slug":"data.apis","name":"API Access","confidence":0.51,"provenance":"derived"},{"slug":"commerce.payments","name":"Payments","confidence":0.51,"provenance":"derived"},{"slug":"communication.chat","name":"Team Chat","confidence":0.51,"provenance":"derived"},{"slug":"infra.browser-automation","name":"Browser Automation","confidence":0.51,"provenance":"derived"}],"categories":["commerce","communication","data","dev","documents","infra"],"language":"en"},"observed":{"status":"live","statusReason":"Responded 6h ago.","lastOkAt":"2026-10-28T02:29:25.351Z","lastProbedAt":"2026-10-28T02:29:25.351Z","statusComputedAt":"2026-10-28T02:32:09.449Z","reliability30d":{"probes":58,"successRate":1,"p50Ms":315,"basis":"service","measures":{"availability":"availability","latency":"response time","tools":"tool surface observed","summary":"Checks reached the service itself."},"checks":{"total":58,"ok":58,"authBoundaryOk":0,"serviceOk":58,"note":"Counted from the observation rows for the window, checks of the server only (HTTP, A2A card, MCP initialize). ok = authBoundaryOk + serviceOk. `probes` is the sum of daily rollups and includes registry checks, so it can differ from `total`."}},"latestObservations":[{"at":"2026-10-28T02:29:25.351Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":311,"error":null,"detail":{"tools":[{"name":"writ_browser_use","description":"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 "},{"name":"writ_record_website","description":"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"},{"name":"writ_website_to_api","description":"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 "},{"name":"writ_discovery_status","description":"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. "},{"name":"writ_browser_act","description":"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, cl"},{"name":"writ_browser_context","description":"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"},{"name":"writ_browser_network","description":"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 "},{"name":"writ_browser_compose","description":"Authors the workflow in an open session beyond a recording: named API functions (define_function with a `flow`, preferred in an API build, or a captured call's "},{"name":"writ_browser_save","description":"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 functio"},{"name":"writ_browser_ask_user","description":"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 typ"},{"name":"writ_browser_cancel","description":"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 n"},{"name":"writ_browser_sessions","description":"Lists the account's open cloud browser sessions (each resumable by its session_id)."},{"name":"writ_personas","description":"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 f"},{"name":"writ_payment","description":"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"},{"name":"writ_devices","description":"The user's linked Writ desktops: list, use (scope this connection to one: runs, browsers, personas and monitors then target it), clear, monitors, datasets."},{"name":"writ_list_workflows","description":"Lists the workflows saved in the Writ account; each runs on demand without live browsing. Returns id, name, declared inputs (with `input_rules`: the values and "},{"name":"writ_run_workflow","description":"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_nam"},{"name":"writ_update_workflow","description":"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 Cl"},{"name":"writ_create_http_extraction","description":"Drafts or revises a multi-request browserless HTTP extraction (loops, GraphQL, cursor pagination) from captured requests and a plain-language goal. Every option"},{"name":"writ_diagnose_http_workflow","description":"Explains why a saved workflow's run returned nothing or failed: HTTP-lane readiness and, with task_id, the run's requests and responses."},{"name":"writ_pin_workflow_tool","description":"Pins (or unpins) a saved workflow as its own run_<name> tool on this server."},{"name":"writ_workflow_data","description":"Reads a saved workflow's collected data as a table: q filters, run_id picks one run, refs returns full records."},{"name":"writ_search_data","description":"Searches everything the account's workflows already collected for a term, without running anything."},{"name":"writ_export_data","description":"Exports a workflow's full data table as CSV or JSON."},{"name":"writ_workflow_runs","description":"Run history (status, timing, errors, venue) of one workflow or all of them."},{"name":"writ_set_schedule","description":"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"},{"name":"writ_expose_workflow_api","description":"Publishes a saved workflow as a REST endpoint (a POST URL that waits and returns its JSON). Repeated calls reuse it."},{"name":"writ_crawl_site","description":"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"},{"name":"writ_saved_crawls","description":"Lists the crawls saved for re-running, with their scope."},{"name":"writ_update_saved_crawl","description":"Inspects or changes a saved crawl's settings in place."},{"name":"writ_run_saved_crawl","description":"Runs a saved crawl; max_age returns its recent data at no cost instead of re-crawling."},{"name":"writ_saved_crawl_data","description":"Reads the data a saved crawl collected on its last completed run, without crawling."},{"name":"writ_scrape","description":"READ PAGES NOW, no browser session: one page (url), up to 20 pages in parallel (urls, on one site or several), or a listing plus its top N item pages (url + top"},{"name":"writ_crawl_status","description":"Status of a crawl by crawl_id; wait=true holds up to 75 s and returns the collected rows when it converges."},{"name":"writ_crawl_files","description":"The original files (PDFs, office documents, images, CSVs) a crawl captured, with short-lived download URLs."},{"name":"writ_create_automation","description":"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 o"},{"name":"writ_list_webhooks","description":"The account's inbound webhook URLs and the automations they fire."},{"name":"writ_create_monitor","description":"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 "},{"name":"writ_wire_monitor","description":"Connects a monitor's change_detected event to an action: action='notify' (channels and recipients the account has configured), 'workflow' (runs a saved workflow"},{"name":"writ_help","description":"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>'"},{"name":"writ_browser_live_view","description":"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"}],"toolCount":41,"toolsHash":"fa33f544f78362dd881a19db2322819fd26887527201b42e1f7ff5db214e0033","serverName":"Writ Cloud","capabilities":["tools","resources"],"serverVersion":"1.0.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-27T18:32:29.511Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":323,"error":null,"detail":{"tools":[{"name":"writ_browser_use","description":"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 "},{"name":"writ_record_website","description":"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"},{"name":"writ_website_to_api","description":"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 "},{"name":"writ_discovery_status","description":"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. "},{"name":"writ_browser_act","description":"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, cl"},{"name":"writ_browser_context","description":"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"},{"name":"writ_browser_network","description":"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 "},{"name":"writ_browser_compose","description":"Authors the workflow in an open session beyond a recording: named API functions (define_function with a `flow`, preferred in an API build, or a captured call's "},{"name":"writ_browser_save","description":"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 functio"},{"name":"writ_browser_ask_user","description":"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 typ"},{"name":"writ_browser_cancel","description":"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 n"},{"name":"writ_browser_sessions","description":"Lists the account's open cloud browser sessions (each resumable by its session_id)."},{"name":"writ_personas","description":"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 f"},{"name":"writ_payment","description":"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"},{"name":"writ_devices","description":"The user's linked Writ desktops: list, use (scope this connection to one: runs, browsers, personas and monitors then target it), clear, monitors, datasets."},{"name":"writ_list_workflows","description":"Lists the workflows saved in the Writ account; each runs on demand without live browsing. Returns id, name, declared inputs (with `input_rules`: the values and "},{"name":"writ_run_workflow","description":"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_nam"},{"name":"writ_update_workflow","description":"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 Cl"},{"name":"writ_create_http_extraction","description":"Drafts or revises a multi-request browserless HTTP extraction (loops, GraphQL, cursor pagination) from captured requests and a plain-language goal. Every option"},{"name":"writ_diagnose_http_workflow","description":"Explains why a saved workflow's run returned nothing or failed: HTTP-lane readiness and, with task_id, the run's requests and responses."},{"name":"writ_pin_workflow_tool","description":"Pins (or unpins) a saved workflow as its own run_<name> tool on this server."},{"name":"writ_workflow_data","description":"Reads a saved workflow's collected data as a table: q filters, run_id picks one run, refs returns full records."},{"name":"writ_search_data","description":"Searches everything the account's workflows already collected for a term, without running anything."},{"name":"writ_export_data","description":"Exports a workflow's full data table as CSV or JSON."},{"name":"writ_workflow_runs","description":"Run history (status, timing, errors, venue) of one workflow or all of them."},{"name":"writ_set_schedule","description":"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"},{"name":"writ_expose_workflow_api","description":"Publishes a saved workflow as a REST endpoint (a POST URL that waits and returns its JSON). Repeated calls reuse it."},{"name":"writ_crawl_site","description":"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"},{"name":"writ_saved_crawls","description":"Lists the crawls saved for re-running, with their scope."},{"name":"writ_update_saved_crawl","description":"Inspects or changes a saved crawl's settings in place."},{"name":"writ_run_saved_crawl","description":"Runs a saved crawl; max_age returns its recent data at no cost instead of re-crawling."},{"name":"writ_saved_crawl_data","description":"Reads the data a saved crawl collected on its last completed run, without crawling."},{"name":"writ_scrape","description":"READ PAGES NOW, no browser session: one page (url), up to 20 pages in parallel (urls, on one site or several), or a listing plus its top N item pages (url + top"},{"name":"writ_crawl_status","description":"Status of a crawl by crawl_id; wait=true holds up to 75 s and returns the collected rows when it converges."},{"name":"writ_crawl_files","description":"The original files (PDFs, office documents, images, CSVs) a crawl captured, with short-lived download URLs."},{"name":"writ_create_automation","description":"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 o"},{"name":"writ_list_webhooks","description":"The account's inbound webhook URLs and the automations they fire."},{"name":"writ_create_monitor","description":"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 "},{"name":"writ_wire_monitor","description":"Connects a monitor's change_detected event to an action: action='notify' (channels and recipients the account has configured), 'workflow' (runs a saved workflow"},{"name":"writ_help","description":"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>'"},{"name":"writ_browser_live_view","description":"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"}],"toolCount":41,"toolsHash":"fa33f544f78362dd881a19db2322819fd26887527201b42e1f7ff5db214e0033","serverName":"Writ Cloud","capabilities":["tools","resources"],"serverVersion":"1.0.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-27T11:24:49.021Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":319,"error":null,"detail":{"tools":[{"name":"writ_browser_use","description":"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 "},{"name":"writ_record_website","description":"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"},{"name":"writ_website_to_api","description":"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 "},{"name":"writ_discovery_status","description":"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. "},{"name":"writ_browser_act","description":"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, cl"},{"name":"writ_browser_context","description":"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"},{"name":"writ_browser_network","description":"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 "},{"name":"writ_browser_compose","description":"Authors the workflow in an open session beyond a recording: named API functions (define_function with a `flow`, preferred in an API build, or a captured call's "},{"name":"writ_browser_save","description":"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 functio"},{"name":"writ_browser_ask_user","description":"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 typ"},{"name":"writ_browser_cancel","description":"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 n"},{"name":"writ_browser_sessions","description":"Lists the account's open cloud browser sessions (each resumable by its session_id)."},{"name":"writ_personas","description":"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 f"},{"name":"writ_payment","description":"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"},{"name":"writ_devices","description":"The user's linked Writ desktops: list, use (scope this connection to one: runs, browsers, personas and monitors then target it), clear, monitors, datasets."},{"name":"writ_list_workflows","description":"Lists the workflows saved in the Writ account; each runs on demand without live browsing. Returns id, name, declared inputs (with `input_rules`: the values and "},{"name":"writ_run_workflow","description":"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_nam"},{"name":"writ_update_workflow","description":"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 Cl"},{"name":"writ_create_http_extraction","description":"Drafts or revises a multi-request browserless HTTP extraction (loops, GraphQL, cursor pagination) from captured requests and a plain-language goal. Every option"},{"name":"writ_diagnose_http_workflow","description":"Explains why a saved workflow's run returned nothing or failed: HTTP-lane readiness and, with task_id, the run's requests and responses."},{"name":"writ_pin_workflow_tool","description":"Pins (or unpins) a saved workflow as its own run_<name> tool on this server."},{"name":"writ_workflow_data","description":"Reads a saved workflow's collected data as a table: q filters, run_id picks one run, refs returns full records."},{"name":"writ_search_data","description":"Searches everything the account's workflows already collected for a term, without running anything."},{"name":"writ_export_data","description":"Exports a workflow's full data table as CSV or JSON."},{"name":"writ_workflow_runs","description":"Run history (status, timing, errors, venue) of one workflow or all of them."},{"name":"writ_set_schedule","description":"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"},{"name":"writ_expose_workflow_api","description":"Publishes a saved workflow as a REST endpoint (a POST URL that waits and returns its JSON). Repeated calls reuse it."},{"name":"writ_crawl_site","description":"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"},{"name":"writ_saved_crawls","description":"Lists the crawls saved for re-running, with their scope."},{"name":"writ_update_saved_crawl","description":"Inspects or changes a saved crawl's settings in place."},{"name":"writ_run_saved_crawl","description":"Runs a saved crawl; max_age returns its recent data at no cost instead of re-crawling."},{"name":"writ_saved_crawl_data","description":"Reads the data a saved crawl collected on its last completed run, without crawling."},{"name":"writ_scrape","description":"READ PAGES NOW, no browser session: one page (url), up to 20 pages in parallel (urls, on one site or several), or a listing plus its top N item pages (url + top"},{"name":"writ_crawl_status","description":"Status of a crawl by crawl_id; wait=true holds up to 75 s and returns the collected rows when it converges."},{"name":"writ_crawl_files","description":"The original files (PDFs, office documents, images, CSVs) a crawl captured, with short-lived download URLs."},{"name":"writ_create_automation","description":"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 o"},{"name":"writ_list_webhooks","description":"The account's inbound webhook URLs and the automations they fire."},{"name":"writ_create_monitor","description":"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 "},{"name":"writ_wire_monitor","description":"Connects a monitor's change_detected event to an action: action='notify' (channels and recipients the account has configured), 'workflow' (runs a saved workflow"},{"name":"writ_help","description":"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>'"},{"name":"writ_browser_live_view","description":"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"}],"toolCount":41,"toolsHash":"fa33f544f78362dd881a19db2322819fd26887527201b42e1f7ff5db214e0033","serverName":"Writ Cloud","capabilities":["tools","resources"],"serverVersion":"1.0.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-27T04:23:52.183Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":294,"error":null,"detail":{"tools":[{"name":"writ_browser_use","description":"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 "},{"name":"writ_record_website","description":"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"},{"name":"writ_website_to_api","description":"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 "},{"name":"writ_discovery_status","description":"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. "},{"name":"writ_browser_act","description":"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, cl"},{"name":"writ_browser_context","description":"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"},{"name":"writ_browser_network","description":"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 "},{"name":"writ_browser_compose","description":"Authors the workflow in an open session beyond a recording: named API functions (define_function with a `flow`, preferred in an API build, or a captured call's "},{"name":"writ_browser_save","description":"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 functio"},{"name":"writ_browser_ask_user","description":"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 typ"},{"name":"writ_browser_cancel","description":"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 n"},{"name":"writ_browser_sessions","description":"Lists the account's open cloud browser sessions (each resumable by its session_id)."},{"name":"writ_personas","description":"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 f"},{"name":"writ_payment","description":"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"},{"name":"writ_devices","description":"The user's linked Writ desktops: list, use (scope this connection to one: runs, browsers, personas and monitors then target it), clear, monitors, datasets."},{"name":"writ_list_workflows","description":"Lists the workflows saved in the Writ account; each runs on demand without live browsing. Returns id, name, declared inputs (with `input_rules`: the values and "},{"name":"writ_run_workflow","description":"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_nam"},{"name":"writ_update_workflow","description":"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 Cl"},{"name":"writ_create_http_extraction","description":"Drafts or revises a multi-request browserless HTTP extraction (loops, GraphQL, cursor pagination) from captured requests and a plain-language goal. Every option"},{"name":"writ_diagnose_http_workflow","description":"Explains why a saved workflow's run returned nothing or failed: HTTP-lane readiness and, with task_id, the run's requests and responses."},{"name":"writ_pin_workflow_tool","description":"Pins (or unpins) a saved workflow as its own run_<name> tool on this server."},{"name":"writ_workflow_data","description":"Reads a saved workflow's collected data as a table: q filters, run_id picks one run, refs returns full records."},{"name":"writ_search_data","description":"Searches everything the account's workflows already collected for a term, without running anything."},{"name":"writ_export_data","description":"Exports a workflow's full data table as CSV or JSON."},{"name":"writ_workflow_runs","description":"Run history (status, timing, errors, venue) of one workflow or all of them."},{"name":"writ_set_schedule","description":"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"},{"name":"writ_expose_workflow_api","description":"Publishes a saved workflow as a REST endpoint (a POST URL that waits and returns its JSON). Repeated calls reuse it."},{"name":"writ_crawl_site","description":"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"},{"name":"writ_saved_crawls","description":"Lists the crawls saved for re-running, with their scope."},{"name":"writ_update_saved_crawl","description":"Inspects or changes a saved crawl's settings in place."},{"name":"writ_run_saved_crawl","description":"Runs a saved crawl; max_age returns its recent data at no cost instead of re-crawling."},{"name":"writ_saved_crawl_data","description":"Reads the data a saved crawl collected on its last completed run, without crawling."},{"name":"writ_scrape","description":"READ PAGES NOW, no browser session: one page (url), up to 20 pages in parallel (urls, on one site or several), or a listing plus its top N item pages (url + top"},{"name":"writ_crawl_status","description":"Status of a crawl by crawl_id; wait=true holds up to 75 s and returns the collected rows when it converges."},{"name":"writ_crawl_files","description":"The original files (PDFs, office documents, images, CSVs) a crawl captured, with short-lived download URLs."},{"name":"writ_create_automation","description":"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 o"},{"name":"writ_list_webhooks","description":"The account's inbound webhook URLs and the automations they fire."},{"name":"writ_create_monitor","description":"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 "},{"name":"writ_wire_monitor","description":"Connects a monitor's change_detected event to an action: action='notify' (channels and recipients the account has configured), 'workflow' (runs a saved workflow"},{"name":"writ_help","description":"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>'"},{"name":"writ_browser_live_view","description":"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"}],"toolCount":41,"toolsHash":"fa33f544f78362dd881a19db2322819fd26887527201b42e1f7ff5db214e0033","serverName":"Writ Cloud","capabilities":["tools","resources"],"serverVersion":"1.0.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-26T20:29:54.994Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":331,"error":null,"detail":{"tools":[{"name":"writ_browser_use","description":"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 "},{"name":"writ_record_website","description":"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"},{"name":"writ_website_to_api","description":"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 "},{"name":"writ_discovery_status","description":"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. "},{"name":"writ_browser_act","description":"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, cl"},{"name":"writ_browser_context","description":"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"},{"name":"writ_browser_network","description":"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 "},{"name":"writ_browser_compose","description":"Authors the workflow in an open session beyond a recording: named API functions (define_function with a `flow`, preferred in an API build, or a captured call's "},{"name":"writ_browser_save","description":"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 functio"},{"name":"writ_browser_ask_user","description":"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 typ"},{"name":"writ_browser_cancel","description":"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 n"},{"name":"writ_browser_sessions","description":"Lists the account's open cloud browser sessions (each resumable by its session_id)."},{"name":"writ_personas","description":"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 f"},{"name":"writ_payment","description":"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"},{"name":"writ_devices","description":"The user's linked Writ desktops: list, use (scope this connection to one: runs, browsers, personas and monitors then target it), clear, monitors, datasets."},{"name":"writ_list_workflows","description":"Lists the workflows saved in the Writ account; each runs on demand without live browsing. Returns id, name, declared inputs (with `input_rules`: the values and "},{"name":"writ_run_workflow","description":"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_nam"},{"name":"writ_update_workflow","description":"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 Cl"},{"name":"writ_create_http_extraction","description":"Drafts or revises a multi-request browserless HTTP extraction (loops, GraphQL, cursor pagination) from captured requests and a plain-language goal. Every option"},{"name":"writ_diagnose_http_workflow","description":"Explains why a saved workflow's run returned nothing or failed: HTTP-lane readiness and, with task_id, the run's requests and responses."},{"name":"writ_pin_workflow_tool","description":"Pins (or unpins) a saved workflow as its own run_<name> tool on this server."},{"name":"writ_workflow_data","description":"Reads a saved workflow's collected data as a table: q filters, run_id picks one run, refs returns full records."},{"name":"writ_search_data","description":"Searches everything the account's workflows already collected for a term, without running anything."},{"name":"writ_export_data","description":"Exports a workflow's full data table as CSV or JSON."},{"name":"writ_workflow_runs","description":"Run history (status, timing, errors, venue) of one workflow or all of them."},{"name":"writ_set_schedule","description":"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"},{"name":"writ_expose_workflow_api","description":"Publishes a saved workflow as a REST endpoint (a POST URL that waits and returns its JSON). Repeated calls reuse it."},{"name":"writ_crawl_site","description":"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"},{"name":"writ_saved_crawls","description":"Lists the crawls saved for re-running, with their scope."},{"name":"writ_update_saved_crawl","description":"Inspects or changes a saved crawl's settings in place."},{"name":"writ_run_saved_crawl","description":"Runs a saved crawl; max_age returns its recent data at no cost instead of re-crawling."},{"name":"writ_saved_crawl_data","description":"Reads the data a saved crawl collected on its last completed run, without crawling."},{"name":"writ_scrape","description":"READ PAGES NOW, no browser session: one page (url), up to 20 pages in parallel (urls, on one site or several), or a listing plus its top N item pages (url + top"},{"name":"writ_crawl_status","description":"Status of a crawl by crawl_id; wait=true holds up to 75 s and returns the collected rows when it converges."},{"name":"writ_crawl_files","description":"The original files (PDFs, office documents, images, CSVs) a crawl captured, with short-lived download URLs."},{"name":"writ_create_automation","description":"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 o"},{"name":"writ_list_webhooks","description":"The account's inbound webhook URLs and the automations they fire."},{"name":"writ_create_monitor","description":"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 "},{"name":"writ_wire_monitor","description":"Connects a monitor's change_detected event to an action: action='notify' (channels and recipients the account has configured), 'workflow' (runs a saved workflow"},{"name":"writ_help","description":"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>'"},{"name":"writ_browser_live_view","description":"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"}],"toolCount":41,"toolsHash":"fa33f544f78362dd881a19db2322819fd26887527201b42e1f7ff5db214e0033","serverName":"Writ Cloud","capabilities":["tools","resources"],"serverVersion":"1.0.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-26T13:27:32.466Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":332,"error":null,"detail":{"tools":[{"name":"writ_browser_use","description":"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 "},{"name":"writ_record_website","description":"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"},{"name":"writ_website_to_api","description":"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 "},{"name":"writ_discovery_status","description":"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. "},{"name":"writ_browser_act","description":"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, cl"},{"name":"writ_browser_context","description":"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"},{"name":"writ_browser_network","description":"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 "},{"name":"writ_browser_compose","description":"Authors the workflow in an open session beyond a recording: named API functions (define_function with a `flow`, preferred in an API build, or a captured call's "},{"name":"writ_browser_save","description":"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 functio"},{"name":"writ_browser_ask_user","description":"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 typ"},{"name":"writ_browser_cancel","description":"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 n"},{"name":"writ_browser_sessions","description":"Lists the account's open cloud browser sessions (each resumable by its session_id)."},{"name":"writ_personas","description":"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 f"},{"name":"writ_payment","description":"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"},{"name":"writ_devices","description":"The user's linked Writ desktops: list, use (scope this connection to one: runs, browsers, personas and monitors then target it), clear, monitors, datasets."},{"name":"writ_list_workflows","description":"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 "},{"name":"writ_run_workflow","description":"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_nam"},{"name":"writ_update_workflow","description":"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 Cl"},{"name":"writ_create_http_extraction","description":"Drafts or revises a multi-request browserless HTTP extraction (loops, GraphQL, cursor pagination) from captured requests and a plain-language goal. Every option"},{"name":"writ_diagnose_http_workflow","description":"Explains why a saved workflow's run returned nothing or failed: HTTP-lane readiness and, with task_id, the run's requests and responses."},{"name":"writ_pin_workflow_tool","description":"Pins (or unpins) a saved workflow as its own run_<name> tool on this server."},{"name":"writ_workflow_data","description":"Reads a saved workflow's collected data as a table: q filters, run_id picks one run, refs returns full records."},{"name":"writ_search_data","description":"Searches everything the account's workflows already collected for a term, without running anything."},{"name":"writ_export_data","description":"Exports a workflow's full data table as CSV or JSON."},{"name":"writ_workflow_runs","description":"Run history (status, timing, errors, venue) of one workflow or all of them."},{"name":"writ_set_schedule","description":"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"},{"name":"writ_expose_workflow_api","description":"Publishes a saved workflow as a REST endpoint (a POST URL that waits and returns its JSON). Repeated calls reuse it."},{"name":"writ_crawl_site","description":"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"},{"name":"writ_saved_crawls","description":"Lists the crawls saved for re-running, with their scope."},{"name":"writ_update_saved_crawl","description":"Inspects or changes a saved crawl's settings in place."},{"name":"writ_run_saved_crawl","description":"Runs a saved crawl; max_age returns its recent data at no cost instead of re-crawling."},{"name":"writ_saved_crawl_data","description":"Reads the data a saved crawl collected on its last completed run, without crawling."},{"name":"writ_scrape","description":"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 markd"},{"name":"writ_crawl_status","description":"Status of a crawl by crawl_id; wait=true holds up to 75 s and returns the collected rows when it converges."},{"name":"writ_crawl_files","description":"The original files (PDFs, office documents, images, CSVs) a crawl captured, with short-lived download URLs."},{"name":"writ_create_automation","description":"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 o"},{"name":"writ_list_webhooks","description":"The account's inbound webhook URLs and the automations they fire."},{"name":"writ_create_monitor","description":"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 "},{"name":"writ_wire_monitor","description":"Connects a monitor's change_detected event to an action: action='notify' (channels and recipients the account has configured), 'workflow' (runs a saved workflow"},{"name":"writ_help","description":"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>'"},{"name":"writ_browser_live_view","description":"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"}],"toolCount":41,"toolsHash":"10cdf24d8fab1a1cdce548b99045c010c8e3f7704d2f9347c6dc74e0e7f75c33","serverName":"Writ Cloud","capabilities":["tools","resources"],"serverVersion":"1.0.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-26T06:24:41.208Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":287,"error":null,"detail":{"tools":[{"name":"writ_browser_use","description":"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 "},{"name":"writ_record_website","description":"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"},{"name":"writ_website_to_api","description":"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 "},{"name":"writ_discovery_status","description":"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. "},{"name":"writ_browser_act","description":"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, cl"},{"name":"writ_browser_context","description":"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"},{"name":"writ_browser_network","description":"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 "},{"name":"writ_browser_compose","description":"Authors the workflow in an open session beyond a recording: named API functions (define_function with a `flow`, preferred in an API build, or a captured call's "},{"name":"writ_browser_save","description":"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 functio"},{"name":"writ_browser_ask_user","description":"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 typ"},{"name":"writ_browser_cancel","description":"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 n"},{"name":"writ_browser_sessions","description":"Lists the account's open cloud browser sessions (each resumable by its session_id)."},{"name":"writ_personas","description":"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 f"},{"name":"writ_payment","description":"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"},{"name":"writ_devices","description":"The user's linked Writ desktops: list, use (scope this connection to one: runs, browsers, personas and monitors then target it), clear, monitors, datasets."},{"name":"writ_list_workflows","description":"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 "},{"name":"writ_run_workflow","description":"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_nam"},{"name":"writ_update_workflow","description":"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 Cl"},{"name":"writ_create_http_extraction","description":"Drafts or revises a multi-request browserless HTTP extraction (loops, GraphQL, cursor pagination) from captured requests and a plain-language goal. Every option"},{"name":"writ_diagnose_http_workflow","description":"Explains why a saved workflow's run returned nothing or failed: HTTP-lane readiness and, with task_id, the run's requests and responses."},{"name":"writ_pin_workflow_tool","description":"Pins (or unpins) a saved workflow as its own run_<name> tool on this server."},{"name":"writ_workflow_data","description":"Reads a saved workflow's collected data as a table: q filters, run_id picks one run, refs returns full records."},{"name":"writ_search_data","description":"Searches everything the account's workflows already collected for a term, without running anything."},{"name":"writ_export_data","description":"Exports a workflow's full data table as CSV or JSON."},{"name":"writ_workflow_runs","description":"Run history (status, timing, errors, venue) of one workflow or all of them."},{"name":"writ_set_schedule","description":"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"},{"name":"writ_expose_workflow_api","description":"Publishes a saved workflow as a REST endpoint (a POST URL that waits and returns its JSON). Repeated calls reuse it."},{"name":"writ_crawl_site","description":"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"},{"name":"writ_saved_crawls","description":"Lists the crawls saved for re-running, with their scope."},{"name":"writ_update_saved_crawl","description":"Inspects or changes a saved crawl's settings in place."},{"name":"writ_run_saved_crawl","description":"Runs a saved crawl; max_age returns its recent data at no cost instead of re-crawling."},{"name":"writ_saved_crawl_data","description":"Reads the data a saved crawl collected on its last completed run, without crawling."},{"name":"writ_scrape","description":"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 markd"},{"name":"writ_crawl_status","description":"Status of a crawl by crawl_id; wait=true holds up to 75 s and returns the collected rows when it converges."},{"name":"writ_crawl_files","description":"The original files (PDFs, office documents, images, CSVs) a crawl captured, with short-lived download URLs."},{"name":"writ_create_automation","description":"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 o"},{"name":"writ_list_webhooks","description":"The account's inbound webhook URLs and the automations they fire."},{"name":"writ_create_monitor","description":"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 "},{"name":"writ_wire_monitor","description":"Connects a monitor's change_detected event to an action: action='notify' (channels and recipients the account has configured), 'workflow' (runs a saved workflow"},{"name":"writ_help","description":"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>'"},{"name":"writ_browser_live_view","description":"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"}],"toolCount":41,"toolsHash":"10cdf24d8fab1a1cdce548b99045c010c8e3f7704d2f9347c6dc74e0e7f75c33","serverName":"Writ Cloud","capabilities":["tools","resources"],"serverVersion":"1.0.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-25T23:25:18.443Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":297,"error":null,"detail":{"tools":[{"name":"writ_browser_use","description":"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 "},{"name":"writ_record_website","description":"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"},{"name":"writ_website_to_api","description":"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 "},{"name":"writ_discovery_status","description":"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. "},{"name":"writ_browser_act","description":"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, cl"},{"name":"writ_browser_context","description":"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"},{"name":"writ_browser_network","description":"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 "},{"name":"writ_browser_compose","description":"Authors the workflow in an open session beyond a recording: named API functions (define_function with a `flow`, preferred in an API build, or a captured call's "},{"name":"writ_browser_save","description":"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 functio"},{"name":"writ_browser_ask_user","description":"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 typ"},{"name":"writ_browser_cancel","description":"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 n"},{"name":"writ_browser_sessions","description":"Lists the account's open cloud browser sessions (each resumable by its session_id)."},{"name":"writ_personas","description":"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 f"},{"name":"writ_payment","description":"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"},{"name":"writ_devices","description":"The user's linked Writ desktops: list, use (scope this connection to one: runs, browsers, personas and monitors then target it), clear, monitors, datasets."},{"name":"writ_list_workflows","description":"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 "},{"name":"writ_run_workflow","description":"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_nam"},{"name":"writ_update_workflow","description":"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 Cl"},{"name":"writ_create_http_extraction","description":"Drafts or revises a multi-request browserless HTTP extraction (loops, GraphQL, cursor pagination) from captured requests and a plain-language goal. Every option"},{"name":"writ_diagnose_http_workflow","description":"Explains why a saved workflow's run returned nothing or failed: HTTP-lane readiness and, with task_id, the run's requests and responses."},{"name":"writ_pin_workflow_tool","description":"Pins (or unpins) a saved workflow as its own run_<name> tool on this server."},{"name":"writ_workflow_data","description":"Reads a saved workflow's collected data as a table: q filters, run_id picks one run, refs returns full records."},{"name":"writ_search_data","description":"Searches everything the account's workflows already collected for a term, without running anything."},{"name":"writ_export_data","description":"Exports a workflow's full data table as CSV or JSON."},{"name":"writ_workflow_runs","description":"Run history (status, timing, errors, venue) of one workflow or all of them."},{"name":"writ_set_schedule","description":"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"},{"name":"writ_expose_workflow_api","description":"Publishes a saved workflow as a REST endpoint (a POST URL that waits and returns its JSON). Repeated calls reuse it."},{"name":"writ_crawl_site","description":"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"},{"name":"writ_saved_crawls","description":"Lists the crawls saved for re-running, with their scope."},{"name":"writ_update_saved_crawl","description":"Inspects or changes a saved crawl's settings in place."},{"name":"writ_run_saved_crawl","description":"Runs a saved crawl; max_age returns its recent data at no cost instead of re-crawling."},{"name":"writ_saved_crawl_data","description":"Reads the data a saved crawl collected on its last completed run, without crawling."},{"name":"writ_scrape","description":"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 markd"},{"name":"writ_crawl_status","description":"Status of a crawl by crawl_id; wait=true holds up to 75 s and returns the collected rows when it converges."},{"name":"writ_crawl_files","description":"The original files (PDFs, office documents, images, CSVs) a crawl captured, with short-lived download URLs."},{"name":"writ_create_automation","description":"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 o"},{"name":"writ_list_webhooks","description":"The account's inbound webhook URLs and the automations they fire."},{"name":"writ_create_monitor","description":"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 "},{"name":"writ_wire_monitor","description":"Connects a monitor's change_detected event to an action: action='notify' (channels and recipients the account has configured), 'workflow' (runs a saved workflow"},{"name":"writ_help","description":"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>'"},{"name":"writ_browser_live_view","description":"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"}],"toolCount":41,"toolsHash":"10cdf24d8fab1a1cdce548b99045c010c8e3f7704d2f9347c6dc74e0e7f75c33","serverName":"Writ Cloud","capabilities":["tools","resources"],"serverVersion":"1.0.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-25T16:28:02.765Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":337,"error":null,"detail":{"tools":[{"name":"writ_browser_use","description":"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 "},{"name":"writ_record_website","description":"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"},{"name":"writ_website_to_api","description":"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 "},{"name":"writ_discovery_status","description":"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. "},{"name":"writ_browser_act","description":"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, cl"},{"name":"writ_browser_context","description":"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"},{"name":"writ_browser_network","description":"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 "},{"name":"writ_browser_compose","description":"Authors the workflow in an open session beyond a recording: named API functions (define_function with a `flow`, preferred in an API build, or a captured call's "},{"name":"writ_browser_save","description":"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 functio"},{"name":"writ_browser_ask_user","description":"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 typ"},{"name":"writ_browser_cancel","description":"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 n"},{"name":"writ_browser_sessions","description":"Lists the account's open cloud browser sessions (each resumable by its session_id)."},{"name":"writ_personas","description":"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 f"},{"name":"writ_payment","description":"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"},{"name":"writ_devices","description":"The user's linked Writ desktops: list, use (scope this connection to one: runs, browsers, personas and monitors then target it), clear, monitors, datasets."},{"name":"writ_list_workflows","description":"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 "},{"name":"writ_run_workflow","description":"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_nam"},{"name":"writ_update_workflow","description":"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 Cl"},{"name":"writ_create_http_extraction","description":"Drafts or revises a multi-request browserless HTTP extraction (loops, GraphQL, cursor pagination) from captured requests and a plain-language goal. Every option"},{"name":"writ_diagnose_http_workflow","description":"Explains why a saved workflow's run returned nothing or failed: HTTP-lane readiness and, with task_id, the run's requests and responses."},{"name":"writ_pin_workflow_tool","description":"Pins (or unpins) a saved workflow as its own run_<name> tool on this server."},{"name":"writ_workflow_data","description":"Reads a saved workflow's collected data as a table: q filters, run_id picks one run, refs returns full records."},{"name":"writ_search_data","description":"Searches everything the account's workflows already collected for a term, without running anything."},{"name":"writ_export_data","description":"Exports a workflow's full data table as CSV or JSON."},{"name":"writ_workflow_runs","description":"Run history (status, timing, errors, venue) of one workflow or all of them."},{"name":"writ_set_schedule","description":"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"},{"name":"writ_expose_workflow_api","description":"Publishes a saved workflow as a REST endpoint (a POST URL that waits and returns its JSON). Repeated calls reuse it."},{"name":"writ_crawl_site","description":"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"},{"name":"writ_saved_crawls","description":"Lists the crawls saved for re-running, with their scope."},{"name":"writ_update_saved_crawl","description":"Inspects or changes a saved crawl's settings in place."},{"name":"writ_run_saved_crawl","description":"Runs a saved crawl; max_age returns its recent data at no cost instead of re-crawling."},{"name":"writ_saved_crawl_data","description":"Reads the data a saved crawl collected on its last completed run, without crawling."},{"name":"writ_scrape","description":"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 markd"},{"name":"writ_crawl_status","description":"Status of a crawl by crawl_id; wait=true holds up to 75 s and returns the collected rows when it converges."},{"name":"writ_crawl_files","description":"The original files (PDFs, office documents, images, CSVs) a crawl captured, with short-lived download URLs."},{"name":"writ_create_automation","description":"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 o"},{"name":"writ_list_webhooks","description":"The account's inbound webhook URLs and the automations they fire."},{"name":"writ_create_monitor","description":"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 "},{"name":"writ_wire_monitor","description":"Connects a monitor's change_detected event to an action: action='notify' (channels and recipients the account has configured), 'workflow' (runs a saved workflow"},{"name":"writ_help","description":"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>'"},{"name":"writ_browser_live_view","description":"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"}],"toolCount":41,"toolsHash":"10cdf24d8fab1a1cdce548b99045c010c8e3f7704d2f9347c6dc74e0e7f75c33","serverName":"Writ Cloud","capabilities":["tools","resources"],"serverVersion":"1.0.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-25T09:28:25.321Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":310,"error":null,"detail":{"tools":[{"name":"writ_browser_use","description":"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 "},{"name":"writ_record_website","description":"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"},{"name":"writ_website_to_api","description":"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 "},{"name":"writ_discovery_status","description":"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. "},{"name":"writ_browser_act","description":"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, cl"},{"name":"writ_browser_context","description":"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"},{"name":"writ_browser_network","description":"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 "},{"name":"writ_browser_compose","description":"Authors the workflow in an open session beyond a recording: named API functions (define_function with a `flow`, preferred in an API build, or a captured call's "},{"name":"writ_browser_save","description":"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 functio"},{"name":"writ_browser_ask_user","description":"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 typ"},{"name":"writ_browser_cancel","description":"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 n"},{"name":"writ_browser_sessions","description":"Lists the account's open cloud browser sessions (each resumable by its session_id)."},{"name":"writ_personas","description":"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 f"},{"name":"writ_payment","description":"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"},{"name":"writ_devices","description":"The user's linked Writ desktops: list, use (scope this connection to one: runs, browsers, personas and monitors then target it), clear, monitors, datasets."},{"name":"writ_list_workflows","description":"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 "},{"name":"writ_run_workflow","description":"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_nam"},{"name":"writ_update_workflow","description":"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 Cl"},{"name":"writ_create_http_extraction","description":"Drafts or revises a multi-request browserless HTTP extraction (loops, GraphQL, cursor pagination) from captured requests and a plain-language goal. Every option"},{"name":"writ_diagnose_http_workflow","description":"Explains why a saved workflow's run returned nothing or failed: HTTP-lane readiness and, with task_id, the run's requests and responses."},{"name":"writ_pin_workflow_tool","description":"Pins (or unpins) a saved workflow as its own run_<name> tool on this server."},{"name":"writ_workflow_data","description":"Reads a saved workflow's collected data as a table: q filters, run_id picks one run, refs returns full records."},{"name":"writ_search_data","description":"Searches everything the account's workflows already collected for a term, without running anything."},{"name":"writ_export_data","description":"Exports a workflow's full data table as CSV or JSON."},{"name":"writ_workflow_runs","description":"Run history (status, timing, errors, venue) of one workflow or all of them."},{"name":"writ_set_schedule","description":"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"},{"name":"writ_expose_workflow_api","description":"Publishes a saved workflow as a REST endpoint (a POST URL that waits and returns its JSON). Repeated calls reuse it."},{"name":"writ_crawl_site","description":"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"},{"name":"writ_saved_crawls","description":"Lists the crawls saved for re-running, with their scope."},{"name":"writ_update_saved_crawl","description":"Inspects or changes a saved crawl's settings in place."},{"name":"writ_run_saved_crawl","description":"Runs a saved crawl; max_age returns its recent data at no cost instead of re-crawling."},{"name":"writ_saved_crawl_data","description":"Reads the data a saved crawl collected on its last completed run, without crawling."},{"name":"writ_scrape","description":"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 markd"},{"name":"writ_crawl_status","description":"Status of a crawl by crawl_id; wait=true holds up to 75 s and returns the collected rows when it converges."},{"name":"writ_crawl_files","description":"The original files (PDFs, office documents, images, CSVs) a crawl captured, with short-lived download URLs."},{"name":"writ_create_automation","description":"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 o"},{"name":"writ_list_webhooks","description":"The account's inbound webhook URLs and the automations they fire."},{"name":"writ_create_monitor","description":"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 "},{"name":"writ_wire_monitor","description":"Connects a monitor's change_detected event to an action: action='notify' (channels and recipients the account has configured), 'workflow' (runs a saved workflow"},{"name":"writ_help","description":"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>'"},{"name":"writ_browser_live_view","description":"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"}],"toolCount":41,"toolsHash":"10cdf24d8fab1a1cdce548b99045c010c8e3f7704d2f9347c6dc74e0e7f75c33","serverName":"Writ Cloud","capabilities":["tools","resources"],"serverVersion":"1.0.0","protocolVersion":"2025-06-18"}}],"tools":[{"name":"writ_browser_use","description":"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 "},{"name":"writ_record_website","description":"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"},{"name":"writ_website_to_api","description":"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 "},{"name":"writ_discovery_status","description":"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. "},{"name":"writ_browser_act","description":"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, cl"},{"name":"writ_browser_context","description":"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"},{"name":"writ_browser_network","description":"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 "},{"name":"writ_browser_compose","description":"Authors the workflow in an open session beyond a recording: named API functions (define_function with a `flow`, preferred in an API build, or a captured call's "},{"name":"writ_browser_save","description":"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 functio"},{"name":"writ_browser_ask_user","description":"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 typ"},{"name":"writ_browser_cancel","description":"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 n"},{"name":"writ_browser_sessions","description":"Lists the account's open cloud browser sessions (each resumable by its session_id)."},{"name":"writ_personas","description":"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 f"},{"name":"writ_payment","description":"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"},{"name":"writ_devices","description":"The user's linked Writ desktops: list, use (scope this connection to one: runs, browsers, personas and monitors then target it), clear, monitors, datasets."},{"name":"writ_list_workflows","description":"Lists the workflows saved in the Writ account; each runs on demand without live browsing. Returns id, name, declared inputs (with `input_rules`: the values and "},{"name":"writ_run_workflow","description":"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_nam"},{"name":"writ_update_workflow","description":"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 Cl"},{"name":"writ_create_http_extraction","description":"Drafts or revises a multi-request browserless HTTP extraction (loops, GraphQL, cursor pagination) from captured requests and a plain-language goal. Every option"},{"name":"writ_diagnose_http_workflow","description":"Explains why a saved workflow's run returned nothing or failed: HTTP-lane readiness and, with task_id, the run's requests and responses."},{"name":"writ_pin_workflow_tool","description":"Pins (or unpins) a saved workflow as its own run_<name> tool on this server."},{"name":"writ_workflow_data","description":"Reads a saved workflow's collected data as a table: q filters, run_id picks one run, refs returns full records."},{"name":"writ_search_data","description":"Searches everything the account's workflows already collected for a term, without running anything."},{"name":"writ_export_data","description":"Exports a workflow's full data table as CSV or JSON."},{"name":"writ_workflow_runs","description":"Run history (status, timing, errors, venue) of one workflow or all of them."},{"name":"writ_set_schedule","description":"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"},{"name":"writ_expose_workflow_api","description":"Publishes a saved workflow as a REST endpoint (a POST URL that waits and returns its JSON). Repeated calls reuse it."},{"name":"writ_crawl_site","description":"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"},{"name":"writ_saved_crawls","description":"Lists the crawls saved for re-running, with their scope."},{"name":"writ_update_saved_crawl","description":"Inspects or changes a saved crawl's settings in place."},{"name":"writ_run_saved_crawl","description":"Runs a saved crawl; max_age returns its recent data at no cost instead of re-crawling."},{"name":"writ_saved_crawl_data","description":"Reads the data a saved crawl collected on its last completed run, without crawling."},{"name":"writ_scrape","description":"READ PAGES NOW, no browser session: one page (url), up to 20 pages in parallel (urls, on one site or several), or a listing plus its top N item pages (url + top"},{"name":"writ_crawl_status","description":"Status of a crawl by crawl_id; wait=true holds up to 75 s and returns the collected rows when it converges."},{"name":"writ_crawl_files","description":"The original files (PDFs, office documents, images, CSVs) a crawl captured, with short-lived download URLs."},{"name":"writ_create_automation","description":"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 o"},{"name":"writ_list_webhooks","description":"The account's inbound webhook URLs and the automations they fire."},{"name":"writ_create_monitor","description":"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 "},{"name":"writ_wire_monitor","description":"Connects a monitor's change_detected event to an action: action='notify' (channels and recipients the account has configured), 'workflow' (runs a saved workflow"},{"name":"writ_help","description":"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>'"},{"name":"writ_browser_live_view","description":"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"}],"package":null,"toolSurface":{"id":"ts_9ak5w9t86ekk","endpointId":"ep_ketukpwtj48v","hash":"fa33f544f78362dd881a19db2322819fd26887527201b42e1f7ff5db214e0033","toolCount":41,"serverName":"Writ Cloud","serverVersion":"1.0.0","protocolVersion":"2025-06-18","firstSeenAt":"2026-10-26T20:29:55.006Z","lastSeenAt":"2026-10-28T02:29:25.354Z","observations":5,"toolNames":["writ_browser_use","writ_record_website","writ_website_to_api","writ_discovery_status","writ_browser_act","writ_browser_context","writ_browser_network","writ_browser_compose","writ_browser_save","writ_browser_ask_user","writ_browser_cancel","writ_browser_sessions","writ_personas","writ_payment","writ_devices","writ_list_workflows","writ_run_workflow","writ_update_workflow","writ_create_http_extraction","writ_diagnose_http_workflow","writ_pin_workflow_tool","writ_workflow_data","writ_search_data","writ_export_data","writ_workflow_runs","writ_set_schedule","writ_expose_workflow_api","writ_crawl_site","writ_saved_crawls","writ_update_saved_crawl","writ_run_saved_crawl","writ_saved_crawl_data","writ_scrape","writ_crawl_status","writ_crawl_files","writ_create_automation","writ_list_webhooks","writ_create_monitor","writ_wire_monitor","writ_help","writ_browser_live_view"],"distinctSurfaces":7},"endpointFacts":[{"id":"ep_ketukpwtj48v","url":"https://api.usewrit.app/mcp","type":"mcp_streamable_http","factsCheckedAt":"2026-10-26T13:27:32.534Z","auth":{"observedAt":"2026-10-26T13:27:32.795Z","authRequired":false,"scheme":null,"resourceMetadata":{"url":"https://api.usewrit.app/.well-known/oauth-protected-resource/mcp","resource":"https://api.usewrit.app/mcp","authorizationServers":["https://api.usewrit.app"],"scopesSupported":["mcp:read","mcp:execute","workflows:read","workflows:write","workflows:execute","runs:read","datasets:read","crawl:read","crawl:execute","scrape:execute","personas:read","personas:write","devices:read","devices:write","monitors:read","monitors:write","triggers:read","triggers:write","marketplace:read"]},"authorizationServer":{"url":"https://api.usewrit.app/.well-known/oauth-authorization-server","issuer":"https://api.usewrit.app","grantTypesSupported":["authorization_code","refresh_token"],"codeChallengeMethodsSupported":["S256"],"tokenEndpointAuthMethodsSupported":["client_secret_post","client_secret_basic","none"],"dynamicClientRegistration":true,"dpopSigningAlgValuesSupported":[],"clientIdMetadataDocumentSupported":null},"conformance":{"dpop":false,"rfc8414":true,"rfc9728":true,"pkceS256":true,"clientIdMetadataDocument":false,"dynamicClientRegistration":true}},"tls":{"observedAt":"2026-10-26T13:27:32.821Z","protocol":"TLSv1.3","chainValid":true,"chainError":null,"hostMatches":true,"subject":"usewrit.app","issuer":{"commonName":"WE1","organization":"Google Trust Services"},"validFrom":"2026-10-05T22:35:11.000Z","validTo":"2027-01-03T23:33:46.000Z","daysToExpiry":67,"sanCount":2,"fingerprint256":"56:E2:FF:A0:E3:9D:0B:E0:69:06:E4:5C:C4:95:D7:D5:9B:94:A4:F6:7E:78:11:33:95:3B:2C:8F:7D:3B:E5:DB"}}]},"verification":{"claimed":false,"claimedAt":null,"proofs":[]},"provenance":{"sources":[{"source":"mcp_registry","key":"app.usewrit/writ-cloud","url":"https://registry.modelcontextprotocol.io/v0/servers/app.usewrit%2Fwrit-cloud","firstSeenAt":"2026-10-11T21:21:20.956Z","fetchedAt":"2026-10-28T07:20:45.319Z","normalizedAt":"2026-10-28T07:20:45.319Z"}]},"firstSeenAt":"2026-10-11T21:21:20.956Z","updatedAt":"2026-10-28T02:33:01.026Z"}