# RoastWeb for AI agents RoastWeb roasts a website: scores for speed, SEO, accessibility, best practices, mobile and AI search readiness (GEO, AEO, LLMO, SXO), every problem with its fix, and a fix brief written for a coding agent. ## Price Every roast an agent starts costs $1 (1 credit), paid up front. Nothing is free for agents. Reading and comparing roasts you already paid for costs nothing. ## Pay with an API key Make a key at https://roastweb.com/dashboard/api-keys and buy credits at https://roastweb.com/pricing. Each roast spends 1 credit. curl -X POST https://roastweb.com/api/v1/roasts \ -H "Authorization: Bearer rw_live_..." \ -H "Content-Type: application/json" \ -H "Idempotency-Key: my-site-check-1" \ -d '{"url": "https://example.com"}' The answer has the roast id, a token and a statusUrl. A roast takes about 30 to 45 seconds; poll the statusUrl every 10 seconds until status is "done". Send the same Idempotency-Key again and you get the first roast back without paying twice. ## Connect over MCP MCP server: https://roastweb.com/mcp (Streamable HTTP, no login to connect). In Claude Code, with a key: claude mcp add --transport http roastweb https://roastweb.com/mcp --header "Authorization: Bearer rw_live_..." Without a key (each roast_site answer is a Stripe link for the person): claude mcp add --transport http roastweb https://roastweb.com/mcp Tools: roast_site, check_roast, compare_roasts, list_roasts, publish_roast, get_prices. ## No key? Have the person pay curl -X POST https://roastweb.com/api/v1/roasts/card \ -H "Content-Type: application/json" \ -d '{"url": "https://example.com"}' The answer is a 402 with checkoutUrl: give it to the person. They pay $5 for 5 roasts on Stripe (send "pack" for a bigger pack), and the roast starts once they do. Poll statusUrl: once paid, it returns the roast and, until its first use, a new API key holding the other credits. To top up a key: POST https://roastweb.com/api/v1/credits with the key. The answer is a Stripe link for the person. ## Pay with USDC (x402), no account An agent with a USDC wallet on Base pays $1 a roast with x402. A call without a payment gets a 402 with the terms: curl -i -X POST https://roastweb.com/api/v1/roasts/x402 \ -H "Content-Type: application/json" \ -d '{"url": "https://example.com"}' The PAYMENT-REQUIRED header holds the terms: exactly $1 (1000000 units) of USDC on Base (eip155:8453), signed for 600 seconds. An x402 client signs them and sends the same request again with PAYMENT-SIGNATURE. The answer is a 202 with the roast id, its token and statusUrl; check statusUrl until the roast is done. The USDC moves only when the roast is done. If the roast fails, the payment is never collected. The official x402 client's default limit is $1 a payment, and a roast is exactly $1. ## Pay a pack by card with a token An agent whose app can grant a Stripe shared payment token (spt_...) for RoastWeb's seller profile pays a pack itself: curl -X POST https://roastweb.com/api/v1/roasts/card \ -H "Content-Type: application/json" \ -d '{"url": "https://example.com", "sharedPaymentToken": "spt_...", "pack": "5"}' One charge for the pack, keyed by the token, so the same token is never charged twice. The answer is a 201 with the roast and a new API key holding the other credits; with an API key, the pack lands on that key's account. A card that asks the person to confirm (3-D Secure) is not charged: the answer has a checkoutUrl for the person instead. Top up a key the same way: POST https://roastweb.com/api/v1/credits with sharedPaymentToken. The seller profile is in https://roastweb.com/api/v1/prices. ## What a done roast has - scores: overall, speed, seo, accessibility, bestPractices, mobile, aiSearch { geo, aeo, llmo, sxo } - problems: id (stable across roasts of the same site), category, severity, title, where (when the check knows), why, fix, snippet - fixPrompt: a markdown brief a coding agent can follow - reportUrl: a private link to the full report for the person - change: when you roasted the same site before, the score change and which problems are fixed or new Fix the site, roast it again, and read change to see what improved. Each new roast is $1. ## Statuses queued, running, done, failed (nothing was charged), refunded (the roast failed and the credit is back), payment_failed (the USDC payment did not go through, so the report is held; nothing was charged). ## Limits Two roasts running at once per account or wallet, and 100 roasts in 24 hours. Only public websites: a site on localhost needs a deployed preview URL. ## Refunds Before anything is charged, RoastWeb checks that the URL is a public web page that answers. If a roast still fails after you paid, or Google PageSpeed doesn't answer, the credit goes back by itself. ## Privacy Agent roasts are private. Only the key that paid, or the roast's token, opens one. POST https://roastweb.com/api/v1/roasts/{id}/publish makes it a public page. ## More - JSON API: https://roastweb.com/openapi.json - Prices: https://roastweb.com/api/v1/prices - Docs page: https://roastweb.com/developers - Contact: https://roastweb.com/contact