Interface manual
Plainport exposes the same catalog through current stateless MCP and versioned REST. Successful REST responses use { ok, data, meta }; failures use { ok, error, meta }.
REST
curl -X POST https://plainport.exportitnow.workers.dev/api/v1/fetch-markdown \
-H "content-type: application/json" \
-d '{"url":"https://example.com"}'MCP
Connect a 2026-07-28 Streamable HTTP client to https://plainport.exportitnow.workers.dev/mcp. The transport is stateless: there is no initialization handshake or session identifier.
POST https://plainport.exportitnow.workers.dev/mcp MCP-Protocol-Version: 2026-07-28 Mcp-Method: tools/list Accept: application/json, text/event-stream
Catalog and limits
| MCP tool | REST endpoint | Primary ceiling |
|---|---|---|
fetch_markdown | POST /api/v1/fetch-markdown | 8 s, 5 redirects, 768 KiB remote body, 150k output characters |
inspect_url | POST /api/v1/inspect-url | 8 s, 5 redirects, 768 KiB only for GET |
extract_metadata | POST /api/v1/extract-metadata | 8 s, 5 redirects, 768 KiB, 50 JSON-LD blocks |
extract_links | POST /api/v1/extract-links | 8 s, 5 redirects, 768 KiB, 500 links |
parse_feed | POST /api/v1/parse-feed | 8 s, 5 redirects, 768 KiB, 100 items |
parse_sitemap | POST /api/v1/parse-sitemap | 8 s, 5 redirects, 768 KiB, 1,000 entries |
inspect_robots | POST /api/v1/inspect-robots | 8 s, 5 redirects, 768 KiB, 50 sitemap declarations |
html_to_markdown | POST /api/v1/html-to-markdown | 200k input characters, 150k output characters |
diff_text | POST /api/v1/diff-text | 200k combined characters, 2,000 result parts, 8 ms diff budget |
validate_json_schema | POST /api/v1/validate-json-schema | 512 KiB request, 40 nesting levels, 100 returned errors |
Per-IP rate limits are 30 fetch-backed calls/minute and 120 local transformations/minute. They apply equally to REST and MCP calls.
Errors
Errors include a stable code, a concise message, and a retryable flag. Upstream 5xx failures and timeouts are retryable; invalid inputs, blocked URLs, and unsupported media are not. HTTP 429 includes Retry-After: 60.
{
"ok": false,
"error": {
"code": "FETCH_TIMEOUT",
"message": "The remote server did not respond within 8000 ms.",
"retryable": true
},
"meta": {
"request_id": "…",
"duration_ms": 8002
}
}Security and privacy
Machine discovery
OpenAPI 3.1.1 · llms.txt · llms-full.txt · MCP Registry manifest · MCP Server Card · sitemap.xml