Wodan Posture
Access-posture reports for agent data sourcing: robots, bot wall, licensing. Paid per call via x402.
¿Debería usar esto?
Calidad y seguridad
Basado en el análisis automatizado de las definiciones de herramientas y el cumplimiento del protocolo.
Costo de contexto
Este es el número aproximado de tokens que se consumen cada vez que las herramientas del servidor se cargan en el contexto de un modelo. Los recuentos más altos reducen la atención disponible para otras tareas.
Instalar
Instalación con un clic
Agrega esto a tu archivo `claude_desktop_config.json`:
{
"mcpServers": {
"wodan-posture": {
"url": "https://wodan-posture.app.goedvps.com/mcp"
}
}
}Puntos de conexión remotos
https://wodan-posture.app.goedvps.com/mcpstreamable-httpQué puede hacer
Inventario de herramientas
Herramientas (6)
⚪page_posture(url)
Paid: $0.01 USDC on Base per call, paid automatically by an x402-capable MCP client. No signup, no API key. Analyses one public http(s) URL and reports whether an agent may treat it as a machine-readable data source: exact-path robots.txt verdict, bot-wall vendor, JavaScript requirement, extractable content, JSON-LD types, licence hint, evidence lines. Verdicts: open, machine_readable, robots_disallowed, bot_walled, auth_required, js_rendered, thin_content, unreachable. An unanalysable URL is never charged for (error target_not_analysable). Argument: url. Free alternative for the verdict alone: posture_preview.
Esquema de entrada
{
"type": "object",
"properties": {
"url": {
"description": "Public http(s) URL to analyse. Must be reachable from the internet; private, loopback and link-local addresses are refused (target_not_analysable) and are never charged for.",
"title": "Url",
"type": "string"
}
},
"required": [
"url"
],
"title": "page_postureArguments"
}⚪page_sources(url)
Paid: $0.02 USDC on Base per call, paid automatically by an x402-capable MCP client. No signup, no API key. For one public http(s) URL returns the posture verdict plus where the data is: sitemaps (robots.txt Sitemap lines and /sitemap.xml, with the status observed), RSS/Atom feeds, whether /llms.txt answers 200, the status of /.well-known/x402, ai-plugin.json and mcp.json, JSON/CSV/XML endpoints, JSON-LD types, licence hint. Every field is observed or explicitly empty with a reason. An unanalysable URL (target_not_analysable) or a site that advertises nothing (nothing_to_report) is never charged for. Argument: url.
Esquema de entrada
{
"type": "object",
"properties": {
"url": {
"description": "Public http(s) URL to analyse. Must be reachable from the internet; private, loopback and link-local addresses are refused (target_not_analysable) and are never charged for.",
"title": "Url",
"type": "string"
}
},
"required": [
"url"
],
"title": "page_sourcesArguments"
}⚪page_data(url)
Paid: $0.03 USDC on Base per call. No signup, no API key. Returns the machine-readable data one public http(s) URL already publishes: every JSON-LD block, OpenGraph/Twitter-card/standard meta, embedded JSON state blobs (e.g. __NEXT_DATA__), parsed entries if the document is RSS/Atom/JSON Feed, HTML tables, and alternate/canonical links - each capped and returned exactly as observed, nothing invented or inferred by a model. Does not render JavaScript, does not follow links off the page, does not summarize. An unanalysable URL is never charged for (error target_not_analysable); a page with nothing extractable answers nothing_to_report, also uncharged.
Esquema de entrada
{
"type": "object",
"properties": {
"url": {
"description": "Public http(s) URL to analyse. Must be reachable from the internet; private, loopback and link-local addresses are refused (target_not_analysable) and are never charged for.",
"title": "Url",
"type": "string"
}
},
"required": [
"url"
],
"title": "page_dataArguments"
}🟡pages_posture(urls)
Paid: $0.05 USDC on Base per call, as GET /v1/pages/posture?url=...&url=... (repeat url up to ten times) or POST /v1/pages/posture with a JSON body. No signup, no API key. Analyses up to 10 public http(s) URLs in ONE payment and ONE settlement, instead of paying page_posture ten times: the same access-posture report as page_posture, per URL, as a verdict array. An individual unanalysable or empty URL is never a batch failure - it is reported as its own error entry in results, target_not_analysable or nothing_to_report - and the batch is only charged (settles) when at least one URL could be analysed; if every URL fails the whole call answers 404 and nothing settles. Free companions cover a single URL: posture_preview and robots_check.
Esquema de entrada
{
"type": "object",
"properties": {
"urls": {
"description": "1 to 10 public http(s) URLs to analyse in one payment. Each is analysed independently: an unreachable or private URL never fails the batch, it is reported as its own error entry in results. Private, loopback and link-local addresses are refused per URL.",
"items": {
"type": "string"
},
"title": "Urls",
"type": "array"
}
},
"required": [
"urls"
],
"title": "pages_posture_toolArguments"
}⚪posture_preview(url)
Free, no payment and no signup: 60 calls per hour, shared across all callers. Returns the headline of the same analysis - verdict, confidence, the full report's field schema, one evidence line and the price - so a caller can decide before paying. Use it when you only need the verdict; call page_posture ($0.01) for the complete report with evidence and provenance.
Esquema de entrada
{
"type": "object",
"properties": {
"url": {
"description": "Public http(s) URL to analyse. Must be reachable from the internet; private, loopback and link-local addresses are refused (target_not_analysable) and are never charged for.",
"title": "Url",
"type": "string"
}
},
"required": [
"url"
],
"title": "posture_previewArguments"
}🟢robots_check(url, agent)
Free, no signup: shares posture_preview's 60-calls-per-hour budget across all callers. Answers the RFC 9309 question for one public http(s) URL and one crawler token (argument agent, e.g. 'GPTBot'; optional, defaults to the wildcard '*' group): may this agent fetch this URL? Also reports the same decision for '*', gptbot, claudebot, googlebot, perplexitybot and ccbot in one call. An unreachable or unparsable robots.txt is reported as status unknown with allowed null - never guessed as allowed. The HTTP equivalent is GET /v1/robots/check. For the wider questions this tool does not answer: page_posture ($0.01) is the full access-posture report, page_sources ($0.02) is where the data is, page_data ($0.03) is the data itself.
Esquema de entrada
{
"type": "object",
"properties": {
"url": {
"description": "Public http(s) URL to analyse. Must be reachable from the internet; private, loopback and link-local addresses are refused (target_not_analysable) and are never charged for.",
"title": "Url",
"type": "string"
},
"agent": {
"default": "*",
"description": "Crawler user-agent token to evaluate against robots.txt, e.g. 'GPTBot'. Case-insensitive, stripped and truncated to 64 characters. Optional: omit it, or pass an empty string, to evaluate the wildcard ('*') group.",
"title": "Agent",
"type": "string"
}
},
"required": [
"url"
],
"title": "robots_check_toolArguments"
}Comunidad
Evidencia