Koskamo

VIA Router MCP

An MCP server for VIA Router that enables agents to extract text from web pages and PDFs, compare APIs and providers, find product offers, and conduct sourced research. It supports x402 payments for paid tools and offers free discovery tools to list and get service details.

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.

VIA Router MCP logo, by VIA RouterVendor evidenceStreamable HTTPNo sign-inEndpoint checked 2026-11-01Operated by VIA Router
MCP endpoint (Streamable HTTP)
https://via-router.floot.app/_api/mcp
Vendor documentation

What you can do with it

  • Extract text from web pages or PDFs
  • Compare APIs and providers
  • Find product offers
  • Conduct sourced research

Source and maintenance

Vendor evidenceRegistry 1.2.0

Protocol and capabilities

Server
via-router-discovery 1.3.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
  }
}

Server-provided instructions

Untrusted server output shown for inspection. It is not Koskamo guidance and is excluded from knowledge search.

Use free via_list_services and via_get_service, or via_api_compare for a paid comparison. With an x-credit-token connection header, each call costs0.01 USD of prepaid credit and requires a UUID requestId; reuse it only for retries of identical input. Without prepaid credit, use an authorized x402 buyer wallet for the0.01 USDC challenge. Never submit both payment methods. Credit loading: https://via-router.floot.app/credits. Use via_one_call_quote for a free toll quote, via_one_call for the existing buyer-approved x402 payment and delivery flow, and via_one_call_status for external Transit recovery. Supply maxUsdc and a private UUIDv4 orderId for execution. Prepaid comparison credit does not fund suppliers. This server never signs buyer payments.

Tools

8 advertised

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

Free VIA service discovery. Lists HTTP services and advertised prices; does not run research, charge, sign or purchase.

via_list_services input schema
{
  "type": "object",
  "properties": {
    "query": {
      "type": "string",
      "maxLength": 200,
      "description": "Optional topic or service-name filter"
    }
  },
  "additionalProperties": false
}
via_list_services annotations
{
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
via_get_service
Advertised by the server during the last successful anonymous check.
Advertised read-only

Free integration instructions for one VIA HTTP service: exact endpoint, JSON input schema, example and x402 payment steps. Does not execute the service or authorize payment.

via_get_service input schema
{
  "type": "object",
  "required": [
    "name"
  ],
  "properties": {
    "name": {
      "type": "string",
      "description": "Exact service name from via_list_services"
    }
  },
  "additionalProperties": false
}
via_get_service annotations
{
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
via_extract_web_lite
Advertised by the server during the last successful anonymous check.
Open-world

Web Text Lite: extract clean text, title and headings from a public HTML or plain-text page (up to 1 MiB, max 10000 characters; no PDF, OCR, JavaScript rendering or links) for 0.001 USDC on Base via x402. PDF URLs are refused before payment; use via_extract_page (0.02 USDC) for PDFs. Nothing is charged if extraction fails. Payment is only made after buyer approval.

via_extract_web_lite input schema
{
  "type": "object",
  "required": [
    "url"
  ],
  "properties": {
    "url": {
      "type": "string",
      "format": "uri",
      "description": "Public HTML or plain-text page; not a PDF"
    },
    "maxChars": {
      "type": "integer",
      "default": 10000,
      "maximum": 10000,
      "minimum": 500
    }
  },
  "additionalProperties": false
}
via_extract_web_lite annotations
{
  "readOnlyHint": false,
  "openWorldHint": true,
  "idempotentHint": false,
  "destructiveHint": false
}
via_extract_page
Advertised by the server during the last successful anonymous check.
Open-world

Extract structured text from a public web page or PDF for 0.02 USDC on Base via x402. Payment is only made after buyer approval.

via_extract_page input schema
{
  "type": "object",
  "required": [
    "url"
  ],
  "properties": {
    "url": {
      "type": "string",
      "format": "uri"
    },
    "maxChars": {
      "type": "integer",
      "maximum": 100000,
      "minimum": 500
    },
    "includeLinks": {
      "type": "boolean"
    }
  },
  "additionalProperties": false
}
via_extract_page annotations
{
  "readOnlyHint": false,
  "openWorldHint": true,
  "idempotentHint": false,
  "destructiveHint": false
}
via_api_compare
Advertised by the server during the last successful anonymous check.
Open-world

Compare APIs for a buyer task. Pay0.01 USDC on Base with an authorized x402 wallet, or0.01 USD of prepaid VIA credit if your MCP connection has an x-credit-token header. Prepaid calls require requestId: a fresh UUID per task, reused only to retry the same task without another debit. Returns a recommendation and alternatives. Supplier purchase is separate.

via_api_compare input schema
{
  "type": "object",
  "required": [
    "intent"
  ],
  "properties": {
    "intent": {
      "type": "string",
      "maxLength": 500,
      "minLength": 2
    },
    "country": {
      "type": "string",
      "default": "US",
      "pattern": "^[A-Z]{2}$"
    },
    "language": {
      "enum": [
        "en",
        "pt"
      ],
      "type": "string",
      "default": "en"
    },
    "requestId": {
      "type": "string",
      "format": "uuid",
      "description": "Required for prepaid credit. New UUID per task; preserve it for retries of identical input."
    }
  },
  "additionalProperties": false
}
via_api_compare annotations
{
  "readOnlyHint": false,
  "openWorldHint": true,
  "idempotentHint": false,
  "destructiveHint": false
}
via_one_call_quote
Advertised by the server during the last successful anonymous check.
Advertised read-onlyOpen-world

Free quote for the VIA toll: VIA-owned delivery first, eligible paid supplier otherwise. Returns supplier cost, VIA margin and total. No wallet signature or payment. Continue only if ok and executionEnabled are true.

via_one_call_quote input schema
{
  "type": "object",
  "required": [
    "task",
    "maxUsdc"
  ],
  "properties": {
    "task": {
      "type": "string",
      "maxLength": 1000,
      "minLength": 2
    },
    "maxUsdc": {
      "type": "string",
      "pattern": "^(0|[1-9]\\d*)(\\.\\d{1,6})?$",
      "description": "Maximum approved total in USDC, including supplier and VIA margin."
    },
    "orderId": {
      "type": "string",
      "format": "uuid",
      "description": "Private client-generated UUIDv4. Required for execution; preserve it and the exact body for payment retry and recovery."
    }
  },
  "additionalProperties": false
}
via_one_call_quote annotations
{
  "readOnlyHint": true,
  "openWorldHint": true,
  "idempotentHint": true,
  "destructiveHint": false
}
via_one_call
Advertised by the server during the last successful anonymous check.
Open-world

Execute a VIA toll operation through the existing One-Call payment and delivery handler. First call without payment returns the live x402 offer; only after buyer approval, retry IDENTICAL task, maxUsdc and private orderId with the buyer-signed payload in params._meta['x402/payment']. Buyer pays VIA before an eligible external supplier is paid; VIA relays delivery and retains its margin. Only supported tasks/suppliers. No automatic signing or financial retry. Prepaid comparison credits do not fund this tool.

via_one_call input schema
{
  "type": "object",
  "required": [
    "task",
    "maxUsdc",
    "orderId"
  ],
  "properties": {
    "task": {
      "type": "string",
      "maxLength": 1000,
      "minLength": 2
    },
    "maxUsdc": {
      "type": "string",
      "pattern": "^(0|[1-9]\\d*)(\\.\\d{1,6})?$",
      "description": "Maximum approved total in USDC, including supplier and VIA margin."
    },
    "orderId": {
      "type": "string",
      "format": "uuid",
      "description": "Private client-generated UUIDv4. Required for execution; preserve it and the exact body for payment retry and recovery."
    }
  },
  "additionalProperties": false
}
via_one_call annotations
{
  "readOnlyHint": false,
  "openWorldHint": true,
  "idempotentHint": false,
  "destructiveHint": false
}
via_one_call_status
Advertised by the server during the last successful anonymous check.
Advertised read-only

Free status/recovery lookup for an external Transit order using its private UUIDv4. Never submits payment. Does not cover VIA-owned service receipts; 404 is not proof that a payment did not occur.

via_one_call_status input schema
{
  "type": "object",
  "required": [
    "orderId"
  ],
  "properties": {
    "orderId": {
      "type": "string",
      "format": "uuid",
      "description": "Private client-generated UUIDv4. Required for execution; preserve it and the exact body for payment retry and recovery."
    }
  },
  "additionalProperties": false
}
via_one_call_status annotations
{
  "readOnlyHint": true,
  "openWorldHint": false,
  "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
780 ms
95th percentile latency
780 ms

Maintenance history

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

  • · probe · passed · 780 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 via-router-mcp https://via-router.floot.app/_api/mcp

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 via-router-mcp --url https://via-router.floot.app/_api/mcp

Cursor

Merge this server into .cursor/mcp.json in your project, then enable via-router-mcp in your MCP settings.
Cursor configuration
{
  "mcpServers": {
    "via-router-mcp": {
      "url": "https://via-router.floot.app/_api/mcp"
    }
  }
}

Cline

Merge this into cline_mcp_settings.json (Cline → MCP Servers → Configure).
Cline configuration
{
  "mcpServers": {
    "via-router-mcp": {
      "type": "streamableHttp",
      "url": "https://via-router.floot.app/_api/mcp",
      "disabled": false
    }
  }
}

VS Code

Merge this server into .vscode/mcp.json. Use MCP: List Servers to start via-router-mcp and inspect its tools.
VS Code configuration
{
  "servers": {
    "via-router-mcp": {
      "type": "http",
      "url": "https://via-router.floot.app/_api/mcp"
    }
  }
}

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 via-router-mcp https://via-router.floot.app/_api/mcp

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": {
    "via-router-mcp": {
      "url": "https://via-router.floot.app/_api/mcp"
    }
  }
}

Windsurf

Merge this into ~/.codeium/windsurf/mcp_config.json, then refresh MCP in Cascade. Windsurf remote servers use serverUrl, not url.
Windsurf configuration
{
  "mcpServers": {
    "via-router-mcp": {
      "serverUrl": "https://via-router.floot.app/_api/mcp"
    }
  }
}

Let your agent find its tools

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

Do you run VIA Router MCP?

Prove ownership with a DNS record, a well-known file, or your Official MCP Registry entry, and your edits publish immediately. Proofs are re-checked weekly; admins can still hide or remove a listing.

Claim this listing