MCP
Give your AI app scrapa's tools to scrape pages, search the web and run browser sessions. Sign in with the account whose credits it should use.
Connect over HTTP
Server: https://api.scrapa.app/mcp. Use Streamable HTTP, not the older HTTP+SSE transport. In an OAuth-capable client, add this URL, sign in to scrapa and approve the account shown. The config below is for Claude Code; other clients may use a different format.
{
"mcpServers": {
"scrapa": {
"type": "http",
"url": "https://api.scrapa.app/mcp"
}
}
}If your client accepts headers instead of OAuth, create a separate sc_ key in the console and set this header in its connection settings. Keep it out of prompts, URLs and shared config files.
Authorization: Bearer sc_your_keyScrape https://example.comThe agent returns the page as markdown and shows what the call cost.
Install the scrapa plugin
The plugin includes the MCP connection and instructions for using scrapa. Install it in Claude Code, then follow the sign-in prompt.
/plugin marketplace add owe-br/plugins
/plugin install scrapa@owe-brWhat you allow
This connection is not read-only. It can scrape and map sites, search the web, create and cancel batches, open and close browser sessions and read usage. It acts on your account and can spend its credits. There are no per-tool permissions. Ask your agent to quote the work and check get_usage before a large run. A session keeps running until it expires or you close it, even after you disconnect the client.
Each connection creates a named key on the console's Keys page. Revoke it there to stop access. Calls use the same credits and limits as the REST API. Connecting does not buy anything or change your plan.
An agent without a browser
curl -X POST https://api.scrapa.app/oauth/device_authorization \
-d client_id=scrapa-agentStart the device flow with client_id=scrapa-agent. Show the person verification_uri_complete and user_code, and wait for them to approve. Poll the token endpoint no faster than the returned interval; handle authorization_pending and slow_down. Device codes expire after 10 minutes. Never ask for their password.
Choose where the tools read from
"url": "https://api.scrapa.app/mcp?country=br&city=curitiba"Add `country` to the address, and a `state` or `city` inside it if you need one. Every tool that reads the web leaves from that place, unless the agent names its own country. Search takes only the country. An address we cannot read, like `country=brazil`, is refused when the client connects, not on every call.
The tools
One tool per capability, with the same validation and the same refusals as the REST call it mirrors.
Loading the tools…
When a connection fails
A 401 means the key is missing, invalid or revoked. Sign in again, or replace the key in the client. If OAuth approval says the account has no room for another key, revoke an unused one in Keys and reconnect.
A 402 or 429 names the plan limit or quota that stopped the call. Read the message before retrying: some limits need more credits, others clear at the time shown. MCP uses the same limits as REST.
SSRF_DENIED or AUP_DENIED means the URL is not allowed. Repeating the same call will not help. Change the URL and read the acceptable-use guide. A blocked page is not proof that its content does not exist.
What a tool answers
{
"data": { "url": "https://example.com", "engine": "fetch", "markdown": "# Example…" },
"meta": { "cost": 1, "creditsRemaining": 987, "requestId": "0f3c…" }
}The same envelope the REST call answers, so an agent deciding whether to spend another credit can see the cost and the balance. A screenshot is the one difference: it comes back as a PNG image beside the JSON, not as base64 inside `data`, so the model can see the page. A refusal comes back as its code, not as a collapsed message.