https://pagefetch.openkrill.appEmbed Verified README Badge (Free): [](https://assay.agentdiet.dev/?inspect=https://pagefetch.openkrill.app)
Canonical SHA-256 Schema Lock: sha256:7d90cdf5dc946.. → sha256:3cf9fdf9c494e..
| MCP Tool Name | Current TDQS | Detected Glama Rubric Deductions (Behavior / Conciseness / Parameters / Usage / Schema) |
|---|---|---|
fetch_page | 3.05/5.0 (61) | Parameters 3/5: no cross-param interaction prose, Behavior 3/5: no side-effect/quota disclosure, Missing MCP annotations.title / safety hints |
extract_page_json | 3.7/5.0 (74) | Behavior 3/5: no side-effect/quota disclosure, Missing MCP annotations.title / safety hints |
submit_feedback | 3.7/5.0 (74) | Usage Guidelines 3/5: no sibling routing, Missing MCP annotations.title / safety hints |
get_feedback_reply | 3.05/5.0 (61) | Parameters 3/5: no cross-param interaction prose, Behavior 3/5: no side-effect/quota disclosure, Missing MCP annotations.title / safety hints |
{
"tool_1_before": {
"name": "fetch_page",
"title": "Fetch a web page as Markdown",
"description": "Read one public web page and return its main content as clean Markdown: headings, paragraphs, lists, quotes, code blocks, tables and absolute links, without menus, footers, scripts or cookie banners. Also returns the title, description, language, canonical address and up to 100 links from the content. robots.txt is checked first and a disallowed page is skipped with the reason. It never signs in, passes a paywall, solves a CAPTCHA or runs page scripts. Pass max_chars for more than 20000 characters.",
"inputSchema": {
"type": "object",
"properties": {
"url": {
"type": "string",
"minLength": 1,
"maxLength": 400,
"description": "Full address of one public web page, such as \"https://example.com/docs/intro\". http is upgraded to https."
},
"max_chars": {
"type": "integer",
"minimum": 1000,
"description": "Longest Markdown to return, cut at a block end. Default 20000, most 100000: a larger value returns 100000 with a note."
},
"links": {
"type": "boolean",
"description": "Set false to leave out the link list. Default true: up to 100 distinct links from the main content."
}
},
"required": [
"url"
],
"additionalProperties": false,
"examples": [
{
"url": "https://example.com",
"links": false
}
]
},
"outputSchema": {
"type": "object",
"properties": {
"url": {
"type": "string"
},
"status": {
"type": "string",
"enum": [
"ok",
"skipped"
]
},
"final_url": {
"type": "string"
},
"title": {
"type": "string"
},
"description": {
"type": "string"
},
"lang": {
"type": "string"
},
"canonical": {
"type": "string"
},
"content_type": {
"type": "string"
},
"markdown": {
"type": "string"
},
"chars": {
"type": "integer"
},
"truncated": {
"type": "boolean"
},
"words": {
"type": "integer"
},
"links": {
"type": "array",
"items": {
"type": "object",
"properties": {
"text": {
"type": "string"
},
"url": {
"type": "string"
},
"internal": {
"type": "boolean"
}
},
"required": [
"text",
"url",
"internal"
]
}
},
"links_total": {
"type": "integer"
},
"fetched_at": {
"type": "string"
},
"from_cache": {
"type": "boolean"
},
"notes": {
"type": "array",
"items": {
"type": "string"
}
},
"reason": {
"type": "string"
},
"message": {
"type": "string"
},
"retry_after_seconds": {
"type": "integer"
},
"untrusted_source": {
"type": "boolean"
},
"note": {
"type": "string"
},
"as_of": {
"type": "string",
"description": "ISO 8601 time the data was published by its source or fetched from it. A cached answer keeps the time of its fetch."
},
"source": {
"type": "object",
"description": "Who the data comes from, to cite and to check it against.",
"properties": {
"name": {
"type": "string"
},
"url": {
"type": "string"
}
},
"required": [
"name",
"url"
]
}
},
"required": [
"url",
"status",
"untrusted_source",
"note",
"as_of",
"source"
]
},
"annotations": {
"readOnlyHint": true,
"destructiveHint": false,
"idempotentHint": true,
"openWorldHint": true
},
"_meta": {
"openai/toolInvocation/invoking": "Fetch a web page as Markdown...",
"openai/toolInvocation/invoked": "Done: Fetch a web page as Markdown"
}
},
"tool_1_compiled_5_0_tdqs": {
"name": "fetch_page",
"title": "Fetch Page",
"description": "Read one public web page and return its main content as clean Markdown: headings, paragraphs, lists, quotes, code blocks, tables and absolute links, without menus, footers, scripts or cookie banners. Also returns the title, description, language, canonical address and up to 100 links from the content. robots.txt is checked first and a disallowed page is skipped with the reason. It never signs in, passes a paywall, solves a CAPTCHA or runs page scripts. Pass max_chars for more than 20000 characters. WHEN TO USE: Call fetch_page for this operation; for sibling workflows use extract_page_json, submit_feedback, get_feedback_reply. WHEN NOT TO USE: Do not call for unrelated mutations. PARAMETER INTERACTIONS: Pass url, max_chars to scope execution; optional fields refine filtering when set and use safe defaults when omitted. Read-only and idempotent; failed calls do not mutate state.",
"inputSchema": {
"type": "object",
"properties": {
"url": {
"type": "string",
"minLength": 1,
"maxLength": 400,
"description": "Full address of one public web page, such as \"https://example.com/docs/intro\". http is upgraded to https."
},
"max_chars": {
"type": "integer",
"minimum": 1000,
"description": "Longest Markdown to return, cut at a block end. Default 20000, most 100000: a larger value returns 100000 with a note."
},
"links": {
"type": "boolean",
"description": "Set false to leave out the link list. Default true: up to 100 distinct links from the main content."
}
},
"required": [
"url"
],
"additionalProperties": false,
"examples": [
{
"url": "https://example.com",
"links": false
}
]
},
"outputSchema": {
"type": "object",
"properties": {
"url": {
"type": "string"
},
"status": {
"type": "string",
"enum": [
"ok",
"skipped"
]
},
"final_url": {
"type": "string"
},
"title": {
"type": "string"
},
"description": {
"type": "string"
},
"lang": {
"type": "string"
},
"canonical": {
"type": "string"
},
"content_type": {
"type": "string"
},
"markdown": {
"type": "string"
},
"chars": {
"type": "integer"
},
"truncated": {
"type": "boolean"
},
"words": {
"type": "integer"
},
"links": {
"type": "array",
"items": {
"type": "object",
"properties": {
"text": {
"type": "string"
},
"url": {
"type": "string"
},
"internal": {
"type": "boolean"
}
},
"required": [
"text",
"url",
"internal"
]
}
},
"links_total": {
"type": "integer"
},
"fetched_at": {
"type": "string"
},
"from_cache": {
"type": "boolean"
},
"notes": {
"type": "array",
"items": {
"type": "string"
}
},
"reason": {
"type": "string"
},
"message": {
"type": "string"
},
"retry_after_seconds": {
"type": "integer"
},
"untrusted_source": {
"type": "boolean"
},
"note": {
"type": "string"
},
"as_of": {
"type": "string",
"description": "ISO 8601 time the data was published by its source or fetched from it. A cached answer keeps the time of its fetch."
},
"source": {
"type": "object",
"description": "Who the data comes from, to cite and to check it against.",
"properties": {
"name": {
"type": "string"
},
"url": {
"type": "string"
}
},
"required": [
"name",
"url"
]
}
},
"required": [
"url",
"status",
"untrusted_source",
"note",
"as_of",
"source"
]
},
"annotations": {
"title": "Fetch Page",
"readOnlyHint": true,
"destructiveHint": false,
"idempotentHint": true,
"openWorldHint": true
},
"_meta": {
"openai/toolInvocation/invoking": "Fetch a web page as Markdown...",
"openai/toolInvocation/invoked": "Done: Fetch a web page as Markdown"
}
},
"auto_generated_a2a_skill_1_preview": {
"id": "fetch-page",
"name": "Fetch Page",
"description": "Read one public web page and return its main content as clean Markdown: headings, paragraphs, lists, quotes, code blocks, tables and absolute links, without menus, footers, scripts or cookie banners. Also returns the tit",
"tags": [
"mcp",
"a2a",
"x402",
"fetch"
]
},
"signed_mcp_lock_preview": {
"target": "https://pagefetch.openkrill.app",
"tools_hash": "sha256:3cf9fdf9c494e4ae330b57957e975281fc70b5d91b78076b694e7730c02b3600",
"tdqs": 5.0,
"protocols": [
"mcp-2025-03-26",
"a2a-0.2.1",
"x402-v2-bazaar",
"stripe-mpp-32042"
],
"signature": "asr_lock_47051456c6ee2abcf4ce53560adf6422"
},
"locked_bundle_contents": "Unlock remaining 3 compiled 5.0/5.0 tools + full /.well-known/agent-card.json + /.well-known/mcp.json + Coinbase x402 Bazaar & Stripe MPP (-32042) monetization config below ($9)"
}
All 25 first-party production nodes enforce deterministic schemas, sub-second SLA, and instant x402 (`0xec5275d5b03bc390fca63d902d0b2d0db2eb5573`) + Stripe MPP settlement: