Search / com.goedvps.app.wodan-posture/wodan-posture
Wodan Posture
not classifiedAccess-posture reports for agent data sourcing: robots, bot wall, licensing. Paid per call via x402.
v1.7.0 · active · website · descriptor JSON · versions
Search / com.goedvps.app.wodan-posture/wodan-posture
Access-posture reports for agent data sourcing: robots, bot wall, licensing. Paid per call via x402.
v1.7.0 · active · website · descriptor JSON · versions
{
"mcpServers": {
"wodan-posture": {
"type": "http",
"url": "https://wodan-posture.app.goedvps.com/mcp"
}
}
}claude mcp add --transport http wodan-posture https://wodan-posture.app.goedvps.com/mcp[mcp_servers.wodan-posture]
url = "https://wodan-posture.app.goedvps.com/mcp"
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"wodan-posture": {
"type": "remote",
"url": "https://wodan-posture.app.goedvps.com/mcp",
"enabled": true
}
}
}{
"mcpServers": {
"wodan-posture": {
"type": "http",
"url": "https://wodan-posture.app.goedvps.com/mcp"
}
},
"deeplink": "cursor://anysphere.cursor-deeplink/mcp/install?name=wodan-posture&config=eyJ0eXBlIjoiaHR0cCIsInVybCI6Imh0dHBzOi8vd29kYW4tcG9zdHVyZS5hcHAuZ29lZHZwcy5jb20vbWNwIn0%3D"
}{
"servers": {
"wodan-posture": {
"type": "http",
"url": "https://wodan-posture.app.goedvps.com/mcp"
}
}
}{
"mcpServers": {
"wodan-posture": {
"httpUrl": "https://wodan-posture.app.goedvps.com/mcp"
}
}
}extensions:
"wodan-posture":
enabled: true
name: "wodan-posture"
type: streamable_http
uri: "https://wodan-posture.app.goedvps.com/mcp"
timeout: 300
protocol.modernsupports 2026-07-28 (server/discover)protocol.statelessanswers without a sessionprotocol.transportstreamable HTTPprotocol.list_ttltools/list declares ttlMs 0, so clients re-fetch it on every useauth.prm, auth.as_metadata, auth.cimdno remote uses OAuthauth.secret_in_urlno templated URLtools.descriptionsevery tool has a descriptiontools.description_lengthdescriptions are concisetools.schemasevery tool has an object input schematools.annotationsno tool declares readOnlyHint or destructiveHint, so clients cannot tell safe calls from risky onestools.directory_hintsno tool declares all four of readOnlyHint, destructiveHint, idempotentHint and openWorldHint; missing: page_report (readOnlyHint, destructiveHint, idempotentHint, openWorldHint); posture_preview (readOnlyHint, destructiveHint, idempotentHint, openWorldHint); robots_check (readOnlyHint, destructiveHint, idempotentHint, openWorldHint); …tools.token_costabout 2,935 tokens to load every tooltools.api_dumptools are not a one-to-one API dumpstability.changes14 tool changes in 30 daysstability.rug_pull1 tools kept their name but changed most of their description in 30 days; review before trusting themdeps.known_vulns, deps.mcp_sdk_version, deps.resolvableno npm or PyPI packageorigin_policyaddedPaid: $0.03 USDC on Base per call, paid automatically by an x402-capable MCP client. No signup, no API key. Returns the whole crawl policy of one public http(s) URL's origin, from ONE robots.txt fetch: every group, every rule with its line number in the file, which group governs each well-known agent and why, sitemaps resolved to absolute URLs, and two digests (robots_txt_sha256, policy_hash) to watch a policy for changes with one cheap call. An unanalysable URL is never charged for (error target_not_analysable). The free tool robots_check answers one agent's allow/disallow decision for one URL, for nothing. Argument: url.
robots_checkchangeddescriptionFree, 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.
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. For many URLs at once, can_fetch ($0.02) answers the same question for up to 100 URLs in one payment, one robots.txt fetch per distinct origin.
can_fetchaddedPaid: $0.02 USDC on Base per call, paid automatically by an x402-capable MCP client. No signup, no API key. Answers the RFC 9309 crawl-permission question for up to 100 public http(s) URLs in one payment: may the given crawler agent fetch each URL? One robots.txt fetch per distinct origin (at most 25 origins), not one per URL. Argument agent is the crawler token (e.g. 'GPTBot'); optional, defaults to the wildcard '*' group. An unreadable or unparsable robots.txt is reported as status unknown, allowed null - never guessed as allowed. Errors are never charged for. The free tool robots_check answers the same question for one URL at a time, for nothing. Arguments: urls (1 to 100 strings), agent (optional).
crawl_policyaddedFree, no signup: shares posture_preview's 60-calls-per-hour budget across all callers. Returns live RFC 9309 allow/disallow decisions for a fixed, versioned sample of up to 24 public origins, computed from each origin's own robots.txt. A robots.txt that cannot be read is reported as unknown, never as allowed. Argument: limit (optional, 1-24, default all origins in the seed). The HTTP equivalent is GET /v1/agents/policy (add ?format=csv for CSV). For a single page's full access-posture report, use the paid tool page_posture ($0.01).
domain_reportaddedPaid: $0.06 USDC on Base per call. No signup, no API key. The domain-level agent-access report for the ORIGIN of one public http(s) URL: robots.txt decisions for every well-known agent token at the given path, which agent-facing documents the origin publishes (llms.txt, /.well-known/x402, /.well-known/mcp.json, security.txt), whether its declared sitemap actually contains pages the origin allows an agent to fetch, and a sample of those pages analysed for agreement with the robots policy. Verdicts: open, restricted, blocked, mixed, unreachable. Answers a different question than page_posture: not 'can I fetch this one page' but 'what is this whole site's policy toward agents'. Free companion for a single agent at a single path: robots_check. An unanalysable target is never charged for (target_not_analysable); an origin that publishes nothing at all (no robots.txt, no discovery document, no sitemap, unreachable root page) answers nothing_to_report, also uncharged.
page_reportaddedPaid: $0.04 USDC on Base per call. No signup, no API key. The whole-page report for one public http(s) URL in ONE payment: the access-posture report (page_posture), where the data is (page_sources) and the data itself (page_data), composed from the same builders as the three single routes, so $0.04 instead of $0.06 for three separate calls. If the posture component cannot be produced the whole call fails closed (target_not_analysable) and nothing settles; if sources or data fails or times out the answer is still 200 with that component absent from `products` and named in `partial`.
pages_postureaddedPaid: $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.
robots_checkaddedFree, 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.
page_dataaddedPaid: $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.
posture_previewchangedinput schemaShowing the latest 10. Full history: list_changes · trend: quality JSON.
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.
+dns-namespace +website -unreachable(8 failures) +updated-19d-ago -no-repository
Derived from observable signals (official registry feed and our own credential-free probes); no code audit performed. How it is computed.
| remote | auth | reachable | uptime 30d | p50 | protocol | last ok |
|---|---|---|---|---|---|---|
https://wodan-posture.app.goedvps.com/mcp streamable-http | none | no (8 failures) | 84% | 403 ms | 2026-07-28 | 2026-10-02 |
can_fetch | Paid: $0.02 USDC on Base per call, paid automatically by an x402-capable MCP client. No signup, no API key. Answers the RFC 9309 crawl-permission question for up to 100 public http(s) URLs in one payment: may the given crawler agent fetch each URL? One robots.txt fetch per distinct origin (at most 25 origins), not one per URL. Argument agent is the crawler token (e.g. 'GPTBot'); optional, defaults to the wildcard '*' group. An unreadable or unparsable robots.txt is reported as status unknown, allowed null - never guessed as allowed. Errors are never charged for. The free tool robots_check answers the same question for one URL at a time, for nothing. Arguments: urls (1 to 100 strings), agent (optional). |
crawl_policy | Free, no signup: shares posture_preview's 60-calls-per-hour budget across all callers. Returns live RFC 9309 allow/disallow decisions for a fixed, versioned sample of up to 24 public origins, computed from each origin's own robots.txt. A robots.txt that cannot be read is reported as unknown, never as allowed. Argument: limit (optional, 1-24, default all origins in the seed). The HTTP equivalent is GET /v1/agents/policy (add ?format=csv for CSV). For a single page's full access-posture report, use the paid tool page_posture ($0.01). |
domain_report | Paid: $0.06 USDC on Base per call. No signup, no API key. The domain-level agent-access report for the ORIGIN of one public http(s) URL: robots.txt decisions for every well-known agent token at the given path, which agent-facing documents the origin publishes (llms.txt, /.well-known/x402, /.well-known/mcp.json, security.txt), whether its declared sitemap actually contains pages the origin allows an agent to fetch, and a sample of those pages analysed for agreement with the robots policy. Verdicts: open, restricted, blocked, mixed, unreachable. Answers a different question than page_posture: not 'can I fetch this one page' but 'what is this whole site's policy toward agents'. Free companion for a single agent at a single path: robots_check. An unanalysable target is never charged for (target_not_analysable); an origin that publishes nothing at all (no robots.txt, no discovery document, no sitemap, unreachable root page) answers nothing_to_report, also uncharged. |
origin_policy | Paid: $0.03 USDC on Base per call, paid automatically by an x402-capable MCP client. No signup, no API key. Returns the whole crawl policy of one public http(s) URL's origin, from ONE robots.txt fetch: every group, every rule with its line number in the file, which group governs each well-known agent and why, sitemaps resolved to absolute URLs, and two digests (robots_txt_sha256, policy_hash) to watch a policy for changes with one cheap call. An unanalysable URL is never charged for (error target_not_analysable). The free tool robots_check answers one agent's allow/disallow decision for one URL, for nothing. Argument: url. |
page_data | 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. |
page_posture | 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. |
page_report | Paid: $0.04 USDC on Base per call. No signup, no API key. The whole-page report for one public http(s) URL in ONE payment: the access-posture report (page_posture), where the data is (page_sources) and the data itself (page_data), composed from the same builders as the three single routes, so $0.04 instead of $0.06 for three separate calls. If the posture component cannot be produced the whole call fails closed (target_not_analysable) and nothing settles; if sources or data fails or times out the answer is still 200 with that component absent from `products` and named in `partial`. |
page_sources | 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. |
pages_posture | 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. |
posture_preview | 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. |
robots_check | 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. For many URLs at once, can_fetch ($0.02) answers the same question for up to 100 URLs in one payment, one robots.txt fetch per distinct origin. |
Schemas: list_tools.
{
"name": "com.goedvps.app.wodan-posture/wodan-posture",
"_meta": {
"io.modelcontextprotocol.registry/publisher-provided": {
"note": "No signup and no API key: the payment is a per-request x402 signature.",
"tool": "wodan-posture",
"price": "0.01-0.06 USDC per call depending on tool (eip155:8453)",
"tools": [
"page_posture (paid, $0.01)",
"page_sources (paid, $0.02)",
"page_data (paid, $0.03)",
"page_report (paid, $0.04, posture + sources + data for one URL in one call)",
"pages_posture (paid, $0.05, up to 10 URLs in one call)",
"domain_report (paid, $0.06, domain-level agent-access report: robots decisions for every well-known agent, discovery documents, sitemap sampling, conflicts)",
"can_fetch (paid, $0.02, batch crawl-permission check: RFC 9309 decision for up to 100 URLs in one call, one robots.txt fetch per distinct origin)",
"origin_policy (paid, $0.03, the whole crawl policy of one origin: every group, every rule with its line number, which group governs each well-known agent and why, sitemaps and two digests)",
"posture_preview (free, rate-limited)",
"robots_check (free, rate-limited)",
"crawl_policy (free, the public crawl-policy dataset: live RFC 9309 decisions for a fixed 24-origin sample)"
],
"discovery": "https://wodan-posture.app.goedvps.com/.well-known/mcp.json"
}
},
"title": "Wodan Posture",
"$schema": "https://static.modelcontextprotocol.io/schemas/2025-12-11/server.schema.json",
"remotes": [
{
"url": "https://wodan-posture.app.goedvps.com/mcp",
"type": "streamable-http"
}
],
"version": "1.7.0",
"websiteUrl": "https://wodan-posture.app.goedvps.com/",
"description": "Access-posture reports for agent data sourcing: robots, bot wall, licensing. Paid per call via x402."
}