Connect 8 clients · secrets stay placeholders JSON (mcpServers) Claude Code Codex OpenCode Cursor VS Code Gemini CLI Goose
{
"mcpServers": {
"ocr": {
"type": "http",
"url": "https://mcp.pennyocr.com",
"headers": {
"Authorization": "Bearer ${OCR_TOKEN}"
}
}
}
}claude mcp add --transport http ocr https://mcp.pennyocr.com --header "Authorization: Bearer ${OCR_TOKEN}"[mcp_servers.ocr]
url = "https://mcp.pennyocr.com"
bearer_token_env_var = "OCR_TOKEN"
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"ocr": {
"type": "remote",
"url": "https://mcp.pennyocr.com",
"enabled": true,
"headers": {
"Authorization": "Bearer {env:OCR_TOKEN}"
}
}
}
}{
"mcpServers": {
"ocr": {
"type": "http",
"url": "https://mcp.pennyocr.com",
"headers": {
"Authorization": "Bearer ${OCR_TOKEN}"
}
}
},
"deeplink": "cursor://anysphere.cursor-deeplink/mcp/install?name=ocr&config=eyJ0eXBlIjoiaHR0cCIsInVybCI6Imh0dHBzOi8vbWNwLnBlbm55b2NyLmNvbSIsImhlYWRlcnMiOnsiQXV0aG9yaXphdGlvbiI6IkJlYXJlciAke09DUl9UT0tFTn0ifX0%3D"
}{
"servers": {
"ocr": {
"type": "http",
"url": "https://mcp.pennyocr.com",
"headers": {
"Authorization": "Bearer ${OCR_TOKEN}"
}
}
}
}{
"mcpServers": {
"ocr": {
"httpUrl": "https://mcp.pennyocr.com",
"headers": {
"Authorization": "Bearer ${OCR_TOKEN}"
}
}
}
}extensions:
"ocr":
enabled: true
name: "ocr"
type: streamable_http
uri: "https://mcp.pennyocr.com"
headers:
"Authorization": "Bearer ${OCR_TOKEN}"
timeout: 300
Placeholders to fill from your own secret store: ${OCR_TOKEN}. The registry never accepts secret values.
Quality 79 / 100 good protocol 75 · weight 25
warn protocol.modernnewest supported version is 2025-11-25; 2026-07-28 not supported, older versions are deprecated until 2027-07-28
n/a protocol.statelessonly applies to 2026-07-28 servers
pass protocol.transportstreamable HTTP
n/a protocol.list_ttlonly applies to 2026-07-28 servers
authorization n/a · weight 15
n/a auth.prm, auth.as_metadata, auth.cimdno remote uses OAuth
n/a auth.secret_in_urlno templated URL
tool hygiene 71 · weight 30
pass tools.descriptionsevery tool has a description
pass tools.description_lengthdescriptions are concise
pass tools.schemasevery tool has an object input schema
fail tools.annotationsno tool declares readOnlyHint or destructiveHint, so clients cannot tell safe calls from risky ones
fail tools.directory_hintsno tool declares all four of readOnlyHint, destructiveHint, idempotentHint and openWorldHint; missing: estimate_cost (readOnlyHint, destructiveHint, idempotentHint, openWorldHint); read_document (readOnlyHint, destructiveHint, idempotentHint, openWorldHint)
pass tools.token_costabout 309 tokens to load every tool
pass tools.api_dumptools are not a one-to-one API dump
dependencies n/a · weight 15
2 tools, about 309 tokens to load them all · tool set 09b294ab63a2 · checked 2026-10-19 10:52 UTC
Tool changes No tool definition changes recorded. A server's first observation is its baseline; later probes record what changes.
Checks run on what our credential-free, read-only probes observe; tools are never called and no code audit is performed. How it is computed.
Trust 92 / 100 +repository +dns-namespace +website +reachable +uptime-98% ~updated-59d-ago
Derived from observable signals (official registry feed and our own credential-free probes); no code audit performed. How it is computed.
Official server.json {
"name": "com.pennyocr/ocr",
"$schema": "https://static.modelcontextprotocol.io/schemas/2025-09-29/server.schema.json",
"remotes": [
{
"url": "https://mcp.pennyocr.com",
"type": "streamable-http",
"headers": [
{
"name": "Authorization",
"isSecret": true,
"isRequired": true,
"description": "Bearer pk_live_... — free API key from https://pennyocr.com/dashboard/ (100 pages/month included)"
}
]
}
],
"version": "0.1.0",
"repository": {
"url": "https://github.com/imiraoui/pennyocr-mcp",
"source": "github"
},
"websiteUrl": "https://pennyocr.com/mcp/",
"description": "Read PDFs and images as markdown or text, with exact costs and hard spend caps. $0.75/1k pages."
}