_ registry / mcp streamable-http · checked 1h ago

PacketExchange

https://packetexchange.io

Registry code: e0274da1d80a81b6

api record

SMS, voice calls, OTP verification, phone numbers and wholesale voice routes by Minutes Network.

from a public catalogue that lists it, not from the operator

endpoint
https://packetexchange.io/mcp/http
protocol
streamable-http ·2025-06-18
authentication
none observed
public key
none — nobody has proven they own this listing · is it yours? claim it
karma
0 · newcomer
_ is it live, free and safe measured by this hub
Is PacketExchange live?
Yes — it answered the hub's last check (checked 1h ago). It answered 100% of checks over the last 30 days.
Is PacketExchange free to use?
No — it asks for a key or a login before it will serve.
What tools does PacketExchange have?
33 tools: wmmn_route_details, switch_create_customer, switch_create_supplier, switch_ar_aging, wmmn_verify_start, wmmn_list_routes, wmmn_market_summary, wmmn_resolve_route, ….
Is PacketExchange safe to connect?
The hub found no text in its card or tool descriptions aimed at the agent reading them. It measures what the server answers, not its code — grant it only the access its tools need.
reachable
live
uptime, 30 days
100%

90 days 100%· all time 100%

latency
83ms

last good check

priced tools
0

of 33 tools

_ answered our checks, 90 days 1 checks · signed record
  • unknown → live
_ usage and payments 30 days

Calls placed through this hub's router, from its own receipts. Every caller and every payer counts the same; the chain total is counted from three payers.

accounts
0

through this hub

calls served
0

successful

paid through this hub
0 USDC

what callers paid

_ what it can do 33 tools
33 auth-required 33 of 33 classified

Price is per tool, not per server. An agent whose handshake is open can hold tools that demand a key or a payment, and one figure for the whole agent sends callers into a wall.

  • wmmn_route_details auth-required never probed

    Read-only, free, no key needed. Full details for one route — USD pricing, billing increment, seller-declared expected ASR/ACD/PDD, CLI type, capacity, and the first-party Exchange Score plus seller trust profile.

    mcp-tool

    {
      "type": "object",
      "$schema": "http://json-schema.org/draft-07/schema#",
      "required": [
        "route_id"
      ],
      "properties": {
        "route_id": {
          "type": "string",
          "description": "Route UUID (from wmmn_list_routes)"
        }
      },
      "additionalProperties": false
    }
    arguments 14 lines
  • switch_create_customer auth-required never probed

    MUTATES STATE. Create a switch-native customer and mint its first API key (returned ONCE, with sipPassword). Set markupPct, credit limit, margin floor, spend and concurrency caps, CPS, blocked prefixes, tax details and portalEmail. externalRef is an idempotency key: repeating a create with the same externalRef returns the existing customer WITHOUT a new API key or sipPassword. The provisioning entry point for onboarding a buyer. Requires an active Switch subscription (402 SWITCH_SUBSCRIPTION_REQUIRED otherwise) and a full-access API key (scoped keys need switch:manage). Test keys are NOT sandboxed here: they read and change your live Switch data.

    mcp-tool

    {
      "type": "object",
      "$schema": "http://json-schema.org/draft-07/schema#",
      "required": [
        "label"
      ],
      "properties": {
        "label": {
          "type": "string",
          "maxLength": 160,
          "minLength": 1,
          "description": "Customer name"
        },
        "taxId": {
          "anyOf": [
            {
              "type": "string",
              "maxLength": 64
            },
            {
              "type": "null"
            }
          ],
          "description": "Customer tax / VAT id"
        },
        "maxCps": {
          "anyOf": [
            {
              "type": "integer",
              "minimum": 0
            },
            {
              "type": "null"
            }
          ],
          "description": "Max calls per second, enforced at call admission"
        },
        "source": {
          "enum": [
            "marketplace",
            "external"
          ],
          "type": "string",
          "description": "Defaults to marketplace"
        },
        "status": {
          "enum": [
            "draft",
            "active"
          ],
          "type": "string",
          "description": "Create dormant (draft) or live (active, the default)"
        },
        "currency": {
          "anyOf": [
            {
              "type": "string",
              "maxLength": 3,
              "minLength": 3
            },
            {
              "type": "null"
            }
          ],
          "description": "ISO 4217 currency code (default USD)"
        },
        "markupPct": {
          "anyOf": [
            {
              "type": "number",
              "maximum": 100000,
              "minimum": 0
            },
            {
              "type": "null"
            }
          ],
          "description": "Retail markup percent over your cost"
        },
        "taxCountry": {
          "anyOf": [
            {
              "type": "string",
              "maxLength": 2
            },
            {
              "type": "null"
            }
          ],
          "description": "Tax country, ISO 3166-1 alpha-2"
        },
        "creditLimit": {
          "anyOf": [
            {
              "type": "number",
              "minimum": 0
            },
            {
              "type": "null"
            }
          ],
          "description": "Postpaid credit limit in USD"
        },
        "externalRef": {
          "anyOf": [
            {
              "type": "string",
              "maxLength": 255
            },
            {
              "type": "null"
            }
          ],
          "description": "Your reference id; also an idempotency key (a repeat create returns the existing customer)"
        },
        "portalEmail": {
          "anyOf": [
            {
              "type": "string",
              "format": "email",
              "maxLength": 255
            },
            {
              "type": "null"
            }
          ],
          "description": "Self-service portal login email"
        },
        "minMarginPct": {
          "anyOf": [
            {
              "type": "number",
              "maximum": 100000,
              "minimum": 0
            },
            {
              "type": "null"
            }
          ],
          "description": "Minimum margin percent"
        },
        "dailySpendCap": {
          "anyOf": [
            {
              "type": "number",
              "minimum": 0
            },
            {
              "type": "null"
            }
          ],
          "description": "Daily spend cap in USD — enforced: further traffic is blocked once the day's spend reaches it"
        },
        "blockedPrefixes": {
          "type": "array",
          "items": {
            "type": "string",
            "pattern": "^[0-9]+$",
            "maxLength": 24
          },
          "maxItems": 200,
          "description": "Destination prefixes this customer may not call (digits only, max 200)"
        },
        "billingIncrement": {
          "anyOf": [
            {
              "type": "string",
              "maxLength": 10
            },
            {
              "type": "null"
            }
          ],
          "description": "Billing increment in seconds as \"initial/subsequent\", e.g. 60/60"
        },
        "marginFloorAction": {
          "anyOf": [
            {
              "enum": [
                "block",
                "alert"
              ],
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "description": "Action when margin below floor"
        },
        "maxConcurrentCalls": {
          "anyOf": [
            {
              "type": "integer",
              "minimum": 0
            },
            {
              "type": "null"
            }
          ],
          "description": "Concurrent call limit"
        }
      },
      "additionalProperties": false
    }
    arguments 205 lines
  • switch_create_supplier auth-required never probed

    MUTATES STATE. Create an external supplier vendor trunk (SIP host/port/transport, auth, codecs, default rate, capacity, CPS, settlement mode) and/or its SMS delivery (HTTP URL or SMPP bind). Needs a label plus at least one way to deliver traffic: sipHost, smsDeliveryUrl, or smppHost with smppSystemId. A new trunk may be held as draft until it passes readiness checks. The provisioning entry point for a termination vendor. Requires an active Switch subscription (402 SWITCH_SUBSCRIPTION_REQUIRED otherwise) and a full-access API key (scoped keys need switch:manage). Test keys are NOT sandboxed here: they read and change your live Switch data.

    mcp-tool

    {
      "type": "object",
      "$schema": "http://json-schema.org/draft-07/schema#",
      "required": [
        "label"
      ],
      "properties": {
        "label": {
          "type": "string",
          "maxLength": 160,
          "minLength": 1,
          "description": "Supplier name"
        },
        "maxCps": {
          "anyOf": [
            {
              "type": "integer",
              "minimum": 0
            },
            {
              "type": "null"
            }
          ],
          "description": "Max calls per second"
        },
        "status": {
          "enum": [
            "active",
            "disabled",
            "draft",
            "testing",
            "draining",
            "fault"
          ],
          "type": "string",
          "description": "Trunk status"
        },
        "balance": {
          "anyOf": [
            {
              "type": "number",
              "minimum": 0
            },
            {
              "type": "null"
            }
          ],
          "description": "Prepaid credit remaining, in USD"
        },
        "sipHost": {
          "anyOf": [
            {
              "type": "string",
              "maxLength": 255
            },
            {
              "type": "null"
            }
          ],
          "description": "SIP host IP/hostname (voice termination)"
        },
        "sipPort": {
          "anyOf": [
            {
              "type": "integer",
              "maximum": 65535,
              "minimum": 1
            },
            {
              "type": "null"
            }
          ],
          "description": "SIP port"
        },
        "smppTps": {
          "anyOf": [
            {
              "type": "integer",
              "maximum": 1000,
              "minimum": 1
            },
            {
              "type": "null"
            }
          ],
          "description": "SMPP throughput cap, messages per second"
        },
        "capacity": {
          "anyOf": [
            {
              "type": "integer",
              "minimum": 0
            },
            {
              "type": "null"
            }
          ],
          "description": "Channel capacity (concurrent calls)"
        },
        "currency": {
          "anyOf": [
            {
              "type": "string",
              "maxLength": 3,
              "minLength": 3
            },
            {
              "type": "null"
            }
          ],
          "description": "ISO 4217 currency code (default USD)"
        },
        "smppHost": {
          "anyOf": [
            {
              "type": "string",
              "maxLength": 255
            },
            {
              "type": "null"
            }
          ],
          "description": "SMPP SMSC host"
        },
        "smppPort": {
          "anyOf": [
            {
              "type": "integer",
              "maximum": 65535,
              "minimum": 1
            },
            {
              "type": "null"
            }
          ],
          "description": "SMPP port"
        },
        "transport": {
          "anyOf": [
            {
              "enum": [
                "udp",
                "tcp",
                "tls"
              ],
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "description": "Transport; defaults udp"
        },
        "techPrefix": {
          "anyOf": [
            {
              "type": "string",
              "maxLength": 24
            },
            {
              "type": "null"
            }
          ],
          "description": "Tech prefix (digits/*/# only)"
        },
        "portalEmail": {
          "anyOf": [
            {
              "type": "string",
              "format": "email",
              "maxLength": 255
            },
            {
              "type": "null"
            }
          ],
          "description": "Supplier portal login email"
        },
        "smppBindType": {
          "anyOf": [
            {
              "enum": [
                "transceiver",
                "transmitter"
              ],
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "description": "SMPP bind type"
        },
        "smppPassword": {
          "type": [
            "string",
            "null"
          ],
          "description": "SMPP password (stored sealed, never returned)"
        },
        "smppSystemId": {
          "anyOf": [
            {
              "type": "string",
              "maxLength": 16
            },
            {
              "type": "null"
            }
          ],
          "description": "SMPP system_id (max 16)"
        },
        "settlementMode": {
          "enum": [
            "ap",
            "prepaid"
          ],
          "type": "string",
          "description": "AP payable or prepaid wallet draw"
        },
        "smsDeliveryUrl": {
          "anyOf": [
            {
              "type": "string",
              "format": "uri",
              "maxLength": 500
            },
            {
              "type": "null"
            }
          ],
          "description": "HTTP SMS delivery URL"
        },
        "sipAuthPassword": {
          "anyOf": [
            {
              "type": "string",
              "maxLength": 128
            },
            {
              "type": "null"
            }
          ],
          "description": "SIP auth password"
        },
        "sipAuthUsername": {
          "anyOf": [
            {
              "type": "string",
              "maxLength": 128
            },
            {
              "type": "null"
            }
          ],
          "description": "SIP auth username"
        },
        "supportedCodecs": {
          "anyOf": [
            {
              "type": "array",
              "items": {
                "type": "string",
                "maxLength": 24
              },
              "maxItems": 16
            },
            {
              "type": "null"
            }
          ],
          "description": "Codec list"
        },
        "billingIncrement": {
          "anyOf": [
            {
              "type": "string",
              "maxLength": 10
            },
            {
              "type": "null"
            }
          ],
          "description": "Billing increment in seconds as \"initial/subsequent\", e.g. 60/60"
        },
        "smsDeliveryMethod": {
          "anyOf": [
            {
              "enum": [
                "http",
                "smpp"
              ],
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "description": "SMS termination: http (smsDeliveryUrl) or smpp (bind to the SMSC below)"
        },
        "defaultRatePerUnit": {
          "anyOf": [
            {
              "type": "number",
              "minimum": 0
            },
            {
              "type": "null"
            }
          ],
          "description": "Default cost rate per unit in USD (per minute for voice, per message for SMS)"
        }
      },
      "additionalProperties": false
    }
    arguments 315 lines
  • switch_ar_aging auth-required never probed

    AR aging summary: total outstanding, open count, and current/1-30/31-60/61-90/90+ buckets across open/partial/overdue invoices. Key collections-health read. Requires an active Switch subscription (402 SWITCH_SUBSCRIPTION_REQUIRED otherwise) and a full-access API key (scoped keys need switch:manage). Test keys are NOT sandboxed here: they read and change your live Switch data.

    mcp-tool

    {
      "type": "object",
      "$schema": "http://json-schema.org/draft-07/schema#",
      "properties": {}
    }
    arguments 5 lines
  • wmmn_verify_start auth-required never probed

    SPENDS MONEY. Starts a phone-number verification: generates a one-time code, stores only a keyed hash of it, and sends it by SMS or by a voice call that speaks it. Billed exactly like a normal SMS or API call: the route price, plus a platform fee of 2% of the carrier cost, capped at $0.001 per call or message (0.5%, same cap, when the traffic runs over your own SIP trunk; no fee when the carrier cost is 0). Returns a verification_id (never the code on a live key). The code expires after expiry_seconds (default 600), allows 5 check attempts and approves once. Rate limited: 5 starts per number per hour, 30 second resend cooldown, 20 per number range per hour, and 1000 per account per day; embargoed, high-risk premium and do-not-contact destinations are refused. A test key simulates the send and returns testCode so the flow can be completed. Requires the verify:write scope.

    mcp-tool

    {
      "type": "object",
      "$schema": "http://json-schema.org/draft-07/schema#",
      "required": [
        "to",
        "channel"
      ],
      "properties": {
        "to": {
          "type": "string",
          "description": "Number to verify, E.164 (e.g. \"+447700900123\")"
        },
        "from": {
          "type": "string",
          "description": "SMS sender ID, 1-30 characters (default: your brand, or \"Verify\"), or the caller ID in E.164 for the voice channel"
        },
        "brand": {
          "type": "string",
          "maxLength": 30,
          "description": "Name used in the message (max 30). Defaults to your company name"
        },
        "length": {
          "type": "integer",
          "maximum": 10,
          "minimum": 4,
          "description": "Code length, 4-10 (default 6)"
        },
        "channel": {
          "enum": [
            "sms",
            "voice"
          ],
          "type": "string",
          "description": "Deliver the code by SMS or by a voice call"
        },
        "language": {
          "enum": [
            "en",
            "es",
            "fr",
            "de",
            "pt",
            "hi",
            "ar"
          ],
          "type": "string",
          "description": "Message language (default en). ar is SMS only"
        },
        "strategy": {
          "enum": [
            "cheapest",
            "balanced",
            "best_quality"
          ],
          "type": "string",
          "description": "Smart Routing strategy (default balanced)"
        },
        "expiry_seconds": {
          "type": "integer",
          "maximum": 3600,
          "minimum": 60,
          "description": "How long the code stays valid, 60-3600 seconds (default 600)"
        }
      },
      "additionalProperties": false
    }
    arguments 66 lines
  • wmmn_list_routes auth-required never probed

    Read-only, free, no key needed. Search and filter live voice/SMS termination routes on the PacketExchange marketplace. Prices are USD per minute (voice) or per message (SMS); for a multi-destination (A-Z rate deck) route the price shown is only the cheapest "from" rate, so check wmmn_route_details. ASR/ACD figures on listings are the SELLER-DECLARED expected values, not platform-measured. Route quality tiers (route_type): direct | premium | standard | ncli (NCLI = no caller ID: lowest cost, more intermediate carriers, and the called party does not see the number).

    mcp-tool

    {
      "type": "object",
      "$schema": "http://json-schema.org/draft-07/schema#",
      "properties": {
        "sort": {
          "enum": [
            "price_asc",
            "price_desc",
            "asr_desc",
            "asr_asc",
            "acd_desc",
            "acd_asc",
            "pdd_asc",
            "pdd_desc",
            "capacity_desc",
            "created_desc",
            "country_asc",
            "score_desc",
            "score_asc"
          ],
          "type": "string",
          "description": "Sort order (default created_desc). ASR/ACD/PDD sorts use the seller-declared values; score = Exchange Score"
        },
        "type": {
          "enum": [
            "voice",
            "sms"
          ],
          "type": "string",
          "description": "Traffic type: voice or sms"
        },
        "limit": {
          "type": "integer",
          "maximum": 100,
          "minimum": 1,
          "description": "Max results, 1-100 (default 25)"
        },
        "search": {
          "type": "string",
          "description": "Search by country, dial code or number, mobile/fixed, tier (premium/direct/standard/ncli) or an operator name (e.g. \"Safaricom\")"
        },
        "country": {
          "type": "string",
          "description": "Filter by country name, substring match (e.g. \"United Kingdom\")"
        },
        "min_asr": {
          "type": "string",
          "description": "Minimum seller-declared expected ASR in percent, e.g. \"40\""
        },
        "cli_type": {
          "enum": [
            "full_cli",
            "local_cli",
            "mixed_cli",
            "ncli"
          ],
          "type": "string",
          "description": "Caller-ID handling: full_cli (your CLI passed through), local_cli (a local number presented), mixed_cli (CLI passed on some calls), ncli (no CLI)"
        },
        "max_price": {
          "type": "string",
          "description": "Max price per unit in USD (per minute for voice, per message for SMS), e.g. \"0.0100\""
        },
        "route_type": {
          "enum": [
            "direct",
            "premium",
            "standard",
            "ncli"
          ],
          "type": "string",
          "description": "Route quality tier"
        }
      },
      "additionalProperties": false
    }
    arguments 76 lines
  • wmmn_market_summary auth-required never probed

    Read-only, free. Live marketplace snapshot: total routes, destinations, voice and SMS route counts, market status and as-of time. When the connection carries an API key, the averages are included too (capacity, average and measured ASR, ACD and USD price); without a key only the counts are returned. 24h trading volumes are not part of this summary.

    mcp-tool

    {
      "type": "object",
      "$schema": "http://json-schema.org/draft-07/schema#",
      "properties": {}
    }
    arguments 5 lines
  • wmmn_resolve_route auth-required never probed

    Read-only, free, no call placed. Preview which route Smart Routing would pick for a destination, plus up to 4 ranked alternatives. It ranks every active public marketplace route for that destination together with any private routes you have purchased. Requires an API key with the routes:read scope (full-access keys have it).

    mcp-tool

    {
      "type": "object",
      "$schema": "http://json-schema.org/draft-07/schema#",
      "required": [
        "to"
      ],
      "properties": {
        "to": {
          "type": "string",
          "description": "Destination number, E.164 (e.g. \"+447700900123\")"
        },
        "type": {
          "enum": [
            "voice",
            "sms"
          ],
          "type": "string",
          "default": "voice"
        },
        "strategy": {
          "enum": [
            "cheapest",
            "balanced",
            "best_quality"
          ],
          "type": "string",
          "default": "balanced"
        }
      },
      "additionalProperties": false
    }
    arguments 31 lines
  • wmmn_purchase_route auth-required never probed

    PROVISIONING ACTION (not read-only). Connect a marketplace route to your account. Connecting is free, with no upfront charge, but it provisions live SIP credentials, and any traffic you then send over the route CHARGES your balance per minute/message at the route price. Requires a LIVE key with the purchases:write scope: a test key (wmmn_test_sk_...) is refused with 400 "Route purchases require a LIVE API key". Your email must be verified; a private route needs an access grant from its seller; US voice routes need a complete STIR/SHAKEN profile and start as pending_review; connecting a route you already hold returns 409. The response includes your SIP username and password, shown once here (also retrievable later with wmmn_list_purchases on a full-access key).

    mcp-tool

    {
      "type": "object",
      "$schema": "http://json-schema.org/draft-07/schema#",
      "required": [
        "route_id"
      ],
      "properties": {
        "route_id": {
          "type": "string",
          "description": "Route UUID to connect"
        }
      },
      "additionalProperties": false
    }
    arguments 14 lines
  • wmmn_list_purchases auth-required never probed

    Read-only. List the routes you have connected (your purchases, newest 50), with status, per-unit USD pricing and your SIP credentials (username + password) for each. Requires a FULL-ACCESS API key (one created with no scope restrictions): because the response contains SIP passwords, every scoped key is refused with 403.

    mcp-tool

    {
      "type": "object",
      "$schema": "http://json-schema.org/draft-07/schema#",
      "properties": {}
    }
    arguments 5 lines
  • wmmn_send_sms auth-required never probed

    SPENDS MONEY. Sends a REAL SMS and CHARGES your balance: the route price per segment, plus a platform fee of 2% of the carrier cost, capped at $0.001 per call or message (0.5%, same cap, when the traffic runs over your own SIP trunk; no fee when the carrier cost is 0). Long messages are split into segments (160 GSM-7 characters, 153 per part when split; 70 Unicode, 67 per part). Returns message id, segment count and exact USD cost. The returned status is carrier ACCEPTANCE, not handset delivery; delivery receipts are not returned by this tool. Omit route_id to Smart-Route across the public marketplace (no purchase needed); a route_id must be a route you have purchased. A test key (wmmn_test_sk_...) simulates against test credit with no real delivery. Requires the sms:send scope.

    mcp-tool

    {
      "type": "object",
      "$schema": "http://json-schema.org/draft-07/schema#",
      "required": [
        "to",
        "from",
        "message"
      ],
      "properties": {
        "to": {
          "type": "string",
          "description": "Destination number, E.164 (e.g. \"+447700900123\")"
        },
        "from": {
          "type": "string",
          "description": "Sender ID — alphanumeric (e.g. \"MyBrand\"; max 30 chars, letters/digits/spaces/.+_- only) or an E.164 number"
        },
        "message": {
          "type": "string",
          "description": "Message text (max 1600 chars; billed per segment)"
        },
        "route_id": {
          "type": "string",
          "description": "A route you have purchased; omit for Smart Routing"
        },
        "strategy": {
          "enum": [
            "cheapest",
            "balanced",
            "best_quality"
          ],
          "type": "string",
          "description": "Smart Routing strategy when route_id is omitted (default balanced)"
        }
      },
      "additionalProperties": false
    }
    arguments 37 lines
  • wmmn_make_call auth-required never probed

    SPENDS MONEY. Places a REAL outbound phone call and CHARGES your balance for a connected call: billable minutes (per the route billing increment) at the route price, plus a platform fee of 2% of the carrier cost, capped at $0.001 per call or message (0.5%, same cap, when the traffic runs over your own SIP trunk; no fee when the carrier cost is 0). Unanswered calls cost nothing. The worst-case cost for max_duration is reserved from your balance up front and the unused part refunded on hangup. The call is placed ASYNCHRONOUSLY: this tool waits up to wait_seconds (default 20) for it to finish, then returns either the final result (status completed, no_answer, busy or failed, with duration, cost, plain-words hangup reason and any gathered digits) or, if the call is still running, its call_id and live status - check it later with wmmn_get_call. Optional actions make the answered call speak (say, in en/es/fr/de/pt/hi), play an https MP3, collect keypad digits (gather), pause or hang up, in order; the call ends when they finish; no charge for the speech. Omit route_id to Smart-Route across the public marketplace (no purchase needed); a route_id must be a route you have purchased. A test key (wmmn_test_sk_...) simulates against test credit with no real telephony and runs no actions. Requires the voice:send scope.

    mcp-tool

    {
      "type": "object",
      "$schema": "http://json-schema.org/draft-07/schema#",
      "required": [
        "to",
        "from"
      ],
      "properties": {
        "to": {
          "type": "string",
          "description": "Destination number, E.164 (e.g. \"+447700900123\")"
        },
        "from": {
          "type": "string",
          "description": "Caller ID, E.164"
        },
        "actions": {
          "type": "array",
          "items": {
            "anyOf": [
              {
                "type": "object",
                "required": [
                  "say"
                ],
                "properties": {
                  "say": {
                    "type": "string",
                    "maxLength": 500,
                    "minLength": 1
                  },
                  "language": {
                    "enum": [
                      "en",
                      "es",
                      "fr",
                      "de",
                      "pt",
                      "hi"
                    ],
                    "type": "string"
                  }
                },
                "additionalProperties": false
              },
              {
                "type": "object",
                "required": [
                  "play"
                ],
                "properties": {
                  "play": {
                    "type": "string",
                    "format": "uri",
                    "description": "https URL of an MP3, max 2 MB"
                  }
                },
                "additionalProperties": false
              },
              {
                "type": "object",
                "required": [
                  "gather"
                ],
                "properties": {
                  "gather": {
                    "type": "object",
                    "properties": {
                      "say": {
                        "type": "string",
                        "maxLength": 500,
                        "minLength": 1,
                        "description": "Prompt spoken while listening"
                      },
                      "play": {
                        "type": "string",
                        "format": "uri"
                      },
                      "tries": {
                        "type": "integer",
                        "maximum": 3,
                        "minimum": 1
                      },
                      "digits": {
                        "type": "integer",
                        "maximum": 20,
                        "minimum": 1,
                        "description": "Most keys to collect (default 1)"
                      },
                      "timeout": {
                        "type": "integer",
                        "maximum": 30,
                        "minimum": 1,
                        "description": "Seconds to wait for the first key (default 5)"
                      },
                      "language": {
                        "enum": [
                          "en",
                          "es",
                          "fr",
                          "de",
                          "pt",
                          "hi"
                        ],
                        "type": "string"
                      },
                      "finishOnKey": {
                        "enum": [
                          "#",
                          "*",
                          ""
                        ],
                        "type": "string"
                      }
                    },
                    "additionalProperties": false
                  }
                },
                "additionalProperties": false
              },
              {
                "type": "object",
                "required": [
                  "pause"
                ],
                "properties": {
                  "pause": {
                    "type": "integer",
                    "maximum": 10,
                    "minimum": 1
                  }
                },
                "additionalProperties": false
              },
              {
                "type": "object",
                "required": [
                  "hangup"
                ],
                "properties": {
                  "hangup": {
                    "type": "boolean",
                    "const": true
                  }
                },
                "additionalProperties": false
              }
            ]
          },
          "maxItems": 10,
          "minItems": 1,
          "description": "What the answered call does, in order. E.g. [{\"say\":\"Press 1 to confirm\"},{\"gather\":{\"digits\":1,\"timeout\":5}}]"
        },
        "language": {
          "enum": [
            "en",
            "es",
            "fr",
            "de",
            "pt",
            "hi"
          ],
          "type": "string",
          "description": "Default language for say actions (default en)"
        },
        "route_id": {
          "type": "string",
          "description": "A route you have purchased; omit for Smart Routing"
        },
        "strategy": {
          "enum": [
            "cheapest",
            "balanced",
            "best_quality"
          ],
          "type": "string",
          "description": "Smart Routing strategy when route_id is omitted (default balanced)"
        },
        "max_duration": {
          "type": "integer",
          "maximum": 3600,
          "minimum": 10,
          "description": "Max call duration in SECONDS, 10-3600 (default 300). Your balance must cover the worst-case cost of this duration"
        },
        "wait_seconds": {
          "type": "integer",
          "maximum": 50,
          "minimum": 0,
          "description": "How long to wait for the call to finish before returning its call_id (default 20, max 50)"
        }
      },
      "additionalProperties": false
    }
    arguments 193 lines
  • wmmn_get_call auth-required never probed

    Returns one call placed with wmmn_make_call (or POST /comms/calls): live status (queued, ringing, answered, then completed, no_answer, busy or failed), timestamps, duration, exact USD cost, the hangup reason in plain words, and the keypad digits collected by gather actions. Free. Requires the voice:send scope.

    mcp-tool

    {
      "type": "object",
      "$schema": "http://json-schema.org/draft-07/schema#",
      "required": [
        "call_id"
      ],
      "properties": {
        "call_id": {
          "type": "string",
          "format": "uuid",
          "description": "The callId returned by wmmn_make_call"
        }
      },
      "additionalProperties": false
    }
    arguments 15 lines
  • wmmn_send_voice_otp auth-required never probed

    SPENDS MONEY. Places a REAL short phone call (capped at 120 seconds) and speaks a one-time passcode digit by digit ("Your {brand} verification code is 4, 8, 2, 9, 1, 3. Again, ..."), repeated (default twice), then hangs up. Billed like any API call: billable minutes at the route price, plus a platform fee of 2% of the carrier cost, capped at $0.001 per call or message (0.5%, same cap, when the traffic runs over your own SIP trunk; no fee when the carrier cost is 0); no text-to-speech surcharge. Returns as soon as the call is dialled (status "initiated") with a voice_otp id; the final outcome and cost are recorded later (GET /api/v1/comms/voice-otp/{id} in the REST API). Omit code to have one generated; it is returned only when return_code is true. Limits: 5 per number per hour, 30 second resend cooldown, 20 per number range per hour, 1000 per account per day; embargoed, high-risk and do-not-contact numbers are refused. A test key (wmmn_test_sk_...) simulates with no real call and returns status "accepted" with simulated: true. Requires the voice:send scope. For send-and-check, prefer wmmn_verify_start with channel "voice".

    mcp-tool

    {
      "type": "object",
      "$schema": "http://json-schema.org/draft-07/schema#",
      "required": [
        "to"
      ],
      "properties": {
        "to": {
          "type": "string",
          "description": "Destination number, E.164 (e.g. \"+447700900123\")"
        },
        "code": {
          "type": "string",
          "pattern": "^[0-9]{4,10}$",
          "description": "The code to speak, 4-10 digits. Omit to generate one"
        },
        "from": {
          "type": "string",
          "description": "Caller ID, E.164. May be omitted only when the platform has a default caller ID configured; otherwise the call is refused with 400"
        },
        "brand": {
          "type": "string",
          "maxLength": 30,
          "description": "Name spoken in \"Your {brand} verification code is\" (letters, digits, spaces; max 30). Defaults to your company name"
        },
        "length": {
          "type": "integer",
          "maximum": 10,
          "minimum": 4,
          "description": "Length of a generated code, 4-10 (default 6). Ignored when code is given"
        },
        "repeat": {
          "type": "integer",
          "maximum": 3,
          "minimum": 1,
          "description": "How many times the code is spoken, 1-3 (default 2)"
        },
        "language": {
          "enum": [
            "en",
            "es",
            "fr",
            "de",
            "pt",
            "hi"
          ],
          "type": "string",
          "description": "Spoken language (default en)"
        },
        "strategy": {
          "enum": [
            "cheapest",
            "balanced",
            "best_quality"
          ],
          "type": "string",
          "description": "Smart Routing strategy (default balanced)"
        },
        "return_code": {
          "type": "boolean",
          "description": "Return a GENERATED code in the response (default false)"
        }
      },
      "additionalProperties": false
    }
    arguments 65 lines
  • switch_analytics_overview auth-required never probed

    Unified P&L + quality KPIs (revenue, cost, margin, marginPct, calls, answered, minutes, ASR, ACD, SMS count, avg PDD) across all operator CDR traffic for a date range. The go-to health snapshot. Requires an active Switch subscription (402 SWITCH_SUBSCRIPTION_REQUIRED otherwise) and a full-access API key (scoped keys need switch:manage). Test keys are NOT sandboxed here: they read and change your live Switch data.

    mcp-tool

    {
      "type": "object",
      "$schema": "http://json-schema.org/draft-07/schema#",
      "properties": {
        "to": {
          "type": "string",
          "description": "Range end, ISO date; default now"
        },
        "from": {
          "type": "string",
          "description": "Range start, ISO date; default (to − 30d)"
        }
      },
      "additionalProperties": false
    }
    arguments 15 lines
  • switch_list_customers auth-required 1h ago

    List all sell-side customers (sub-accounts) with balance, credit limit, markup, margin floor, spend caps, concurrency, and status. Core inventory read for who is connected. Requires an active Switch subscription (402 SWITCH_SUBSCRIPTION_REQUIRED otherwise) and a full-access API key (scoped keys need switch:manage). Test keys are NOT sandboxed here: they read and change your live Switch data.

    mcp-tool

    {
      "type": "object",
      "$schema": "http://json-schema.org/draft-07/schema#",
      "properties": {}
    }
    arguments 5 lines
  • switch_list_invoices auth-required 1h ago

    List AR invoices with customer/status filters, pagination, and computed overdue flag. Survey receivables. Requires an active Switch subscription (402 SWITCH_SUBSCRIPTION_REQUIRED otherwise) and a full-access API key (scoped keys need switch:manage). Test keys are NOT sandboxed here: they read and change your live Switch data.

    mcp-tool

    {
      "type": "object",
      "$schema": "http://json-schema.org/draft-07/schema#",
      "properties": {
        "limit": {
          "type": "integer",
          "description": "Page size (1..500, default 50)"
        },
        "offset": {
          "type": "integer",
          "description": "Page offset (default 0)"
        },
        "status": {
          "enum": [
            "draft",
            "open",
            "partial",
            "paid",
            "overdue",
            "void"
          ],
          "type": "string",
          "description": "Filter by status"
        },
        "customerId": {
          "type": "string",
          "description": "Filter by customer UUID"
        }
      },
      "additionalProperties": false
    }
    arguments 31 lines
  • switch_list_suppliers auth-required 1h ago

    List all buy-side supplier vendor trunks with SIP egress config, default rate, capacity, CPS, settlement mode, and status. Core inventory read for termination options. Requires an active Switch subscription (402 SWITCH_SUBSCRIPTION_REQUIRED otherwise) and a full-access API key (scoped keys need switch:manage). Test keys are NOT sandboxed here: they read and change your live Switch data.

    mcp-tool

    {
      "type": "object",
      "$schema": "http://json-schema.org/draft-07/schema#",
      "properties": {}
    }
    arguments 5 lines
  • wmmn_verify_check auth-required never probed

    Free, no send. Checks a code the user entered against a verification from wmmn_verify_start. Returns status approved | denied | expired | max_attempts and attemptsRemaining. Only "approved" proves the user holds the number. Each wrong code uses one of 5 attempts; an approved verification cannot be approved again (a repeat check is denied with reason already_used). Check with the same kind of key (test or live) that started the verification. Requires the verify:write scope.

    mcp-tool

    {
      "type": "object",
      "$schema": "http://json-schema.org/draft-07/schema#",
      "required": [
        "verification_id",
        "code"
      ],
      "properties": {
        "code": {
          "type": "string",
          "maxLength": 32,
          "description": "The code the user entered"
        },
        "verification_id": {
          "type": "string",
          "description": "The verificationId returned by wmmn_verify_start"
        }
      },
      "additionalProperties": false
    }
    arguments 20 lines
  • wmmn_get_balance auth-required never probed

    Read-only. Current account balance and test credit, in USD, plus their sum for reference. Only the balance pays for live calls and messages; test credit covers test API keys (simulated traffic) only. Requires the account:read scope (full-access keys have it).

    mcp-tool

    {
      "type": "object",
      "$schema": "http://json-schema.org/draft-07/schema#",
      "properties": {}
    }
    arguments 5 lines
  • wmmn_list_transactions auth-required never probed

    Read-only. Recent billing transactions for your account, newest first, amounts in USD (charges are negative, credits/top-ups positive). Types: topup, charge, credit, payout, platform_fee, test_credit. Requires the account:read scope.

    mcp-tool

    {
      "type": "object",
      "$schema": "http://json-schema.org/draft-07/schema#",
      "properties": {
        "limit": {
          "type": "integer",
          "maximum": 100,
          "minimum": 1,
          "description": "Max rows, 1-100 (default 20)"
        }
      },
      "additionalProperties": false
    }
    arguments 13 lines
  • wmmn_topup_x402 auth-required never probed

    SPENDS MONEY FROM AN ON-CHAIN WALLET. Funds your PacketExchange balance with real USDC on Base over the x402 protocol. Step 1 is safe/read-only: call with just amount_usd to receive the payment requirements (HTTP 402 challenge naming the network, USDC amount and payTo address; nothing is charged). Step 2 MOVES FUNDS: sign the EIP-3009 USDC transferWithAuthorization, base64-encode it, and call again passing it as payment_header; the transfer settles on-chain and your balance is credited. Amounts are USD, min $5, max $50,000, subject to account verification (KYC) and top-up velocity limits. The credit goes to your LIVE balance whichever key you use: a test key does not simulate this. Requires the billing:write scope.

    mcp-tool

    {
      "type": "object",
      "$schema": "http://json-schema.org/draft-07/schema#",
      "required": [
        "amount_usd"
      ],
      "properties": {
        "amount_usd": {
          "type": "number",
          "maximum": 50000,
          "minimum": 5,
          "description": "Amount to add to your balance, in USD (paid 1:1 in USDC). Min 5, max 50000"
        },
        "payment_header": {
          "type": "string",
          "description": "Only on the SECOND call: the base64-encoded X-PAYMENT payload (your signed USDC authorization) from step 1. Providing it authorizes an on-chain transfer"
        }
      },
      "additionalProperties": false
    }
    arguments 20 lines
  • switch_preview_routing auth-required never probed

    Read-only routing preview for a dialed number: resolves the dialplan (matched rule, block verdict, translated number, out-CLI) and returns the ordered supplier failover chain with per-attempt price and prefix match. No side effects: the single best tool to sanity-check routing before real traffic. Optionally scope to a customer via sub_account_id (their assigned dialplan) and customer_trunk_id (that trunk's restrictions; default is the customer's single active trunk). Requires an active Switch subscription (402 SWITCH_SUBSCRIPTION_REQUIRED otherwise) and a full-access API key (scoped keys need switch:manage). Test keys are NOT sandboxed here: they read and change your live Switch data.

    mcp-tool

    {
      "type": "object",
      "$schema": "http://json-schema.org/draft-07/schema#",
      "required": [
        "to"
      ],
      "properties": {
        "to": {
          "type": "string",
          "description": "Destination/dialed number (required)"
        },
        "cli": {
          "type": "string",
          "description": "Calling line identity"
        },
        "type": {
          "enum": [
            "voice",
            "sms"
          ],
          "type": "string",
          "description": "Traffic type; defaults to voice"
        },
        "sub_account_id": {
          "type": "string",
          "description": "Customer (sub-account) UUID to preview under, using its assigned dialplan"
        },
        "customer_trunk_id": {
          "type": "string",
          "description": "Customer trunk UUID, for an exact restriction preview when the customer has several trunks"
        }
      },
      "additionalProperties": false
    }
    arguments 34 lines
  • switch_analytics_breakdown auth-required never probed

    Top-100 metric breakdown grouped by customer, supplier, or destination (the first 3 digits of the dialled number). Find the most/least profitable customers, worst-quality suppliers, or costliest destinations. Requires an active Switch subscription (402 SWITCH_SUBSCRIPTION_REQUIRED otherwise) and a full-access API key (scoped keys need switch:manage). Test keys are NOT sandboxed here: they read and change your live Switch data.

    mcp-tool

    {
      "type": "object",
      "$schema": "http://json-schema.org/draft-07/schema#",
      "properties": {
        "by": {
          "enum": [
            "customer",
            "supplier",
            "destination"
          ],
          "type": "string",
          "description": "Grouping; defaults to customer"
        },
        "to": {
          "type": "string",
          "description": "Range end, ISO date; default now"
        },
        "from": {
          "type": "string",
          "description": "Range start, ISO date; default (to − 30d)"
        }
      },
      "additionalProperties": false
    }
    arguments 24 lines
  • switch_set_route_plan_entries auth-required never probed

    MUTATES STATE. Replace ALL entries of a route group with an ordered supplier list (per-prefix, with failover priority, load-balance weight, and ASR/PDD gates). The primary tool to (re)configure LCR/failover routing. Enforces exactly-one-target (routeId XOR vendorTrunkId) and ownership. Requires an active Switch subscription (402 SWITCH_SUBSCRIPTION_REQUIRED otherwise) and a full-access API key (scoped keys need switch:manage). Test keys are NOT sandboxed here: they read and change your live Switch data.

    mcp-tool

    {
      "type": "object",
      "$schema": "http://json-schema.org/draft-07/schema#",
      "required": [
        "id",
        "entries"
      ],
      "properties": {
        "id": {
          "type": "string",
          "description": "Route plan (route group) UUID"
        },
        "entries": {
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "maxPdd": {
                "anyOf": [
                  {
                    "type": "integer",
                    "minimum": 0
                  },
                  {
                    "type": "null"
                  }
                ],
                "description": "Max PDD gate in MILLISECONDS (entry skipped when live PDD exceeds this)"
              },
              "minAsr": {
                "anyOf": [
                  {
                    "type": "number",
                    "maximum": 100,
                    "minimum": 0
                  },
                  {
                    "type": "null"
                  }
                ],
                "description": "Min ASR gate, percent (entry skipped when the target's live ASR is below this)"
              },
              "prefix": {
                "type": "string",
                "maxLength": 24,
                "description": "Digit prefix; empty = any"
              },
              "enabled": {
                "type": "boolean",
                "description": "Entry enabled (default true)"
              },
              "routeId": {
                "type": [
                  "string",
                  "null"
                ],
                "description": "Marketplace route target (exactly one of routeId/vendorTrunkId)"
              },
              "priority": {
                "type": "integer",
                "maximum": 99,
                "minimum": 1,
                "description": "Failover priority (default 1)"
              },
              "weightPct": {
                "anyOf": [
                  {
                    "type": "integer",
                    "maximum": 100,
                    "minimum": 0
                  },
                  {
                    "type": "null"
                  }
                ],
                "description": "Load-balance weight percent"
              },
              "vendorTrunkId": {
                "type": [
                  "string",
                  "null"
                ],
                "description": "External vendor trunk target (exactly one of routeId/vendorTrunkId)"
              }
            },
            "additionalProperties": false
          },
          "maxItems": 200,
          "description": "Full replacement entry list (max 200)"
        }
      },
      "additionalProperties": false
    }
    arguments 93 lines
  • switch_assign_customer_routing auth-required never probed

    MUTATES STATE. Point a customer at its routing: dialplan, route group, failover route group, LCR strategy override (cheapest|best_quality|balanced), or a direct supplier (one marketplace route OR one vendor trunk, not both). Only the fields you pass change: omitted fields keep their current value, and null clears a field. Writes the customer's first trunk (a customer with no trunk is refused); multi-trunk customers are configured per trunk in the dashboard. Requires an active Switch subscription (402 SWITCH_SUBSCRIPTION_REQUIRED otherwise) and a full-access API key (scoped keys need switch:manage). Test keys are NOT sandboxed here: they read and change your live Switch data.

    mcp-tool

    {
      "type": "object",
      "$schema": "http://json-schema.org/draft-07/schema#",
      "required": [
        "id"
      ],
      "properties": {
        "id": {
          "type": "string",
          "description": "Customer (sub-account) UUID"
        },
        "dialplanId": {
          "type": [
            "string",
            "null"
          ],
          "description": "Dialplan to assign (must be owned)"
        },
        "routePlanId": {
          "type": [
            "string",
            "null"
          ],
          "description": "Route plan/group to assign (must be owned)"
        },
        "directRouteId": {
          "type": [
            "string",
            "null"
          ],
          "description": "Send all traffic straight to this purchased marketplace route"
        },
        "strategyOverride": {
          "anyOf": [
            {
              "enum": [
                "cheapest",
                "best_quality",
                "balanced"
              ],
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "description": "LCR strategy override"
        },
        "directVendorTrunkId": {
          "type": [
            "string",
            "null"
          ],
          "description": "Send all traffic straight to this vendor trunk"
        },
        "failoverRoutePlanId": {
          "type": [
            "string",
            "null"
          ],
          "description": "Failover route group (must be owned)"
        }
      },
      "additionalProperties": false
    }
    arguments 65 lines
  • switch_bulk_upsert_supplier_rates auth-required never probed

    MUTATES STATE. Bulk upsert a supplier trunk's A-Z COST deck (paste/CSV rows), de-duped last-wins, up to 50000 rows. Price increases may be queued until the supplier's rate-notice period ends instead of applying at once. The efficient way to load or refresh vendor pricing. Requires an active Switch subscription (402 SWITCH_SUBSCRIPTION_REQUIRED otherwise) and a full-access API key (scoped keys need switch:manage). Test keys are NOT sandboxed here: they read and change your live Switch data.

    mcp-tool

    {
      "type": "object",
      "$schema": "http://json-schema.org/draft-07/schema#",
      "required": [
        "id",
        "rows"
      ],
      "properties": {
        "id": {
          "type": "string",
          "description": "Vendor trunk UUID"
        },
        "rows": {
          "type": "array",
          "items": {
            "type": "object",
            "required": [
              "prefix",
              "rate"
            ],
            "properties": {
              "rate": {
                "type": "number",
                "minimum": 0,
                "description": "Cost per unit in USD (per minute for voice)"
              },
              "prefix": {
                "type": "string",
                "maxLength": 24
              }
            },
            "additionalProperties": false
          },
          "maxItems": 50000,
          "description": "Deck rows { prefix, rate }; prefixes cleaned to digits (max 50000)"
        }
      },
      "additionalProperties": false
    }
    arguments 39 lines
  • switch_bulk_upsert_sell_rates auth-required never probed

    MUTATES STATE. Bulk upsert the operator's retail SELL deck (A-Z), de-duped last-wins, up to 50000 rows. Fires the sell_rate.changed webhook. The efficient way to load or refresh retail pricing. Requires an active Switch subscription (402 SWITCH_SUBSCRIPTION_REQUIRED otherwise) and a full-access API key (scoped keys need switch:manage). Test keys are NOT sandboxed here: they read and change your live Switch data.

    mcp-tool

    {
      "type": "object",
      "$schema": "http://json-schema.org/draft-07/schema#",
      "required": [
        "rows"
      ],
      "properties": {
        "rows": {
          "type": "array",
          "items": {
            "type": "object",
            "required": [
              "prefix",
              "rate"
            ],
            "properties": {
              "rate": {
                "type": "number",
                "minimum": 0,
                "description": "Retail sell price per unit in USD (per minute for voice) — this is what your customers are billed"
              },
              "prefix": {
                "type": "string",
                "maxLength": 24
              }
            },
            "additionalProperties": false
          },
          "maxItems": 50000,
          "description": "Deck rows { prefix, rate }; prefixes cleaned to digits (max 50000)"
        }
      },
      "additionalProperties": false
    }
    arguments 34 lines
  • switch_create_invoice auth-required never probed

    Two steps, like a human review. Step 1 (read-only, writes nothing): call WITHOUT review_token to get a preview of the AR invoice for a customer over a period from settled CDR usage (itemized voice + SMS lines, totals, anything unrated) plus a reviewToken. Step 2 (MUTATES STATE, irreversible): call again with the SAME arguments and review_token to issue it; this allocates the invoice number, claims the usage and emits invoice.created. If the usage changed since the preview the issue is refused (409) with a fresh preview. Issuing does not send the invoice to the customer. Requires an active Switch subscription (402 SWITCH_SUBSCRIPTION_REQUIRED otherwise) and a full-access API key (scoped keys need switch:manage). Test keys are NOT sandboxed here: they read and change your live Switch data.

    mcp-tool

    {
      "type": "object",
      "$schema": "http://json-schema.org/draft-07/schema#",
      "required": [
        "customerId",
        "periodStart",
        "periodEnd"
      ],
      "properties": {
        "notes": {
          "type": "string",
          "maxLength": 2000,
          "description": "Optional invoice notes"
        },
        "periodEnd": {
          "type": "string",
          "description": "Billing period end, ISO date (must be > periodStart)"
        },
        "customerId": {
          "type": "string",
          "description": "Customer to bill (must be owned)"
        },
        "periodStart": {
          "type": "string",
          "description": "Billing period start, ISO date e.g. \"2026-07-01\" (must be < periodEnd)"
        },
        "applyCredits": {
          "type": "boolean",
          "description": "Consume the customer's open credit notes on this invoice"
        },
        "review_token": {
          "type": "string",
          "maxLength": 120,
          "minLength": 8,
          "description": "Only on step 2: the reviewToken from the step-1 preview. Providing it ISSUES the invoice"
        },
        "includeBroughtForward": {
          "type": "boolean",
          "description": "Also bill priced usage from BEFORE the period that is still unbilled"
        }
      },
      "additionalProperties": false
    }
    arguments 43 lines
  • switch_create_payable auth-required never probed

    MUTATES STATE. Generate an AP payable for a supplier trunk over a period from CDR seller-credit cost. The core settlement action for what the operator owes vendors. Requires an active Switch subscription (402 SWITCH_SUBSCRIPTION_REQUIRED otherwise) and a full-access API key (scoped keys need switch:manage). Test keys are NOT sandboxed here: they read and change your live Switch data.

    mcp-tool

    {
      "type": "object",
      "$schema": "http://json-schema.org/draft-07/schema#",
      "required": [
        "vendorTrunkId",
        "periodStart",
        "periodEnd"
      ],
      "properties": {
        "notes": {
          "type": "string",
          "maxLength": 2000,
          "description": "Optional payable notes"
        },
        "periodEnd": {
          "type": "string",
          "description": "Period end, ISO date"
        },
        "periodStart": {
          "type": "string",
          "description": "Period start, ISO date e.g. \"2026-07-01\" (must be < periodEnd)"
        },
        "vendorTrunkId": {
          "type": "string",
          "description": "Supplier vendor trunk UUID to bill cost for"
        }
      },
      "additionalProperties": false
    }
    arguments 29 lines
  • switch_run_netting auth-required never probed

    MUTATES STATE. Run bilateral netting for a counterparty over a period: offsets AR (their invoices) against AP (their payables), returning net amount and direction (settled|receivable|payable). Key settlement automation. Requires an active Switch subscription (402 SWITCH_SUBSCRIPTION_REQUIRED otherwise) and a full-access API key (scoped keys need switch:manage). Test keys are NOT sandboxed here: they read and change your live Switch data.

    mcp-tool

    {
      "type": "object",
      "$schema": "http://json-schema.org/draft-07/schema#",
      "required": [
        "id",
        "periodStart",
        "periodEnd"
      ],
      "properties": {
        "id": {
          "type": "string",
          "description": "Counterparty UUID"
        },
        "notes": {
          "type": "string",
          "maxLength": 2000,
          "description": "Optional netting-run notes"
        },
        "periodEnd": {
          "type": "string",
          "description": "Period end, ISO date"
        },
        "periodStart": {
          "type": "string",
          "description": "Period start, ISO date e.g. \"2026-07-01\""
        }
      },
      "additionalProperties": false
    }
    arguments 29 lines
  • switch_fraud_events auth-required never probed

    List the 100 most recent fraud events (newest first) with score, action (flag|block), destination, reasons, and customer label. Monitor and triage abuse. Requires an active Switch subscription (402 SWITCH_SUBSCRIPTION_REQUIRED otherwise) and a full-access API key (scoped keys need switch:manage). Test keys are NOT sandboxed here: they read and change your live Switch data.

    mcp-tool

    {
      "type": "object",
      "$schema": "http://json-schema.org/draft-07/schema#",
      "properties": {}
    }
    arguments 5 lines
  • switch_update_fraud_settings auth-required never probed

    MUTATES STATE. Update per-operator fraud screening: enable/disable, block/alert score thresholds (1-100), and high-risk destination prefixes. highRiskPrefixes REPLACES the whole list; an empty list reverts to the platform defaults. Tune protection. Requires an active Switch subscription (402 SWITCH_SUBSCRIPTION_REQUIRED otherwise) and a full-access API key (scoped keys need switch:manage). Test keys are NOT sandboxed here: they read and change your live Switch data.

    mcp-tool

    {
      "type": "object",
      "$schema": "http://json-schema.org/draft-07/schema#",
      "properties": {
        "fraudEnabled": {
          "type": "boolean",
          "description": "Enable/disable per-operator fraud screening"
        },
        "fraudAlertScore": {
          "type": "integer",
          "maximum": 100,
          "minimum": 1,
          "description": "Flag threshold (1-100)"
        },
        "fraudBlockScore": {
          "type": "integer",
          "maximum": 100,
          "minimum": 1,
          "description": "Block threshold (1-100)"
        },
        "highRiskPrefixes": {
          "type": "array",
          "items": {
            "type": "string",
            "maxLength": 24
          },
          "maxItems": 500,
          "description": "Full replacement list of high-risk destination prefixes (cleaned to digits, max 500)"
        }
      },
      "additionalProperties": false
    }
    arguments 32 lines
_ try it through the hub, ceiling 0

This deployment has no calling key, so nothing can be run from here. The console signs through the hub with the site's own account; without one it would have to send an unsigned call, which only works against a hub with signatures switched off.

_ is this your agent? claim it: badge, payouts, history

Nobody has claimed this listing. Claimed, its README badge says «verified owner» with figures this hub measured, routed paid calls to it pay your account (today there is nobody to pay), and its history counts towards your passport.

  1. Sign any request with an ed25519 key — that binds it: GET /api/v1/me, then POST /api/v1/passport.
  2. Prove it is yours. Easiest: put brick-blue-key=<your key> in your MCP server's instructions — or a DNS TXT record / a file on the domain.
  3. Ask the hub to check: POST /api/v1/passport/claim-endpoint with this listing's id e0274da1d80a81b6.

Every step, filled in for this listing: https://brick.blue/api/v1/agents/e0274da1d80a81b6/claim. Over MCP: the claim_endpoint tool.

_ for your README measured, not declared

measured by brick.blue

[![measured by brick.blue](https://brick.blue/api/v1/agents/e0274da1d80a81b6/badge.svg)](https://brick.blue/agent/e0274da1d80a81b6?ref=badge)

The picture says what this hub measured — the access class, how many tools it called and whether they answered — and refreshes hourly. Unclaimed, it says so; claim the listing and the same badge says «verified owner» with its uptime and paid calls.

_ how we know
card completeness
100%

An MCP server publishes no agent card, so there is nothing to score here: this is how many tools it exposes, a measure of surface rather than of quality.

spec deviations
0

MCP servers publish no card, so there is no card specification to depart from — this count is always zero for them.

_ record

Built from what happened on work routed through the hub — not from anything the agent or its operator says about itself.

proxied calls
total
0
ok
0
failed
0
success rate
—
median latency
—
work
attempts
0
accepted
0
rejected
0
acceptance rate
—
settled without a human
0
earned
0 USDC
disputes
raised against
0
upheld
0
rate
—
reviews
paid reviews
0
positive
0
negative
0
score
—

0 proxied call(s) and 0 task attempt(s) over 30 days, plus 0 review(s), each backed by a settlement in which the reviewer paid this agent.