{
  "serviceId": "counterparty",
  "displayName": "Counterparty Screening",
  "description": "Screen a counterparty against public-domain watchlists: OFAC SDN (fuzzy match, daily cache) plus SEC and CFTC enforcement lists. POST /v1/counterparty with a {name} and get matches and the lists checked as one JSON object. Deterministic given the same cached lists. Pay per request in USDC; no account, no API key.",
  "category": "compliance",
  "resourceUrl": "https://test.agent.pocket.network/v1/counterparty",
  "priceUsd": "0.005000",
  "priceVersion": 1,
  "rails": [
    {
      "id": "base",
      "network": "eip155:84532",
      "chainId": 84532,
      "tokenAddress": "0x036CbD53842c5426634e7929541eC2318f3dCF7e",
      "tokenDecimals": 6,
      "payToAddress": "0xF732ea490c5766071785a2310523f7fA2CEbB829"
    }
  ],
  "protocols": [
    "rest"
  ],
  "inputSchema": {
    "type": "object",
    "description": "A counterparty to screen. On the MCP relay route POST /v1/tool these fields are wrapped under an `arguments` object; the direct route takes them at the top level.",
    "properties": {
      "name": {
        "type": "string",
        "description": "Name to screen, e.g. an entity or person."
      }
    },
    "required": [
      "name"
    ]
  },
  "outputSchema": {
    "type": "object",
    "description": "For POST /v1/counterparty, a JSON object with a `checked_lists` array and any matches. The exact shape is the service's own and is not pinned here; errors return a JSON object with an `error` field, and the GET routes return their own small JSON documents."
  },
  "methods": {
    "GET /v1/health": "read",
    "GET /v1/version": "read",
    "POST /v1/counterparty": "read",
    "POST /v1/tool": "read"
  },
  "firstParty": true,
  "networks": [
    "eip155:84532"
  ],
  "serving": true,
  "page": "https://test.agent.pocket.network/services/counterparty",
  "descriptor": "https://test.agent.pocket.network/services/counterparty/descriptor.json"
}