# Writ > Writ turns any website into an API your software and your AI agents can call. > Teach an agent a site once by recording it or describing it, sign in as yourself, > then call the result over REST, over MCP, or on a schedule. Full text of these docs: https://usewrit.app/llms-full.txt ## Start - [Overview](https://usewrit.app/docs): Writ documentation: teach an agent a website once, sign in as yourself, then call the result from your software, from your AI, or on a schedule. One surface, organized by task. - [Quickstart](https://usewrit.app/docs/quickstart): Core concepts and your first calls on both surfaces: run a workflow locally through an SDK against writ-agentd, then publish it and POST /v1/{slug}/{path} on Writ Cloud with a consumer key. - [Where it runs](https://usewrit.app/docs/where-it-runs): Writ workflows run on your own machine, with Writ Desktop, or on the Writ Cloud fleet. What changes between them: cost (your machine is 0 credits; cloud meters included credits first), availability, network reach, 2FA behavior and which capabilities are cloud-only. ## Teach the agent - [Record a workflow](https://usewrit.app/docs/workflows): The workflow object, recording vs describing (Scribe), the step vocabulary, inputs and outputs, the run API with wait and timeout, the eight run statuses, per-plan run-duration limits, and opt-in AI repair. - [Scribe](https://usewrit.app/docs/scribe): Scribe is Writ’s own AI: describe the job and it drives a real browser to build it. Approval pauses, the tool set, cloud vs desktop, and what it will not do. - [Scribe and AI sessions](https://usewrit.app/docs/ai-sessions): An AI session drives a real browser toward a goal and records the steps into a reusable workflow. Request fields, the five statuses, per-session telemetry, the API surface, the secrets contract, the single-shot AI-assist helpers, and AI billing in credits. - [Step reference](https://usewrit.app/docs/workflows/steps): Every step type a Writ workflow can contain, grouped by family, with the JSON type value each one uses and a one-line description. ## Sign in - [Personas, secrets and agents](https://usewrit.app/docs/resources): Sign in once and let Writ act on your own accounts: personas per site, TOTP codes minted at run time, and a secrets vault the API never reads back. ## Call it from your software - [Authentication](https://usewrit.app/docs/authentication): How Writ authenticates every caller: wt_ API keys with resource:action scopes, wto_ OAuth tokens (PKCE, dynamic registration), csk_ consumer keys, SCIM tokens and web sessions — plus account security and secret placeholders. - [REST API reference](https://usewrit.app/docs/api): Every REST operation Writ ships: the local agent daemon writ-agentd at 127.0.0.1:8131 — workflows, runs, monitors, crawl, datasets, keys — plus the Writ Cloud surface at api.usewrit.app. Token families, error codes, run semantics. - [SDKs](https://usewrit.app/docs/sdks): The four Writ SDKs — TypeScript, Python, Go and Rust — open source at github.com/usewrit/writ-sdks. One client drives the local agent and Writ Cloud; discovery, runs, monitors, crawl, datasets and typed errors included. - [Managed endpoints](https://usewrit.app/docs/managed-endpoints): The /v1/{slug}/{path} gateway: publish a workflow as a REST route — synchronous by default with async opt-in, three response envelopes, per-key rate limits and your plan’s calls per minute in one fixed gate order. - [Custom domains](https://usewrit.app/docs/custom-domains): Serve your Writ endpoints from api.yourcompany.com: verify the domain with DNS records, TLS is provisioned automatically, and the /v1/{slug}/{path} routing and your callers’ consumer keys stay exactly the same. - [Consumer keys](https://usewrit.app/docs/consumer-keys): Distribute access to your published endpoints with csk_ consumer keys: per-key rate limits and monthly quotas, endpoint restrictions, suspend and revoke, and rotation with a grace window. ## Call it from your AI - [MCP server](https://usewrit.app/docs/mcp): Connect any MCP client to Writ: Streamable HTTP at POST /mcp (JSON-RPC 2.0, protocol 2025-03-26), thirty built-in tools plus a run tool for every workflow you pin, and published per-workflow servers at /mcp/{slug} with OAuth. - [OpenAI-compatible endpoint](https://usewrit.app/docs/streaming): Keep a workflow-backed browser open: setup runs once, handlers replay step ranges or script functions, and an OpenAI-compatible surface exposes them as tools. ## Watch and act - [Monitors](https://usewrit.app/docs/monitors): Content and uptime check types, selector/html/visual watching with extractors, per-plan cadence floors the API rejects below (402 interval_too_short), the trigger pipeline with its eleven condition operators, template filters, and the nine notification channels. - [Automations and webhooks](https://usewrit.app/docs/automations-webhooks): The trigger/condition/action model with its event types, inbound webhooks signed over "{timestamp}." + body with replay rejection, Bearer-authenticated custom_path doors with wait/timeout, and outbound deliveries signed over the body with bounded retries. ## Extract - [Crawl a whole site](https://usewrit.app/docs/crawl): Crawl a whole site with Writ: scope it, save it, call it again. Freshness contract, document extraction with OCR, per-page pricing and plan limits. - [Datasets, storage and files](https://usewrit.app/docs/storage): Where run output lands and how to get it back: datasets, one queryable table per workflow, search and export, retention windows, and the file store. ## Run it somewhere - [Writ Desktop](https://usewrit.app/docs/desktop): Writ Desktop records a workflow in a real browser and runs it on your own machine: bundled engine, local MCP server, app lock, persona 2FA, update channels. - [Your own machines](https://usewrit.app/docs/agents): Link your own machine to Writ with a pairing code. One outbound connection, no inbound ports, no public IP — then run workflows, crawl and monitors on it. - [Uplink](https://usewrit.app/docs/uplink): Reach a system with no API and no public address: your agent runs inside the network on an outbound connection, behind one published endpoint. ## Operate - [Notification channels](https://usewrit.app/docs/notifications): Nine channels for monitor and automation alerts — email, Slack, Discord, Telegram, SMS, WhatsApp, Signal, Pushover, webhook — plus your platform preferences. - [n8n, Zapier and Make](https://usewrit.app/docs/integrations): There is no first-party Writ node, app or module. Three generic mechanisms connect it instead: an HTTP request, OAuth 2.0 with PKCE, and a signed webhook. - [Marketplace](https://usewrit.app/docs/marketplace): Install a Writ marketplace listing, bind your own logins to it, and run it on your own account. Every listing is free, and publishing shares a free recipe. - [Account and team](https://usewrit.app/docs/users-teams): Account, roles and access for a Writ organization: owner, admin and member roles, SSO with domain verification, SCIM provisioning, and notification preferences. - [Billing and usage](https://usewrit.app/docs/billing-wallet): How Writ bills: each plan includes one monthly allowance of credits (1 credit = $0.001), larger than its price on paid plans, that pays for every cloud call, wall, monitor check, crawled page, residential megabyte and AI token. Free adds a one-time 1,000-credit grant at signup. A call Writ could not complete is free, a prepaid balance covers anything past the allowance at the same rates, and local runs are free.