Skip to content

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.

.mcp.json (Claude Code)
{
  "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
Authorization: Bearer sc_your_key
Ask your agent
Scrape https://example.com

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

Claude Code
/plugin marketplace add owe-br/plugins
/plugin install scrapa@owe-br

Read the plugin's install guide

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

Open Keys in the console

An agent without a browser

Terminal
curl -X POST https://api.scrapa.app/oauth/device_authorization \
  -d client_id=scrapa-agent

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

Read how AI-app data is handled

Choose where the tools read from

mcp.json
"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.

Acceptable use

What a tool answers

a tool result
{
  "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.