Koskamo

Agent Risk Desk MCP

Provides EVM and NEAR address enrichment, counterparty risk verdicts, transaction screening, and geo-rendered page loading for AI agents. Operates on a pay-per-call model using USDC on Base via the x402 protocol, requiring no accounts or API keys.

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.

Agent Risk Desk MCP logo, by SoldanoCommunity listingStreamable HTTPNo sign-inEndpoint checked 2026-11-01Published by Soldano
You need:No account, no API key
MCP endpoint (Streamable HTTP)
https://x402-services.soldano.workers.dev/mcp
Vendor documentation

What you can do with it

  • Enrich EVM addresses with profile data and risk labels
  • Check counterparty risk for EVM and NEAR accounts
  • Screen transactions for status and counterparty risk
  • Render public web pages from specific countries

Source and maintenance

Community listingRegistry 0.2.0

Protocol and capabilities

Server
x402-services 0.3.0
MCP protocol
2025-06-18
Tools
7 advertised
Resources
Not advertised
Resource templates
Not advertised
Prompts
Not advertised
Server-advertised capabilities
{
  "tools": {
    "listChanged": true
  }
}

Server-provided instructions

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

Agent Risk Desk: EVM address enrichment, counterparty-risk checks for EVM and NEAR, Allowance receipt verification, transaction screening, and web pages rendered from a residential IP in a chosen country. Paid tools cost USDC on Base per call through x402 (MCP transport: payment in _meta["x402/payment"]). list_services is free.

Tools

7 advertised

enrich_evm_address — EVM address enrichment
Advertised by the server during the last successful anonymous check.
Advertised read-onlyOpen-world

Profile of an EVM address on Base, Ethereum, OP Mainnet or Arbitrum in one call: EOA, contract or EIP-7702 account, age, transactions sent, native and major token balances (USDC, USDT, EURC, DAI, WETH, BTC), Sourcify-verified source and name, proxy and implementation, token metadata, labels (OFAC SDN, Chainalysis oracle, known issuers) and a risk verdict with reasons. Useful to know who an address is before paying, listing or trusting it. Price: $0.01 USDC per call (x402).

enrich_evm_address input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "address"
  ],
  "properties": {
    "chain": {
      "enum": [
        "ethereum",
        "base",
        "base-sepolia",
        "optimism",
        "arbitrum"
      ],
      "type": "string",
      "description": "EVM chain: ethereum, base, base-sepolia, optimism, arbitrum (default base)"
    },
    "address": {
      "type": "string",
      "pattern": "^0x[0-9a-fA-F]{40}$",
      "description": "20-byte hex address, 0x-prefixed (checksum optional)"
    }
  }
}
enrich_evm_address annotations
{
  "readOnlyHint": true,
  "openWorldHint": true,
  "idempotentHint": true
}
counterparty_risk_evm — EVM counterparty risk
Advertised by the server during the last successful anonymous check.
Advertised read-onlyOpen-world

Counterparty-risk verdict (allow, warn or block, with reasons) for an EVM address on Base, Ethereum, OP Mainnet, Arbitrum or Base Sepolia, for use before paying, approving or trusting it. Checks the OFAC SDN list and the Chainalysis sanctions oracle, account age, EOA or contract, EIP-7702 delegation, upgradeable proxies and code changes in the last 72 h, and token controls (mint, blacklist, pause, fees, owner). Price: $0.02 USDC per call (x402).

counterparty_risk_evm input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "address",
    "chain"
  ],
  "properties": {
    "chain": {
      "enum": [
        "ethereum",
        "base",
        "base-sepolia",
        "optimism",
        "arbitrum"
      ],
      "type": "string",
      "description": "EVM chain: ethereum, base, base-sepolia, optimism, arbitrum"
    },
    "address": {
      "type": "string",
      "pattern": "^0x[0-9a-fA-F]{40}$",
      "description": "20-byte hex address, 0x-prefixed (checksum optional)"
    },
    "minAgeDays": {
      "type": "number",
      "maximum": 3650,
      "minimum": 0,
      "description": "warn when the address is younger than this (default 7)"
    },
    "codeWindowHours": {
      "type": "integer",
      "maximum": 720,
      "minimum": 1,
      "description": "warn when code or proxy implementation changed within this window (default 72)"
    }
  }
}
counterparty_risk_evm annotations
{
  "readOnlyHint": true,
  "openWorldHint": true,
  "idempotentHint": true
}
counterparty_risk_near — NEAR counterparty risk
Advertised by the server during the last successful anonymous check.
Advertised read-onlyOpen-world

Counterparty-risk verdict (allow, warn or block, with reasons) for a NEAR account, for use before paying it. Checks the OFAC SDN list and operator deny-lists, whether the account exists, its age, its contract code and code changes in the last 72 h, global contracts whose publisher can change them, and, with an Allowance vault, the vault denylist and payment history. Price: $0.02 USDC per call (x402).

counterparty_risk_near input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "account"
  ],
  "properties": {
    "vault": {
      "type": "string",
      "pattern": "^(([a-z\\d]+[-_])*[a-z\\d]+\\.)*([a-z\\d]+[-_])*[a-z\\d]+$",
      "maxLength": 64,
      "minLength": 2,
      "description": "Allowance vault: adds its on-chain denylist and its payment history with this account"
    },
    "account": {
      "type": "string",
      "pattern": "^(([a-z\\d]+[-_])*[a-z\\d]+\\.)*([a-z\\d]+[-_])*[a-z\\d]+$",
      "maxLength": 64,
      "minLength": 2,
      "description": "NEAR account id, e.g. alice.near or a 64-hex implicit account"
    },
    "network": {
      "enum": [
        "mainnet",
        "testnet"
      ],
      "type": "string",
      "description": "NEAR network; default: testnet for *.testnet accounts, mainnet otherwise"
    },
    "minAgeDays": {
      "type": "number",
      "maximum": 3650,
      "minimum": 0,
      "description": "warn when the account is younger than this (default 7)"
    },
    "codeWindowHours": {
      "type": "integer",
      "maximum": 720,
      "minimum": 1,
      "description": "warn when the contract code changed within this window (default 72)"
    }
  }
}
counterparty_risk_near annotations
{
  "readOnlyHint": true,
  "openWorldHint": true,
  "idempotentHint": true
}
verify_allowance_receipt — Allowance receipt verification (NEAR)
Advertised by the server during the last successful anonymous check.
Advertised read-onlyOpen-world

Seller-side check that an Allowance vault receipt on NEAR paid a given account at least a given amount, bound to the seller request hash, at final finality. Returns valid or the reason (not paid yet, wrong payee, amount, asset or request, unknown receipt, not a vault) and the vault code hash read at the same block. Price: $0.005 USDC per call (x402).

verify_allowance_receipt input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "vault",
    "receiptId",
    "payee",
    "minAmount"
  ],
  "properties": {
    "asset": {
      "anyOf": [
        {
          "type": "string",
          "const": "near"
        },
        {
          "type": "object",
          "required": [
            "ft"
          ],
          "properties": {
            "ft": {
              "type": "string",
              "pattern": "^(([a-z\\d]+[-_])*[a-z\\d]+\\.)*([a-z\\d]+[-_])*[a-z\\d]+$",
              "maxLength": 64,
              "minLength": 2,
              "description": "NEAR account id, e.g. alice.near or a 64-hex implicit account"
            }
          }
        }
      ],
      "description": "\"near\" (default) or {\"ft\": \"<NEP-141 token contract>\"}"
    },
    "nonce": {
      "type": "string",
      "maxLength": 256,
      "description": "alternative to requestHash: the nonce the seller issued; the hash is computed server-side"
    },
    "payee": {
      "type": "string",
      "pattern": "^(([a-z\\d]+[-_])*[a-z\\d]+\\.)*([a-z\\d]+[-_])*[a-z\\d]+$",
      "maxLength": 64,
      "minLength": 2,
      "description": "the account that must have been paid (usually the seller itself)"
    },
    "vault": {
      "type": "string",
      "pattern": "^(([a-z\\d]+[-_])*[a-z\\d]+\\.)*([a-z\\d]+[-_])*[a-z\\d]+$",
      "maxLength": 64,
      "minLength": 2,
      "description": "Allowance vault account that issued the receipt"
    },
    "network": {
      "enum": [
        "mainnet",
        "testnet"
      ],
      "type": "string",
      "description": "NEAR network; default: testnet for *.testnet accounts, mainnet otherwise"
    },
    "minAmount": {
      "type": "string",
      "pattern": "^\\d{1,40}$",
      "description": "minimum amount in base units: yoctoNEAR, or the token smallest unit when asset is an ft"
    },
    "receiptId": {
      "type": "integer",
      "maximum": 9007199254740991,
      "minimum": 0,
      "description": "receipt id returned by the vault pay call"
    },
    "requestHash": {
      "type": "string",
      "description": "base64(sha256(utf8(nonce))): the 32-byte request hash the receipt must carry"
    }
  }
}
verify_allowance_receipt annotations
{
  "readOnlyHint": true,
  "openWorldHint": true,
  "idempotentHint": true
}
screen_transaction — Transaction screening
Advertised by the server during the last successful anonymous check.
Advertised read-onlyOpen-world

Plain-language explanation of an EVM or NEAR transaction: status, method, native and token transfers, approvals (unlimited ones flagged), fee, and a risk verdict for each counterparty, with a one-line summary. Covers Base, Ethereum, OP Mainnet, Arbitrum, Base Sepolia and NEAR. Useful to check what a payment or approval really did. Price: $0.04 USDC per call (x402).

screen_transaction input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "chain",
    "txHash"
  ],
  "properties": {
    "chain": {
      "enum": [
        "ethereum",
        "base",
        "base-sepolia",
        "optimism",
        "arbitrum",
        "near",
        "near-testnet"
      ],
      "type": "string",
      "description": "ethereum, base, base-sepolia, optimism, arbitrum, near or near-testnet"
    },
    "sender": {
      "type": "string",
      "pattern": "^(([a-z\\d]+[-_])*[a-z\\d]+\\.)*([a-z\\d]+[-_])*[a-z\\d]+$",
      "maxLength": 64,
      "minLength": 2,
      "description": "NEAR only: the signer account; required on near-testnet, optional on mainnet"
    },
    "txHash": {
      "type": "string",
      "maxLength": 66,
      "minLength": 43,
      "description": "0x-prefixed 32-byte hash (EVM) or base58 hash (NEAR)"
    }
  }
}
screen_transaction annotations
{
  "readOnlyHint": true,
  "openWorldHint": true,
  "idempotentHint": true
}
render_page — Geo render from a residential IP
Advertised by the server during the last successful anonymous check.
Advertised read-onlyOpen-world

Loads a public web page in a real Chromium browser, with JavaScript run, from a residential IP in the country you choose, and returns the visible text, title, final URL and HTTP status, optionally the rendered HTML and a screenshot, plus proof of where the request came from (exit IP, country, city, timezone). Useful to see prices, content or availability as a visitor in that country sees them. Respects robots.txt; no clicks, logins or CAPTCHA solving. Price: $0.02 USDC per call (x402).

render_page input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "url",
    "country"
  ],
  "properties": {
    "url": {
      "type": "string",
      "maxLength": 2048,
      "minLength": 8,
      "description": "public http(s) URL to load"
    },
    "device": {
      "enum": [
        "desktop",
        "mobile"
      ],
      "type": "string",
      "description": "viewport and user agent class (default desktop)"
    },
    "waitMs": {
      "type": "integer",
      "maximum": 5000,
      "minimum": 0,
      "description": "extra wait after load, in ms (default 0)"
    },
    "country": {
      "type": "string",
      "pattern": "^[A-Za-z]{2}$",
      "description": "ISO 3166-1 alpha-2 country the page must be loaded from, e.g. IT, DE, US; GET /render/countries lists the ones served now"
    },
    "include": {
      "type": "object",
      "properties": {
        "html": {
          "type": "boolean",
          "description": "return the rendered HTML (up to 1 MB)"
        },
        "fullPage": {
          "type": "boolean",
          "description": "screenshot the full page instead of the viewport"
        },
        "screenshot": {
          "type": "boolean",
          "description": "return a JPEG screenshot (images are not loaded, layout is)"
        }
      },
      "additionalProperties": false
    },
    "waitUntil": {
      "enum": [
        "load",
        "networkidle"
      ],
      "type": "string",
      "description": "when the page counts as loaded (default load)"
    }
  }
}
render_page annotations
{
  "readOnlyHint": true,
  "openWorldHint": true,
  "idempotentHint": true
}
list_services — List services and prices
Advertised by the server during the last successful anonymous check.
Advertised read-only

Free. Lists the paid tools of this server with their prices, the payment network and asset, and the HTTP endpoints.

list_services input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "properties": {}
}
list_services annotations
{
  "readOnlyHint": true,
  "openWorldHint": 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
335 ms
95th percentile latency
335 ms

Maintenance history

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

  • · probe · passed · 335 ms · metadata changed · 7 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 agent-risk-desk-mcp https://x402-services.soldano.workers.dev/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 agent-risk-desk-mcp --url https://x402-services.soldano.workers.dev/mcp

Cursor

Merge this server into .cursor/mcp.json in your project, then enable agent-risk-desk-mcp in your MCP settings.
Cursor configuration
{
  "mcpServers": {
    "agent-risk-desk-mcp": {
      "url": "https://x402-services.soldano.workers.dev/mcp"
    }
  }
}

Cline

Merge this into cline_mcp_settings.json (Cline → MCP Servers → Configure).
Cline configuration
{
  "mcpServers": {
    "agent-risk-desk-mcp": {
      "type": "streamableHttp",
      "url": "https://x402-services.soldano.workers.dev/mcp",
      "disabled": false
    }
  }
}

VS Code

Merge this server into .vscode/mcp.json. Use MCP: List Servers to start agent-risk-desk-mcp and inspect its tools.
VS Code configuration
{
  "servers": {
    "agent-risk-desk-mcp": {
      "type": "http",
      "url": "https://x402-services.soldano.workers.dev/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 agent-risk-desk-mcp https://x402-services.soldano.workers.dev/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": {
    "agent-risk-desk-mcp": {
      "url": "https://x402-services.soldano.workers.dev/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": {
    "agent-risk-desk-mcp": {
      "serverUrl": "https://x402-services.soldano.workers.dev/mcp"
    }
  }
}

Let your agent find its tools

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