Koskamo

verify-api MCP

An AI claim verification MCP server that provides tools for verifying LLM provider accuracy and status. It supports dual-protocol micropayments via x402 (Base USDC) and MPP (Tempo USDC), offering native integration for AI agents to query verification services.

Endpoint and access

No sign-in to connect and list tools. Individual tools may still need a vendor account, credentials, or permissions; check the documented prerequisites.

verify-api MCP logo, by drain54Community listingStreamable HTTPNo sign-inEndpoint checked 2026-11-01Published by drain54
MCP endpoint (Streamable HTTP)
https://verify.drain54.my.id
Vendor documentation

What you can do with it

  • Verify AI claim accuracy
  • Check LLM provider status
  • Execute pay-per-query verification via x402
  • Integrate verification tools into AI agents via MCP

Source and maintenance

Community listingRegistry 1.0.0
Maintenance checked

Protocol and capabilities

Server
io.github.drain54/verify-api 1.0.0
MCP protocol
2025-06-18
Tools
8 advertised
Resources
Not advertised
Resource templates
Not advertised
Prompts
Not advertised
Server-advertised capabilities
{
  "tools": {
    "listChanged": false
  }
}

Tools

8 advertised

verify_ai_claim
Advertised by the server during the last successful anonymous check.
Advertised read-only

Verify whether an AI model, API provider, pricing claim, or infrastructure assertion is true today using live web evidence. Returns deterministic verdicts (TRUE, FALSE, PARTIALLY_TRUE, UNREACHABLE, UNVERIFIED) with cited sources and confidence scores. Requires x402 micropayment (0.01 USDC on Base). When to use: Fact-checking an AI provider's claims, pricing, or model availability. When NOT to use: Do NOT use for general open-ended web search, coding assistance, or non-AI claim verification. Parameters: - `query` (string, required): The exact claim or assertion to verify (5-500 chars), e.g. 'Is GLM-5.3 Flash free on ZenMux?'. - `depth` (string, optional, default 'standard'): Verification depth. 'standard' executes fast single-pass search (0.01 USDC); 'deep' conducts multi-source cross-examination (0.03 USDC).

verify_ai_claim input schema
{
  "type": "object",
  "required": [
    "query"
  ],
  "properties": {
    "depth": {
      "enum": [
        "standard",
        "deep"
      ],
      "type": "string",
      "default": "standard",
      "examples": [
        "standard",
        "deep"
      ],
      "description": "Verification depth: 'standard' (0.01 USDC) or 'deep' (0.03 USDC)."
    },
    "query": {
      "type": "string",
      "examples": [
        "Is GLM-5.3 Flash free on ZenMux?",
        "Does OpenRouter still offer free tier models?"
      ],
      "maxLength": 500,
      "minLength": 5,
      "description": "The specific AI infrastructure claim or assertion to verify."
    }
  },
  "additionalProperties": false
}
verify_ai_claim output schema
{
  "type": "object",
  "required": [
    "verdict",
    "answer",
    "confidence",
    "sources"
  ],
  "properties": {
    "id": {
      "type": "string",
      "description": "Unique verification record ID"
    },
    "answer": {
      "type": "string",
      "description": "Detailed explanation backed by fresh sources"
    },
    "sources": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "url": {
            "type": "string",
            "description": "Source URL"
          },
          "type": {
            "type": "string",
            "description": "Source type (official, third_party, community)"
          },
          "title": {
            "type": "string",
            "description": "Source page title"
          }
        }
      },
      "description": "Fresh evidence sources used for verification"
    },
    "verdict": {
      "enum": [
        "TRUE",
        "FALSE",
        "PARTIALLY_TRUE",
        "CHANGED",
        "UNREACHABLE",
        "BLOCKED",
        "UNVERIFIED"
      ],
      "type": "string",
      "description": "Deterministic evidence-backed verdict"
    },
    "confidence": {
      "type": "number",
      "description": "Confidence score between 0.0 and 1.0"
    }
  }
}
verify_ai_claim annotations
{
  "readOnlyHint": true,
  "idempotentHint": true,
  "destructiveHint": false
}
check_endpoint_health
Advertised by the server during the last successful anonymous check.
Advertised read-only

Probe and verify the reachability, HTTP status code, latency, and operational health of an AI API endpoint or web service. Follows redirects with a 15-second timeout. Requires x402 micropayment (0.01 USDC on Base). When to use: Check if a specific API URL or model endpoint is online, responding, or returning 5xx/402 errors. When NOT to use: Do NOT use for general domain WHOIS or DNS record lookups. Parameters: - `url` (string, required): Target HTTP/HTTPS endpoint URL to probe (8-1000 chars), e.g. 'https://api.openai.com/v1/models'.

check_endpoint_health input schema
{
  "type": "object",
  "required": [
    "url"
  ],
  "properties": {
    "url": {
      "type": "string",
      "format": "uri",
      "examples": [
        "https://openrouter.ai/api/v1/models",
        "https://api.together.xyz/v1/health"
      ],
      "maxLength": 1000,
      "minLength": 8,
      "description": "The target API or service endpoint URL to probe."
    }
  },
  "additionalProperties": false
}
check_endpoint_health output schema
{
  "type": "object",
  "required": [
    "verdict",
    "http_status",
    "latency_ms"
  ],
  "properties": {
    "verdict": {
      "enum": [
        "TRUE",
        "UNREACHABLE",
        "BLOCKED"
      ],
      "type": "string",
      "description": "Reachability status verdict"
    },
    "checked_at": {
      "type": "string",
      "description": "ISO 8601 timestamp of the check"
    },
    "latency_ms": {
      "type": "integer",
      "description": "Response latency in milliseconds"
    },
    "http_status": {
      "type": "integer",
      "description": "HTTP status code returned by the target endpoint"
    }
  }
}
check_endpoint_health annotations
{
  "readOnlyHint": true,
  "idempotentHint": true,
  "destructiveHint": false
}
solve_captcha
Advertised by the server during the last successful anonymous check.

Solve web CAPTCHA challenges (Turnstile, hCaptcha, reCAPTCHA v2, Arkose, Cloudflare) and return a valid solution token. Automatically retries once on failure without double charging. Requires x402 payment on Base. When to use: Use when an agent encounters a bot wall or CAPTCHA challenge during automated web workflows. When NOT to use: Do NOT use for non-CAPTCHA auth, 2FA/OTP codes, or general login forms. Parameters: - `type` (string, required): CAPTCHA type ('turnstile', 'hcaptcha', 'recaptcha', 'arkose', 'cloudflare'). - `sitekey` (string, required): Public sitekey extracted from the target page DOM. - `url` (string, required): Full target webpage URL hosting the challenge.

solve_captcha input schema
{
  "type": "object",
  "required": [
    "type",
    "sitekey",
    "url"
  ],
  "properties": {
    "url": {
      "type": "string",
      "format": "uri",
      "examples": [
        "https://example.com/login"
      ],
      "maxLength": 1000,
      "minLength": 8,
      "description": "The full target page URL where the CAPTCHA challenge is hosted."
    },
    "type": {
      "enum": [
        "turnstile",
        "hcaptcha",
        "recaptcha",
        "arkose",
        "cloudflare"
      ],
      "type": "string",
      "examples": [
        "turnstile",
        "recaptcha",
        "hcaptcha"
      ],
      "description": "The specific type of CAPTCHA challenge encountered on the target page."
    },
    "sitekey": {
      "type": "string",
      "examples": [
        "0x4AAAAAAAx..."
      ],
      "maxLength": 256,
      "minLength": 5,
      "description": "The CAPTCHA sitekey parameter extracted from the target page DOM or iframe."
    }
  },
  "additionalProperties": false
}
solve_captcha output schema
{
  "type": "object",
  "required": [
    "solved",
    "token"
  ],
  "properties": {
    "token": {
      "type": "string",
      "description": "The resulting CAPTCHA response token to submit to the form"
    },
    "method": {
      "type": "string",
      "description": "Solving method or backend engine used"
    },
    "solved": {
      "type": "boolean",
      "description": "Whether the CAPTCHA challenge was successfully solved"
    },
    "elapsed": {
      "type": "number",
      "description": "Time taken in seconds to solve the challenge"
    }
  }
}
solve_captcha annotations
{
  "readOnlyHint": false,
  "idempotentHint": false,
  "destructiveHint": false
}
get_captcha_pricing
Advertised by the server during the last successful anonymous check.
Advertised read-only

Retrieve current x402 pricing per 1,000 CAPTCHA solves across all supported types (Turnstile, hCaptcha, reCAPTCHA v2, Arkose, Cloudflare). Free endpoint with zero parameters. When to use: Check current rates and atomic USDC requirements before calling solve_captcha. When NOT to use: Do NOT use to submit or solve CAPTCHA challenges.

get_captcha_pricing input schema
{
  "type": "object",
  "required": [],
  "properties": {},
  "additionalProperties": false
}
get_captcha_pricing output schema
{
  "type": "object",
  "required": [
    "pricing",
    "currency",
    "network"
  ],
  "properties": {
    "network": {
      "type": "string",
      "description": "Target blockchain network (Base)"
    },
    "pricing": {
      "type": "object",
      "description": "Map of CAPTCHA type to cost in USDC atomic units per 1,000 solves"
    },
    "currency": {
      "type": "string",
      "description": "Payment currency (USDC)"
    }
  }
}
get_captcha_pricing annotations
{
  "readOnlyHint": true,
  "idempotentHint": true,
  "destructiveHint": false
}
read_web_page
Advertised by the server during the last successful anonymous check.
Advertised read-only

Extract clean, readable Markdown and metadata from any public webpage for LLM ingestion, stripping ads, popups, and navigational clutter. Returns clean markdown, title, description, character count, and estimated tokens. Requires x402 micropayment (0.005 USDC on Base). When to use: Ingesting articles, blog posts, documentation, or news pages into LLM context. When NOT to use: Do NOT use for raw binary files (PDF/images), authenticated pages behind a login, or single-page apps that require heavy JavaScript rendering. Parameters: - `url` (string, required): Full target webpage URL (e.g. 'https://news.ycombinator.com'). - `include_links` (boolean, optional, default true): Whether to preserve markdown hyperlinks. - `include_images` (boolean, optional, default false): Whether to preserve image markdown links.

read_web_page input schema
{
  "type": "object",
  "required": [
    "url"
  ],
  "properties": {
    "url": {
      "type": "string",
      "format": "uri",
      "examples": [
        "https://news.ycombinator.com",
        "https://en.wikipedia.org/wiki/Artificial_intelligence"
      ],
      "maxLength": 1000,
      "minLength": 8,
      "description": "Full target webpage URL to extract markdown from."
    },
    "include_links": {
      "type": "boolean",
      "default": true,
      "description": "Preserve markdown hyperlinks."
    },
    "include_images": {
      "type": "boolean",
      "default": false,
      "description": "Preserve markdown image tags."
    }
  },
  "additionalProperties": false
}
read_web_page output schema
{
  "type": "object",
  "required": [
    "url",
    "content",
    "length"
  ],
  "properties": {
    "url": {
      "type": "string",
      "description": "Target webpage URL"
    },
    "title": {
      "type": "string",
      "description": "Extracted page title"
    },
    "length": {
      "type": "integer",
      "description": "Content length in characters"
    },
    "content": {
      "type": "string",
      "description": "Clean extracted Markdown content"
    },
    "elapsed_ms": {
      "type": "integer",
      "description": "Extraction time in milliseconds"
    },
    "description": {
      "type": "string",
      "description": "Extracted meta description"
    },
    "estimated_tokens": {
      "type": "integer",
      "description": "Estimated LLM tokens (~len/4)"
    }
  }
}
read_web_page annotations
{
  "readOnlyHint": true,
  "idempotentHint": true,
  "destructiveHint": false
}
search_web
Advertised by the server during the last successful anonymous check.
Advertised read-only

Execute live web searches using multi-engine chain (TinyFish, DuckDuckGo, Jina) without monthly API subscriptions. Returns fresh source URLs, titles, and snippets. Requires x402 micropayment (0.005 USDC on Base). When to use: Real-time web browsing and information retrieval for AI agents. When NOT to use: Do NOT use for deep recursive crawling of entire sites. Parameters: - `query` (string, required): Search query (3-300 chars). - `limit` (integer, optional, default 5): Maximum number of search results to return (1-10).

search_web input schema
{
  "type": "object",
  "required": [
    "query"
  ],
  "properties": {
    "limit": {
      "type": "integer",
      "default": 5,
      "maximum": 10,
      "minimum": 1,
      "description": "Number of results to return."
    },
    "query": {
      "type": "string",
      "maxLength": 300,
      "minLength": 3,
      "description": "Web search query."
    }
  },
  "additionalProperties": false
}
search_web output schema
{
  "type": "object",
  "required": [
    "query",
    "results"
  ],
  "properties": {
    "count": {
      "type": "integer",
      "description": "Number of returned results"
    },
    "query": {
      "type": "string",
      "description": "Original search query"
    },
    "results": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "url": {
            "type": "string"
          },
          "type": {
            "type": "string"
          },
          "title": {
            "type": "string"
          },
          "snippet": {
            "type": "string"
          }
        }
      }
    }
  }
}
search_web annotations
{
  "readOnlyHint": true,
  "idempotentHint": true,
  "destructiveHint": false
}
extract_json_from_web
Advertised by the server during the last successful anonymous check.
Advertised read-only

Extract structured JSON data matching a custom schema directly from any webpage. Extracts clean content and processes schema mapping via fast LLM parsing. Requires x402 micropayment (0.015 USDC on Base). When to use: Scraping structured data (product specs, prices, jobs, articles) into clean JSON. When NOT to use: Do NOT use for general open-ended chat without a defined schema. Parameters: - `url` (string, required): Target webpage URL. - `schema` (object, required): JSON object describing fields or schema to extract. - `instructions` (string, optional): Specific guidance for extraction.

extract_json_from_web input schema
{
  "type": "object",
  "required": [
    "url",
    "schema"
  ],
  "properties": {
    "url": {
      "type": "string",
      "format": "uri",
      "maxLength": 1000,
      "minLength": 8,
      "description": "Target webpage URL."
    },
    "schema": {
      "type": "object",
      "description": "Schema definition or list of fields to extract."
    },
    "instructions": {
      "type": "string",
      "description": "Optional instructions for parsing or field formatting."
    }
  },
  "additionalProperties": false
}
extract_json_from_web output schema
{
  "type": "object",
  "required": [
    "url",
    "data"
  ],
  "properties": {
    "url": {
      "type": "string"
    },
    "data": {
      "type": "object",
      "description": "Extracted JSON fields"
    },
    "title": {
      "type": "string"
    },
    "elapsed_ms": {
      "type": "integer"
    }
  }
}
extract_json_from_web annotations
{
  "readOnlyHint": true,
  "idempotentHint": true,
  "destructiveHint": false
}
fetch_stealth_web
Advertised by the server during the last successful anonymous check.
Advertised read-only

Fetch webpage HTML with modern browser TLS and header impersonation (Sec-Ch-Ua, realistic headers) to bypass bot protection and detect anti-bot challenges. Requires x402 micropayment (0.01 USDC on Base). When to use: Fetching websites that block standard cURL or basic HTTP libraries with 403 Forbidden. When NOT to use: Do NOT use for downloading giant binary files (videos, zip archives). Parameters: - `url` (string, required): Target webpage URL. - `custom_headers` (object, optional): Additional HTTP headers to pass along.

fetch_stealth_web input schema
{
  "type": "object",
  "required": [
    "url"
  ],
  "properties": {
    "url": {
      "type": "string",
      "format": "uri",
      "maxLength": 1000,
      "minLength": 8,
      "description": "Target webpage URL."
    },
    "custom_headers": {
      "type": "object",
      "description": "Optional custom headers."
    }
  },
  "additionalProperties": false
}
fetch_stealth_web output schema
{
  "type": "object",
  "required": [
    "url",
    "http_status",
    "html"
  ],
  "properties": {
    "url": {
      "type": "string"
    },
    "html": {
      "type": "string"
    },
    "title": {
      "type": "string"
    },
    "elapsed_ms": {
      "type": "integer"
    },
    "http_status": {
      "type": "integer"
    },
    "challenge_type": {
      "type": "string"
    },
    "content_length": {
      "type": "integer"
    },
    "challenge_detected": {
      "type": "boolean"
    }
  }
}
fetch_stealth_web annotations
{
  "readOnlyHint": true,
  "idempotentHint": true,
  "destructiveHint": false
}

Prompts

Not advertised

No prompt definitions available.

Resources

Not advertised

No resource definitions available.

30-day availability

Aggregated from read-only remote checks; this is not a tool-execution or security guarantee.

Successful checks
1 of 1 (100%)
Average latency
1153 ms
95th percentile latency
1153 ms

Maintenance history

Public check and source-refresh events. Editorial and ownership records remain private.

  • · probe · passed · 1153 ms · metadata changed · 8 tool(s)

Connect from your client

Each snippet registers the same endpoint; pick the client you use.

This server is operated by the named third party. Listing and endpoint checks are not an endorsement or a security audit. Review the operator's permissions, terms, and data handling before connecting. How listings are checked and corrected.

Claude Code

Run this once in a terminal. It registers the remote server. Use --scope project to write .mcp.json for the repo.
Claude Code configuration
claude mcp add --transport http verify-api-mcp https://verify.drain54.my.id

Codex

Run this once. Codex stores MCP servers in ~/.codex/config.toml (or .codex/config.toml in a trusted project).
Codex configuration
codex mcp add verify-api-mcp --url https://verify.drain54.my.id

Cursor

Merge this server into .cursor/mcp.json in your project, then enable verify-api-mcp in your MCP settings.
Cursor configuration
{
  "mcpServers": {
    "verify-api-mcp": {
      "url": "https://verify.drain54.my.id"
    }
  }
}

Cline

Merge this into cline_mcp_settings.json (Cline → MCP Servers → Configure).
Cline configuration
{
  "mcpServers": {
    "verify-api-mcp": {
      "type": "streamableHttp",
      "url": "https://verify.drain54.my.id",
      "disabled": false
    }
  }
}

VS Code

Merge this server into .vscode/mcp.json. Use MCP: List Servers to start verify-api-mcp and inspect its tools.
VS Code configuration
{
  "servers": {
    "verify-api-mcp": {
      "type": "http",
      "url": "https://verify.drain54.my.id"
    }
  }
}

Gemini CLI

Run this once. It writes .gemini/settings.json in the current project; pass --scope user for ~/.gemini/settings.json.
Gemini CLI configuration
gemini mcp add --transport http verify-api-mcp https://verify.drain54.my.id

Claude Desktop

Merge this into claude_desktop_config.json (macOS: ~/Library/Application Support/Claude/, Windows: %APPDATA%\Claude\), then restart Claude Desktop.
Claude Desktop configuration
{
  "mcpServers": {
    "verify-api-mcp": {
      "url": "https://verify.drain54.my.id"
    }
  }
}

Windsurf

Merge this into ~/.codeium/windsurf/mcp_config.json, then refresh MCP in Cascade. Windsurf remote servers use serverUrl, not url.
Windsurf configuration
{
  "mcpServers": {
    "verify-api-mcp": {
      "serverUrl": "https://verify.drain54.my.id"
    }
  }
}

Let your agent find its tools

Find servers like verify-api MCP from your agent. Add Koskamo once to search the index for endpoints, access requirements, and client setup. Public discovery needs no key.