{"apiVersion":"v1","directorySlug":"xhr-mcp-0d556dca40","title":"xhr.dev — self-hosted anti-bot solvers","description":"self-hosted anti-bot solvers that keep working after the vendor's next update.","pageUrl":"https://www.mcpbundles.com/skills/xhr-mcp-0d556dca40","connectPath":"importable","connectAction":"import_server","catalogListing":false,"bundleSlug":null,"listingKind":"remote_mcp","kind":"provider","transportUrl":"https://mcp.xhr.dev/mcp","hostedMcpUrl":null,"toolCount":7,"toolInventoryStatus":"observed","refreshedAt":"2026-11-03T13:26:00.516172+00:00","registryName":"dev.xhr/xhr-mcp-0d556dca40","registryVersion":"2026.11.3","registryEligible":true,"tools":[{"name":"health_check","description":"Check that the xhr.dev solver is reachable and healthy. Returns {\"status\":\"ok\"}. This endpoint needs no API key, so a healthy response here alongside a 401 from any other tool means the key is missing or wrong rather than the solver being down.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","properties":{}},"title":"Solver health check","logicalName":"health_check","displayName":"Solver health check","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"solver_stats","description":"Report this deployment's own solve rate — how many challenges it has attempted and how many were accepted.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","properties":{}},"title":"Solve-rate stats","logicalName":"solver_stats","displayName":"Solve-rate stats","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"akamai_queue_metrics","description":"Inspect the Akamai solve queue (active, queued, admitted, completed, rejected, timed out). Reports on the solver box itself, and both channels share it — so a saturated queue is what akamai_sbsd_solve failing with a 503 means.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","properties":{}},"title":"Akamai queue metrics","logicalName":"akamai_queue_metrics","displayName":"Akamai queue metrics","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"datadome_solve","description":"Solve a DataDome captcha or interstitial challenge. Pass the HTML body of the 403 you just received and this parses the challenge out of it, fetches the challenge document, and solves. It does NOT return a clearance cookie — it returns a prepared submission ({url, body?, origin, referer}) that YOU must send yourself, from the same IP and proxy session you intend to browse from, because DataDome binds the resulting cookie to whichever address submitted it. Send GET when body is absent (captcha) a","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["blockedHtml","url"],"properties":{"url":{"type":"string","format":"uri"},"timeout":{"type":"integer","maximum":9007199254740991,"exclusiveMinimum":0},"blockedHtml":{"type":"string"}}},"title":"Solve a DataDome challenge","logicalName":"datadome_solve","displayName":"Solve a DataDome challenge","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"akamai_sbsd_solve","description":"Answer Akamai's SBSD channel for one document. Pass the URL and the HTML you were served; this finds the SBSD bundle in it, fetches the bundle, and returns a FIFO ledger of submission bodies. It does NOT return a cookie and it sends nothing to the target: YOU POST each submissions[i].body to submissions[i].resolvedUrl yourself, in index order, from the same client and address you got the document with — that is what puts the bm_s/bm_so cookies in YOUR jar. Rows are capacity, not a promise: if th","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["html","url"],"properties":{"url":{"type":"string","format":"uri"},"html":{"type":"string"},"timeout":{"type":"integer","maximum":9007199254740991,"exclusiveMinimum":0},"akBmTabId":{"type":"string"},"bundleSrc":{"type":"string"},"bundleSource":{"type":"string"},"cookieHeader":{"type":"string"}}},"title":"Solve an Akamai SBSD challenge","logicalName":"akamai_sbsd_solve","displayName":"Solve an Akamai SBSD challenge","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"web_fetch","description":"Fetch a URL and return its content, clearing a DataDome challenge automatically if one is in the way — the fetch, the solve, and the retry all happen server-side, so you get the page back in one call instead of doing the datadome_solve dance yourself. Use this when you just want the content of a page that might be DataDome-protected. It does NOT go through your own proxy or exit IP — the request leaves from this deployment's own address — so a target that bans by geography or ASN may see a diffe","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["url"],"properties":{"url":{"type":"string","format":"uri"},"timeout":{"type":"integer","maximum":9007199254740991,"exclusiveMinimum":0},"maxChars":{"type":"integer","maximum":9007199254740991,"exclusiveMinimum":0},"cookieHeader":{"type":"string"}}},"title":"Fetch a URL, unblocking DataDome automatically","logicalName":"web_fetch","displayName":"Fetch a URL, unblocking DataDome automatically","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"solver_info","description":"Describe this MCP deployment: which solver it is pointed at, whether it is running on your API key or the shared trial key, and which tools it does not have.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","properties":{}},"title":"About this deployment","logicalName":"solver_info","displayName":"About this deployment","annotations":{"untrustedContentHint":true,"readOnlyHint":true}}],"toolSource":"directory_preview","agentAction":"both","installLinks":[{"id":"cursor","label":"Cursor","href":"cursor://anysphere.cursor-deeplink/mcp/install?name=xhr-dev-self-hosted-anti-bot-solvers&config=eyJ1cmwiOiAiaHR0cHM6Ly9tY3AueGhyLmRldi9tY3AifQ%3D%3D"},{"id":"vscode","label":"VS Code","href":"vscode:mcp/install?%7B%22name%22%3A%22xhr-dev-self-hosted-anti-bot-solvers%22%2C%22type%22%3A%22http%22%2C%22url%22%3A%22https%3A%2F%2Fmcp.xhr.dev%2Fmcp%22%7D"},{"id":"vscode-insiders","label":"VS Code Insiders","href":"vscode-insiders:mcp/install?%7B%22name%22%3A%22xhr-dev-self-hosted-anti-bot-solvers%22%2C%22type%22%3A%22http%22%2C%22url%22%3A%22https%3A%2F%2Fmcp.xhr.dev%2Fmcp%22%7D"},{"id":"claude-web","label":"Claude.ai","href":"https://claude.ai/customize/connectors?modal=add-custom-connector&connectorName=xhr.dev+%E2%80%94+self-hosted+anti-bot+solvers&connectorUrl=https%3A%2F%2Fmcp.xhr.dev%2Fmcp"},{"id":"codex","label":"Codex","copyText":"codex mcp add \"xhr-dev-self-hosted-anti-bot-solvers\" --url \"https://mcp.xhr.dev/mcp\""},{"id":"chatgpt","label":"ChatGPT","href":"https://www.mcpbundles.com/docs/integrations/chatgpt"}],"catalogUrl":"https://www.mcpbundles.com/api/directory/v1/servers/xhr-mcp-0d556dca40","callUrl":"https://www.mcpbundles.com/api/directory/v1/servers/xhr-mcp-0d556dca40/tools/{tool}","mcpServerUrl":"https://mcp.xhr.dev/mcp","liveCatalogUrl":"https://www.mcpbundles.com/api/directory/v1/servers/xhr-mcp-0d556dca40?live=1"}