The MCP server is at https://api.elisebot.dev/mcp, over Streamable HTTP. There is no anonymous MCP caller: a client
signs in with OAuth, or sends an organization’s API key.
Connect with OAuth
Add the URL to the client. In claude.ai and Claude Desktop, it is a custom connector under Settings → Connectors; in Claude Code:
claude mcp add --transport http elisebot https://api.elisebot.dev/mcpThe client opens the dashboard in the browser (Claude Code through /mcp): log in, pick the
organization, and approve. Its calls then spend that organization’s credits.
The organization’s Connected apps page lists every approved client, and any member can revoke one there. A client also loses access when the member who approved it leaves the organization.
Connect with an API key
For a client without OAuth, or a headless agent, send an organization’s API key as a Bearer token:
claude mcp add --transport http elisebot https://api.elisebot.dev/mcp \
--header "Authorization: Bearer $ELISEBOT_API_KEY"Any other client takes the URL and the header, e.g. Cursor’s mcp.json:
{"mcpServers": {"elisebot": {"url": "https://api.elisebot.dev/mcp", "headers": {"Authorization": "Bearer <key>"}}}}Tools
Each tool mirrors one endpoint and takes its body as arguments. Credits, quotas and idempotency keys are the organization’s, shared with its REST calls.
| Tool | Mirrors | Returns |
|---|---|---|
scrape |
POST /v2/scrape |
The page’s content, then its metadata as JSON. |
get_scrape |
GET /v2/scrape/{id} |
The REST status, with the document as data once completedAt is set. |
batch_scrape |
POST /v2/batch/scrape |
The REST response; idempotencyKey takes the place of the header. |
get_batch_scrape |
GET /v2/batch/scrape/{id} |
The REST status, with the package.url to download with a shell. |
cancel_batch_scrape |
DELETE /v2/batch/scrape/{id} |
The REST response. |
responseOptions.formatdefaults tomarkdownhere; REST keepshtml.- A page that failed is a normal result, its
metadata.errorCodeset, as it is a 200 on REST. - A scrape past
timeoutis a normal result too: the REST 202 body as JSON, whoseidis the scrape to read withget_scrape, which carries the document asdataoncecompletedAtis set. - A batch scrape’s package is a gzipped file, not tool output: an agent fetches
package.urlwith a shell, e.g.curl -L.
Errors
- A tool error is a result with
isErrorset, carrying the same JSON as the REST error, plusretryAfterin seconds onRATE_LIMITED. - A missing or unknown key, or a scheme other than Bearer, is an HTTP 401
UNAUTHORIZED; an unknown, expired or revoked OAuth token is a 401INVALID_ACCESS_TOKEN. Both carryWWW-Authenticate: Bearer, whoseresource_metadataleads an OAuth client to the sign-in. - The server is stateless and takes only POST:
GETandDELETE /mcpare 405METHOD_NOT_ALLOWED. A body over 16 MiB is a plain 413.
Large documents
scrape returns the whole document, up to 10 MiB, while MCP clients cap a tool’s output: Claude Code at about 25,000
tokens (MAX_MCP_OUTPUT_TOKENS raises it). scrape and get_scrape take maxLength, an MCP-only argument
that cuts the content to that many characters; the metadata then carries truncated: true and totalLength, the full
length in characters. onlyMainContent makes a page smaller too.