Calls without X-API-Key need no key. Calls with it need a paid plan — get a key.
Get an API key
Free tier, no form to fill in. Signing in shares your email address with us — we
store it to create your key and to recognise you if you sign in with another
provider. See our Privacy Policy and
Terms.
openapi: 3.2.0
info:
title: Fetchgate MCP API
version: 0.1.0
summary: Web-content API and x402 digital-goods storefront for AI agents.
description: 'Fetch clean Markdown or structured metadata from any URL, server-side, with scripts/nav/ad boilerplate stripped out. Also a machine-payable storefront: GET /v1/products for the catalog, GET /v1/buy/:id to pay per product via x402 (USDC on Base) and receive a signed download URL.'
x-guidance: 'Two independent surfaces. (1) Web reader: GET /v1/read?url=... for Markdown, GET /v1/meta?url=... for structured metadata — free up to 30 calls/day/IP, then $0.002 (/v1/read) or $0.001 (/v1/meta) per call via x402 v2 (send a PAYMENT-SIGNATURE header after receiving a 402; legacy X-PAYMENT is also accepted). (2) Digital-goods store: GET /v1/products lists the catalog (no payment); GET /v1/buy/:id with a real id from that catalog always requires payment — send PAYMENT-SIGNATURE to get a 402 challenge, pay it, and the 200 response carries a time-limited signed downloadUrl to fetch the file from. Everything is also reachable as MCP tools at POST /mcp (read_url, get_metadata, scan_for_prompt_injection, search_x402_services, check_x402_endpoint, check_base_token, list_products, get_purchase_info, get_agent_census, scan_mcp_server).'
contact:
email: support@fetchgate.dev
servers:
- url: https://fetchgate.dev
description: Current host
tags:
- name: MCP
paths:
/mcp:
post:
operationId: mcpJsonRpc
summary: Model Context Protocol (MCP) server — Streamable HTTP transport (JSON-RPC 2.0)
description: 'A single JSON-RPC 2.0 endpoint implementing MCP''s Streamable HTTP transport: `initialize`, `tools/list`, and `tools/call`. Exposes ten tools — `read_url` and `get_metadata` (wrapping /v1/read and /v1/meta, same free-tier limit and x402 pricing), `scan_for_prompt_injection`, `search_x402_services` and `check_x402_endpoint` (wrapping /v1/scan and /v1/x402/*), `list_products` (wrapping /v1/products), and `get_purchase_info` (explains the /v1/buy/:id x402 purchase flow for a product). Send `MCP-Protocol-Version: 2025-06-18` on requests after `initialize`. Responses are always a single `application/json` object (no SSE stream). See /llms.txt for a plain-language summary.'
security: []
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
jsonrpc:
type: string
enum:
- '2.0'
id:
type:
- string
- number
- 'null'
method:
type: string
enum:
- initialize
- ping
- tools/list
- tools/call
params:
type: object
required:
- jsonrpc
- method
responses:
'200':
description: JSON-RPC success or error result for a request carrying an `id`.
content:
application/json:
schema:
type: object
'202':
description: Accepted — the body was a JSON-RPC notification or response (no `id`), so there is no reply.
'400':
description: Malformed JSON, a non-JSON-RPC body, or an unsupported MCP-Protocol-Version.
content:
application/json:
schema:
type: object
tags:
- MCP
get:
operationId: mcpSseNotOffered
summary: Always 405 — this server has no server-initiated SSE stream to open
security: []
responses:
'405':
description: Method Not Allowed. Use POST for JSON-RPC requests.
tags:
- MCP
components:
securitySchemes:
bearerAuth:
type: http
scheme: bearer
description: 'Optional API key for authenticated/paid access. TODO: pay-per-request via x402 is planned as an alternative to a pre-provisioned key.'