{
  "data": {
    "a": {
      "slug": "bandwidth-voice",
      "name": "Bandwidth Voice API + MCP",
      "vendor": "Bandwidth",
      "vendorUrl": "https://www.bandwidth.com",
      "kind": "http-api",
      "category": "voice-calling",
      "summary": "Programmable voice on Bandwidth's own US carrier network, with BXML call control, bidirectional WebSocket media streams, recording, transcription and transfers.",
      "url": "https://www.anchorterminal.com/tools/bandwidth-voice",
      "markdownUrl": "https://www.anchorterminal.com/tools/bandwidth-voice.md",
      "slimMarkdownUrl": "https://www.anchorterminal.com/tools/bandwidth-voice.min.md",
      "jsonUrl": "https://www.anchorterminal.com/api/v1/tools/bandwidth-voice.json",
      "dns": "bandwidth-voice.grade.anchorterminal.com",
      "repo": "https://github.com/Bandwidth/mcp-server",
      "transports": [
        "http",
        "stdio",
        "streamable-http"
      ],
      "remoteUrl": "https://voice.bandwidth.com/api/v2",
      "packages": [
        {
          "registry": "npm",
          "name": "bandwidth-sdk"
        },
        {
          "registry": "pypi",
          "name": "bandwidth-sdk"
        }
      ],
      "auth": "oauth",
      "authNotes": "OAuth 2.0 client credentials. Exchange the client ID and secret at api.bandwidth.com/api/v1/oauth2/token for a Bearer token. Legacy Basic-auth API users are being migrated. The MCP server takes BW_CLIENT_ID and BW_CLIENT_SECRET.",
      "pricing": "usage",
      "pricingNotes": "Free Build trial with 3,000 credits, a US number and no card, then pay as you go. US local outbound $0.01 and inbound $0.0055 a minute. Recording $0.002 a minute, transcription $0.045 standard or $0.0451 real time, media streaming $0.0035 one-way or $0.004 bidirectional. Number rental and SIP trunking are quoted by sales (https://www.bandwidth.com/pricing/).",
      "priceSummary": "Pay per use",
      "where": "both",
      "x402": {
        "level": "no",
        "evidence": "No x402 or stablecoin payment path in the voice docs, pricing or llms.txt (checked 2026-09-30).",
        "endpoints": []
      },
      "toolCount": null,
      "popularity": {
        "githubStars": 2,
        "npmWeekly": 12740,
        "pypiWeekly": 39218,
        "asOf": "2026-09-30"
      },
      "docsUrl": "https://dev.bandwidth.com/docs/voice",
      "llmsTxt": "https://dev.bandwidth.com/llms.txt",
      "openapi": "https://dev.bandwidth.com/spec/voice.yml",
      "capabilities": [
        "voice.calls",
        "voice.numbers",
        "voice.streaming",
        "voice.sip",
        "voice.recording",
        "voice.transfer"
      ],
      "tags": [
        "hosted",
        "no-card",
        "mcp",
        "llms-txt",
        "openapi",
        "typescript",
        "python",
        "webhooks",
        "streaming"
      ],
      "lastRelease": "2026-10-16",
      "graded": true,
      "anchor": {
        "graded": true,
        "score": 69.5,
        "grade": "B",
        "agentReady": false,
        "rank": 237,
        "ranked": true,
        "rankOf": 1486,
        "categoryRank": 3,
        "methodology": "0.7",
        "run": "2026-10-01",
        "scores": {
          "ergonomics": 65,
          "maintenance": 78,
          "payments": 35,
          "reliability": 73,
          "schema": 88,
          "security": 70,
          "transparency": 75
        },
        "pending": [
          "performance",
          "tasks"
        ],
        "assessment": {
          "confidence": "medium",
          "date": "2026-11-02"
        },
        "negative": 0,
        "verdict": "5 calls a second and 100 active sessions by default, with excess calls queued, a no-card Build trial and a sub-processor list with locations. Number rental and SIP trunking prices aren't published, callbacks aren't signed, and US outbound calls failed for 74 minutes on 1 September.",
        "bestFor": "US and Canada outbound voice agents that need capacity from day one and a carrier-owned network.",
        "strengths": [
          "5 calls a second and 100 active sessions by default, with excess calls queued",
          "No-card Build trial with 3,000 credits, a US number and SIP trunking",
          "OAuth 2.0 client credentials with 1-hour tokens, per-credential roles and secret rotation",
          "SOC 2 Type II, ISO 27001 and a public bug bounty with a vulnerability reporting page",
          "Sub-processor list names the voice recording, text-to-speech and transcription processors and their locations"
        ],
        "weaknesses": [
          "Number rental and SIP trunking prices aren't published",
          "No callback signing or security.txt found",
          "US outbound calls failed with 404s for 74 minutes on 1 September 2026",
          "No Retry-After or backoff guidance on 429, and no SLA found",
          "MCP server is beta, installed by git clone, with no licence file and no commit since 21 July 2026"
        ],
        "agentNotes": [
          "Get a token from the OAuth endpoint first, then POST to /accounts/{accountId}/calls with an applicationId and answerUrl",
          "Keep the call alive with Pause or a redirect while a bidirectional stream runs, or it hangs up when BXML runs out",
          "Read the 429 message to tell a rate limit from a concurrency limit before retrying",
          "Load the MCP server with BW_MCP_PROFILE=voice to keep the tool list short"
        ],
        "metrics": {
          "kind": "remote",
          "measured": false
        },
        "reviewCount": 2,
        "avgRating": 3,
        "history": [
          {
            "basis": "public evidence",
            "confidence": "medium",
            "grade": "B",
            "methodology": "0.7",
            "pending": [
              "performance",
              "tasks"
            ],
            "run": "2026-10-01",
            "runLabel": "October 2026 research run",
            "score": 69.5
          }
        ],
        "editorialScores": {
          "ergonomics": 65,
          "maintenance": 78,
          "payments": 35,
          "reliability": 73,
          "schema": 88,
          "security": 70,
          "transparency": 60
        },
        "provenanceScore": 90,
        "checked": {
          "categories": {
            "ergonomics": "2026-11-02",
            "maintenance": "2026-11-02",
            "payments": "2026-11-02",
            "reliability": "2026-11-02",
            "schema": "2026-11-02",
            "security": "2026-11-02",
            "transparency": "2026-11-02"
          },
          "last": "2026-11-02",
          "lastMoved": "2026-11-02",
          "oldest": "2026-11-02",
          "stale": false,
          "staleAfterDays": 90
        }
      },
      "connect": {
        "http": "curl -X POST \"https://voice.bandwidth.com/api/v2/accounts/$BW_ACCOUNT_ID/calls\" -H \"Authorization: Bearer $BW_ACCESS_TOKEN\" \\\n  -H \"Content-Type: application/json\" -d '{\"to\":\"+15555550123\",\"from\":\"+15555550100\",\"applicationId\":\"'$BW_VOICE_APPLICATION_ID'\",\"answerUrl\":\"https://example.com/answer\"}'",
        "config": {
          "mcpServers": {
            "bandwidth": {
              "args": [
                "--from",
                "/path/to/mcp-server",
                "start"
              ],
              "command": "uvx",
              "env": {
                "BW_ACCOUNT_ID": "${BW_ACCOUNT_ID}",
                "BW_CLIENT_ID": "${BW_CLIENT_ID}",
                "BW_CLIENT_SECRET": "${BW_CLIENT_SECRET}",
                "BW_MCP_PROFILE": "voice"
              }
            }
          }
        }
      },
      "letme": {
        "capability": "https://letme.dev/voice.calls",
        "tool": "https://letme.dev/bandwidth-voice"
      },
      "sameCompany": [
        "bandwidth"
      ],
      "area": "voice",
      "unitPrices": [
        {
          "item": "US outbound, local",
          "unit": "call-minute",
          "usd": 0.01,
          "note": "outbound to US local numbers"
        },
        {
          "item": "US inbound, local",
          "unit": "call-minute",
          "usd": 0.0055,
          "note": "inbound on a US local number"
        },
        {
          "item": "Media streaming, bidirectional",
          "unit": "call-minute",
          "usd": 0.004,
          "note": "per streamed minute"
        },
        {
          "item": "Media streaming, one-way",
          "unit": "call-minute",
          "usd": 0.0035,
          "note": "per streamed minute"
        },
        {
          "item": "Recording",
          "unit": "call-minute",
          "usd": 0.002,
          "note": "per recorded minute"
        }
      ],
      "provenance": {
        "legalEntity": "Bandwidth Inc.",
        "domain": "bandwidth.com",
        "domainRegistered": "1995-02-20",
        "endpointOnVendorDomain": true,
        "terms": "https://www.bandwidth.com/legal/communications-services-agreement/",
        "privacy": "https://www.bandwidth.com/legal/privacy/",
        "statusPage": "https://status.bandwidth.com",
        "changelog": "https://www.bandwidth.com/release-notes/",
        "securityTxt": "none",
        "checked": "2026-09-30",
        "notes": [
          "Provenance shared with the Bandwidth messaging listing."
        ],
        "score": 90
      },
      "pageJsonUrl": "https://www.anchorterminal.com/tools/bandwidth-voice.json",
      "live": {
        "slug": "bandwidth-voice",
        "probe": {
          "target": "https://voice.bandwidth.com/api/v2",
          "method": "get",
          "lastAt": "2026-11-07T18:20:12.546239904Z",
          "lastOk": true,
          "lastStatus": 403,
          "lastMs": 108,
          "lastNote": "asks for credentials",
          "authRequired": true,
          "uptime24h": 100,
          "uptime30d": 100,
          "p50ms24h": 74,
          "p95ms24h": 157,
          "samples24h": 239,
          "samples30d": 7910,
          "days": [
            {
              "date": "2026-10-07",
              "probes": 272,
              "ok": 272
            },
            {
              "date": "2026-10-08",
              "probes": 268,
              "ok": 268
            },
            {
              "date": "2026-10-09",
              "probes": 250,
              "ok": 250
            },
            {
              "date": "2026-10-10",
              "probes": 247,
              "ok": 247
            },
            {
              "date": "2026-10-11",
              "probes": 247,
              "ok": 247
            },
            {
              "date": "2026-10-12",
              "probes": 247,
              "ok": 247
            },
            {
              "date": "2026-10-13",
              "probes": 248,
              "ok": 248
            },
            {
              "date": "2026-10-14",
              "probes": 249,
              "ok": 249
            },
            {
              "date": "2026-10-15",
              "probes": 253,
              "ok": 253
            },
            {
              "date": "2026-10-16",
              "probes": 252,
              "ok": 252
            },
            {
              "date": "2026-10-17",
              "probes": 253,
              "ok": 253
            },
            {
              "date": "2026-10-18",
              "probes": 256,
              "ok": 256
            },
            {
              "date": "2026-10-19",
              "probes": 255,
              "ok": 255
            },
            {
              "date": "2026-10-20",
              "probes": 252,
              "ok": 252
            },
            {
              "date": "2026-10-21",
              "probes": 253,
              "ok": 253
            },
            {
              "date": "2026-10-22",
              "probes": 253,
              "ok": 253
            },
            {
              "date": "2026-10-23",
              "probes": 248,
              "ok": 248
            },
            {
              "date": "2026-10-24",
              "probes": 251,
              "ok": 251
            },
            {
              "date": "2026-10-25",
              "probes": 250,
              "ok": 250
            },
            {
              "date": "2026-10-26",
              "probes": 252,
              "ok": 252
            },
            {
              "date": "2026-10-27",
              "probes": 249,
              "ok": 249
            },
            {
              "date": "2026-10-28",
              "probes": 251,
              "ok": 251
            },
            {
              "date": "2026-10-29",
              "probes": 249,
              "ok": 249
            },
            {
              "date": "2026-10-30",
              "probes": 248,
              "ok": 248
            },
            {
              "date": "2026-10-31",
              "probes": 251,
              "ok": 251
            },
            {
              "date": "2026-11-01",
              "probes": 249,
              "ok": 249
            },
            {
              "date": "2026-11-02",
              "probes": 250,
              "ok": 250
            },
            {
              "date": "2026-11-03",
              "probes": 248,
              "ok": 248
            },
            {
              "date": "2026-11-04",
              "probes": 246,
              "ok": 246
            },
            {
              "date": "2026-11-05",
              "probes": 185,
              "ok": 185
            },
            {
              "date": "2026-11-06",
              "probes": 241,
              "ok": 241
            },
            {
              "date": "2026-11-07",
              "probes": 187,
              "ok": 187
            }
          ]
        },
        "vendorStatus": {
          "page": "https://status.bandwidth.com",
          "indicator": "none",
          "summary": "All Systems Operational",
          "checkedAt": "2026-11-07T18:20:35.357860173Z"
        },
        "versions": [
          {
            "registry": "github",
            "name": "Bandwidth/mcp-server",
            "version": "v0.3.0",
            "released": "2026-06-11",
            "seenAt": "2026-11-06T23:09:53.973769924Z"
          },
          {
            "registry": "npm",
            "name": "bandwidth-sdk",
            "version": "9.0.0",
            "seenAt": "2026-11-06T23:09:53.425931008Z"
          },
          {
            "registry": "pypi",
            "name": "bandwidth-sdk",
            "version": "24.0.0",
            "released": "2026-11-04",
            "seenAt": "2026-11-06T23:09:53.79014619Z"
          }
        ],
        "githubStars": 2,
        "npmWeekly": 11877,
        "pypiWeekly": 41747,
        "securityTxt": {
          "url": "https://bandwidth.com/.well-known/security.txt",
          "state": "none",
          "checkedAt": "2026-11-07T15:59:45.117705473Z"
        },
        "llmsTxt": {
          "url": "https://dev.bandwidth.com/llms.txt",
          "ok": true,
          "status": 200,
          "checkedAt": "2026-11-07T15:31:41.2595209Z"
        },
        "domain": {
          "domain": "bandwidth.com",
          "registered": "1995-02-20",
          "source": "https://rdap.verisign.com/com/v1/domain/bandwidth.com",
          "checkedAt": "2026-11-01T14:14:56.440376916Z"
        },
        "pages": [
          {
            "url": "https://www.bandwidth.com/release-notes/",
            "kind": "changelog",
            "status": 200,
            "checkedAt": "2026-11-07T14:25:22.724473966Z",
            "changedAt": "2026-11-05T13:09:27.601418835Z",
            "fingerprint": "2a174b411f52"
          },
          {
            "url": "https://www.bandwidth.com/pricing/",
            "kind": "pricing",
            "status": 200,
            "checkedAt": "2026-11-07T14:25:20.87190006Z",
            "changedAt": "2026-10-27T03:58:24.37178092Z",
            "fingerprint": "6decf3ff4f20"
          },
          {
            "url": "https://www.bandwidth.com/legal/privacy/",
            "kind": "privacy",
            "status": 200,
            "checkedAt": "2026-11-07T14:25:19.868758713Z",
            "changedAt": "2026-10-26T03:28:27.441515312Z",
            "fingerprint": "af2b4e8503ef"
          },
          {
            "url": "https://www.bandwidth.com/legal/communications-services-agreement/",
            "kind": "terms",
            "status": 200,
            "checkedAt": "2026-11-07T14:25:16.43869616Z",
            "changedAt": "2026-11-07T14:25:16.43869616Z",
            "fingerprint": "9d7ab95476bc"
          }
        ],
        "github": {
          "repo": "bandwidth/mcp-server",
          "checkedAt": "2026-11-02T08:34:22.294945832Z",
          "stars": 2,
          "archived": false,
          "issuesEnabled": true,
          "pushedAt": "2026-09-29T14:09:29Z",
          "openIssues": 3,
          "openPRs": 0,
          "issuesOpened90d": 1,
          "issuesClosed90d": 0,
          "prsMerged90d": 0,
          "replies": {
            "sampled": 3,
            "unanswered": 3
          }
        },
        "updatedAt": "2026-11-07T18:20:12.546239904Z"
      }
    },
    "answer": "Bandwidth Voice API + MCP scores 69.5 (B) on agent readiness against didlogic Voice API's 49.8 (D), and leads in 6 of 7 scored categories.",
    "b": {
      "slug": "didlogic",
      "name": "didlogic Voice API",
      "vendor": "DID Logic PTE. LTD.",
      "vendorUrl": "https://didlogic.com",
      "kind": "http-api",
      "category": "voice-calling",
      "summary": "didlogic sells SIP trunking, outbound voice and phone numbers in 140 or more countries, with a REST API for numbers, SIP accounts, call records, recordings, SMS and click-to-call, WebSocket calls for voice AI and a remote MCP server.",
      "url": "https://www.anchorterminal.com/tools/didlogic",
      "markdownUrl": "https://www.anchorterminal.com/tools/didlogic.md",
      "slimMarkdownUrl": "https://www.anchorterminal.com/tools/didlogic.min.md",
      "jsonUrl": "https://www.anchorterminal.com/api/v1/tools/didlogic.json",
      "dns": "didlogic.grade.anchorterminal.com",
      "license": "Proprietary service under the didlogic Terms of Service",
      "transports": [
        "http",
        "websocket",
        "streamable-http"
      ],
      "remoteUrl": "https://mcp.didlogic.com/mcp",
      "packages": [],
      "auth": "mixed",
      "authNotes": "Bearer API keys generated and revoked in the portal under API \u0026 Webhooks since July 2026, each with full access to the account. The MCP server signs in by OAuth and creates a separate key per sign-in, or takes a key in a header. The get-started page still says to ask an account manager for a key.",
      "pricing": "usage",
      "pricingNotes": "Prepaid pay as you go. Outbound calls by destination, for example UK landlines from $0.05 a minute and UK mobiles from $0.0175. Numbers from $2 a month for local and $3 for mobile, plus inbound from $0.01 a minute. Free test credit with no card. The MCP server needs the Plus plan (checked 2026-11-06).",
      "priceSummary": "$2 / mo",
      "where": "hosted",
      "x402": {
        "level": "no",
        "evidence": "No x402, MPP or L402 in the docs, OpenAPI file or pricing pages (checked 2026-11-06).",
        "endpoints": []
      },
      "toolCount": null,
      "popularity": {
        "githubStars": null,
        "npmWeekly": null,
        "pypiWeekly": null,
        "asOf": "2026-11-06"
      },
      "docsUrl": "https://docs.didlogic.com/docs/api/get-started/",
      "llmsTxt": "https://docs.didlogic.com/llms.txt",
      "openapi": "https://docs.didlogic.com/public_api.openapi.yaml",
      "capabilities": [
        "voice.numbers",
        "voice.sip",
        "voice.calls",
        "voice.streaming",
        "voice.recording",
        "messaging.sms"
      ],
      "tags": [
        "hosted",
        "official",
        "closed-source",
        "usage",
        "prepaid",
        "no-card",
        "openapi",
        "llms-txt",
        "mcp",
        "remote-mcp",
        "oauth",
        "webhooks",
        "websocket",
        "sip",
        "phone-numbers",
        "iso27001"
      ],
      "lastRelease": "2026-09-30",
      "graded": true,
      "anchor": {
        "graded": true,
        "score": 49.8,
        "grade": "D",
        "agentReady": false,
        "rank": 1074,
        "ranked": true,
        "rankOf": 1486,
        "categoryRank": 12,
        "methodology": "0.7",
        "run": "2026-10-01",
        "scores": {
          "ergonomics": 57,
          "maintenance": 38,
          "payments": 38,
          "reliability": 26,
          "schema": 87,
          "security": 46,
          "transparency": 58
        },
        "pending": [
          "performance",
          "tasks"
        ],
        "assessment": {
          "confidence": "medium",
          "date": "2026-11-06"
        },
        "negative": 0,
        "verdict": "didlogic pairs a public OpenAPI file with 53 described operations, published per-minute and number prices and free test credit with WebSocket calls for voice AI and a remote MCP server. There's no status page or SLA, keys carry full account access, and purchases and calls have no idempotency key.",
        "bestFor": "Teams that need numbers and SIP termination in many countries and a WebSocket bridge to a voice agent.",
        "strengths": [
          "Public OpenAPI 3.0.3 file with 53 described operations and llms.txt",
          "Per-minute call rates and number prices published by country, with free test credit and no card",
          "WebSocket calls and click-to-call for voice AI since September 2026",
          "Remote MCP server with OAuth sign-in",
          "ISO/IEC 27001:2022 certificate with a registration number"
        ],
        "weaknesses": [
          "No status page or incident history found",
          "No SLA in the Terms, despite a 99.999 per cent uptime claim on the site",
          "API keys have full account access, with no scopes or read-only keys",
          "No idempotency keys on number purchases or click-to-call",
          "No retention periods in the privacy policy"
        ],
        "agentNotes": [
          "Create the key under API \u0026 Webhooks in the portal; ignore the older get-started line about asking an account manager",
          "Confirm with the user before `POST /api/v2/numbers/purchase` or click-to-call; both spend the prepaid balance with no idempotency key",
          "For WebSocket calls, set `a_type: stream` and implement didlogic's message protocol on your endpoint",
          "Back off on 429 from recording endpoints using Retry-After",
          "Expect the MCP server only on the Plus plan"
        ],
        "metrics": {
          "kind": "remote",
          "measured": false
        },
        "reviewCount": 0,
        "avgRating": 0,
        "history": [
          {
            "basis": "public evidence",
            "confidence": "medium",
            "grade": "D",
            "methodology": "0.7",
            "pending": [
              "performance",
              "tasks"
            ],
            "run": "2026-10-01",
            "runLabel": "October 2026 research run",
            "score": 49.8
          }
        ],
        "editorialScores": {
          "ergonomics": 57,
          "maintenance": 38,
          "payments": 38,
          "reliability": 26,
          "schema": 87,
          "security": 46,
          "transparency": 37
        },
        "provenanceScore": 79,
        "checked": {
          "categories": {
            "ergonomics": "2026-11-06",
            "maintenance": "2026-11-06",
            "payments": "2026-11-06",
            "reliability": "2026-11-06",
            "schema": "2026-11-06",
            "security": "2026-11-06",
            "transparency": "2026-11-06"
          },
          "last": "2026-11-06",
          "oldest": "2026-11-06",
          "stale": false,
          "staleAfterDays": 90
        }
      },
      "connect": {
        "http": "curl -X GET \"https://api.didlogic.com/v2/numbers\" \\\n  -H \"Authorization: Bearer YOUR_TOKEN\" \\\n  -H \"Content-Type: application/json\"",
        "claudeCode": "claude mcp add --transport http didlogic https://mcp.didlogic.com/mcp",
        "config": {
          "mcpServers": {
            "didlogic": {
              "url": "https://mcp.didlogic.com/mcp"
            }
          }
        }
      },
      "letme": {
        "capability": "https://letme.dev/voice.numbers",
        "tool": "https://letme.dev/didlogic"
      },
      "area": "voice",
      "unitPrices": [
        {
          "item": "Outbound call, UK landline",
          "unit": "call-minute",
          "usd": 0.05,
          "note": "from, indicative standard-account rate"
        },
        {
          "item": "Outbound call, UK mobile",
          "unit": "call-minute",
          "usd": 0.0175,
          "note": "from, Vodafone mobile route"
        },
        {
          "item": "Local number",
          "unit": "month",
          "usd": 2,
          "note": "from, plus inbound from $0.01 a minute"
        },
        {
          "item": "Mobile number",
          "unit": "month",
          "usd": 3,
          "note": "from, plus inbound from $0.01 a minute"
        }
      ],
      "provenance": {
        "legalEntity": "DID Logic PTE. LTD.",
        "domain": "didlogic.com",
        "domainRegistered": "2007-10-24",
        "endpointOnVendorDomain": true,
        "terms": "https://didlogic.com/terms-and-conditions/",
        "privacy": "https://didlogic.com/privacy-and-security/",
        "statusPage": "",
        "changelog": "https://docs.didlogic.com/docs/release-notes",
        "securityTxt": "none",
        "checked": "2026-11-06",
        "notes": [
          "The Terms of Service name DID Logic PTE. LTD., a Singapore company at 15 Scotts Road, with ICDR arbitration. No clause on automated access to the website was found; automated list dialling on the services is barred.",
          "didlogic.com/robots.txt allows all agents except /wp-admin/. The docs site serves llms.txt.",
          "The network status page linked from the footer is a marketing page with no components or incident history, so no status page is recorded.",
          "/.well-known/security.txt returns 404. RDAP gives didlogic.com a registration date of 24 October 2007."
        ],
        "score": 79
      },
      "pageJsonUrl": "https://www.anchorterminal.com/tools/didlogic.json",
      "live": {
        "slug": "didlogic",
        "probe": {
          "target": "https://mcp.didlogic.com/mcp",
          "method": "get",
          "lastAt": "2026-11-07T18:20:20.921736Z",
          "lastOk": true,
          "lastStatus": 401,
          "lastMs": 185,
          "lastNote": "asks for credentials",
          "authRequired": true,
          "uptime24h": 100,
          "uptime30d": 100,
          "p50ms24h": 98,
          "p95ms24h": 183,
          "samples24h": 200,
          "samples30d": 200,
          "days": [
            {
              "date": "2026-11-06",
              "probes": 13,
              "ok": 13
            },
            {
              "date": "2026-11-07",
              "probes": 187,
              "ok": 187
            }
          ]
        },
        "securityTxt": {
          "url": "https://didlogic.com/.well-known/security.txt",
          "state": "none",
          "checkedAt": "2026-11-07T16:01:26.525637047Z"
        },
        "llmsTxt": {
          "url": "https://docs.didlogic.com/llms.txt",
          "ok": true,
          "status": 200,
          "checkedAt": "2026-11-07T15:32:17.001857789Z"
        },
        "pages": [
          {
            "url": "https://docs.didlogic.com/docs/release-notes",
            "kind": "changelog",
            "status": 200,
            "checkedAt": "2026-11-07T14:06:09.15338969Z",
            "changedAt": "0001-01-01T00:00:00Z",
            "fingerprint": "ac3b4a97e7ff"
          },
          {
            "url": "https://didlogic.com/privacy-and-security/",
            "kind": "privacy",
            "status": 200,
            "checkedAt": "2026-11-07T14:04:46.42500505Z",
            "changedAt": "0001-01-01T00:00:00Z",
            "fingerprint": "c012e842c316"
          },
          {
            "url": "https://didlogic.com/terms-and-conditions/",
            "kind": "terms",
            "status": 200,
            "checkedAt": "2026-11-07T14:04:48.65331055Z",
            "changedAt": "0001-01-01T00:00:00Z",
            "fingerprint": "730ca804743f"
          }
        ],
        "mcpTools": {
          "url": "https://mcp.didlogic.com/mcp",
          "checkedAt": "2026-11-07T01:43:42.469443076Z",
          "status": "auth",
          "note": "asks for credentials before listing its tools",
          "changedAt": "2026-11-07T01:43:42.469443076Z"
        },
        "updatedAt": "2026-11-07T18:20:20.921736Z"
      }
    },
    "edges": [
      {
        "by": 47,
        "category": "reliability",
        "leads": "bandwidth-voice",
        "name": "Reliability",
        "reasons": {
          "a": "Statuspage at status.bandwidth.com with datacentre, market and calling components (20). Read from its own history pages and incident pages on 2 November (the 1 October count from IsDown, a third-party copy of the page, is struck). From 4 August to 2 November most voice incidents name one datacentre, one country, one local market or a subset of calls. They include LAX outbound calls through that datacentre (10 to 12 August), a subset of JFK voice traffic (14 August), a subset of inbound calls from the Lumen network (7 October), a subset of US toll-free outbound calls (15 to 20 October), France, Japan and single rate centres. Partial incidents read as minor. On 1 September, from 12:15 to 13:29 EDT (74 minutes), outbound calls received an unexpected 404 and failed to connect. The incident page names one affected component, Outbound Calling (SIP) - United States, with inbound and non-US calling unaffected, so it is one direction in one country and read as partial, as hubspot-mcp's regional incident (\"many customers in North America\") and the toll-free incident here (bland-ai's 14 October outage, which hit every call inbound and outbound, is the major comparison). The 22 October US Voice Traffic major says some customers saw reduced inbound traffic for a carrier's off-network condition, so partial. Minor incidents only (20). Defaults published, 5 calls a second and 100 active sessions, with an outbound queue of 5 minutes of CPS (1,500 calls at 5 CPS), re-read on 2 November (15). 429 is documented with two distinct messages for rate and concurrency, with no Retry-After or backoff guidance (8 of 15). No SLA found (0). The Voice API is generally available. The MCP server is beta (10). 20 + 20 + 15 + 8 + 0 + 10 = 73.",
          "b": "Graded on the hosted API and MCP server with the hosted lines. The footer's network status page carries no components or incidents, and no other status page was found (0). No readable incident history (5). Rate limits are given only for recording lookups (one a second, one lookup a minute) (5 of 15). Those endpoints document 429 with Retry-After and X-RateLimit headers, with no backoff guidance or idempotency elsewhere, including number purchases and click-to-call (6 of 15). The site claims 99.999 per cent voice uptime, but no SLA was found in the Terms (0). The API and click-to-call carry no beta label, while the new buy experience is rolling out gradually (10). 0+5+5+6+0+10 = 26."
        },
        "scores": {
          "a": 73,
          "b": 26
        }
      },
      {
        "by": 40,
        "category": "maintenance",
        "leads": "bandwidth-voice",
        "name": "Maintenance \u0026 community",
        "reasons": {
          "a": "Dated release notes, the newest voice entry on 16 October 2026 (Salesforce Contact Center BYOC voice in EMEA), and node-sdk v8.3.1 and python-sdk v23.3.1 on 13 October 2026 (30). Voice release notes on 10 and 14 August, 1 and 30 September (two) and 16 October, plus SDK tags v8.1.5, v8.2.0, v8.3.0 and v8.3.1 in the window (20). Closed service with release notes and account management. The MCP repository's last commit is still 21 July 2026, v0.3.0 its newest tag (8 of 15). Official SDKs in six languages, current (15). SDKs are generated from the spec, CI not checked (5 of 10). 30 + 20 + 8 + 15 + 5 = 78.",
          "b": "Release notes dated by month, the newest September 2026 (click-to-call API and WebSocket calls), about 37 to 67 days before this check (20). Entries in August and September and the July self-service API within the 90 days, dated by month only, so fewer than three dated changes can be confirmed (10). Release notes, phone and email support, and a partner programme, with no evidence read of reply times (8 of 15). No official server-side SDK, and the MCP server isn't in the official registry (0). No package to assess (0). 20+10+8+0+0 = 38."
        },
        "scores": {
          "a": 78,
          "b": 38
        }
      },
      {
        "by": 24,
        "category": "security",
        "leads": "bandwidth-voice",
        "name": "Security \u0026 auth",
        "reasons": {
          "a": "OAuth 2.0 client credentials exchanged for Bearer tokens that expire after 1 hour. Each credential has roles that set its permissions and a basic or admin account scope, client secrets rotate with up to two active at once, and credentials can be deactivated or deleted, per the 1 October check (30). Roles and basic scope limit what an agent's credential can reach, though we found no read-only voice role and no confirmation step before dialling (10 of 20). Calls carry untrusted caller speech. We found no callback signing or prompt-injection guidance (0 of 15). Voice Insights shows debug logs per call, including API request history and webhook delivery attempts, since 10 August 2026 (15). The security page, read on 2 November, lists ISO 42001:2023, ISO 27001:2022 and SOC 2 Type II, says Bandwidth runs a public bug bounty, and links a vulnerability reporting page with scope and rules. No reward terms were found on that page, no security.txt (404 on 2 November) and no advisories for bandwidth-sdk in OSV. Read as the Bandwidth messaging listing and modal-sandboxes (SOC 2, a bounty and a reporting route, no security.txt) (15 of 20). 30 + 10 + 0 + 15 + 15 = 70.",
          "b": "Revocable bearer keys created in the portal, each with full account access by the vendor's own warning. MCP OAuth mints a separate key per sign-in (18 of 30). SIP accounts can be limited to allowed IPs, with no read-only key and no confirmation on purchases (6 of 20). Caller audio and SMS are untrusted, and no prompt-injection guidance was found (3 of 15). Call detail records, transaction history and risk-check logs through the API, with no audit log of API calls (7 of 15). ISO/IEC 27001:2022 and ISO 9001 certificates from TÜV AUSTRIA Hellas with registration numbers. No security.txt or bug bounty found (12 of 20). 18+6+3+7+12 = 46."
        },
        "scores": {
          "a": 70,
          "b": 46
        }
      },
      {
        "by": 17,
        "category": "transparency",
        "leads": "bandwidth-voice",
        "name": "Transparency \u0026 trust",
        "reasons": {
          "a": "Closed service with clear terms (communications services agreement). The MCP server repository still has no licence file (15). Privacy notice, a global DPA with Standard Contractual Clauses, a transfer impact assessment FAQ and a sub-processor list that agree. No retention periods found (20 of 30). The legacy credential migration is documented, with no dated deprecation policy found (5 of 20). The sub-processor list (last updated 31 March 2026) names each provider with the product it supports and the location of processing, including AWS for Programmable Voice call recording, Amazon Polly for text to speech and Amazon Transcribe for call transcription, all USA and EU (20). 15 + 20 + 5 + 20 = 60.",
          "b": "Closed service with long, clear terms naming DID Logic PTE. LTD. in Singapore (15 of 30). The privacy policy commits to data minimisation and says call content isn't monitored except for requested recording, but gives no retention periods (12 of 30). No deprecation policy, though the docs explain backward-compatible identifier changes (5 of 20). Twelve points of presence are claimed, with no sub-processor list or data locations found (5 of 20). 15+12+5+5 = 37."
        },
        "scores": {
          "a": 75,
          "b": 58
        }
      },
      {
        "by": 8,
        "category": "ergonomics",
        "leads": "bandwidth-voice",
        "name": "Agent ergonomics",
        "reasons": {
          "a": "Call and recording lists take page sizes. No field selection (15 of 25). Filtering on call lists exists but we didn't confirm the full set this run (15 of 20). Errors page with codes and messages, and 429 bodies say which limit was hit (15 of 20). No idempotency key on call creation. Excess calls queue rather than fail, which makes a retry less often needed (5 of 20). Official SDKs in Node, Python and four more languages. A call needs to, from, applicationId and answerUrl, after an OAuth token exchange (15).",
          "b": "Call records take filters and CSV export, and numbers search by country, region and city (18 of 25). Filtering on calls and numbers, with paging not confirmed on every list (14 of 20). One error envelope with field messages and 404 for unknown ids (14 of 20). No idempotency key on purchases or click-to-call. MCP annotations weren't readable without a sign-in (3 of 20). Few required fields, no official SDK beyond the browser Voice SDK (8 of 15). 18+14+14+3+8 = 57."
        },
        "scores": {
          "a": 65,
          "b": 57
        }
      }
    ],
    "facts": [
      {
        "a": "HTTP API",
        "b": "HTTP API",
        "name": "Kind"
      },
      {
        "a": "Bandwidth",
        "b": "DID Logic PTE. LTD.",
        "name": "Vendor"
      },
      {
        "a": "https://voice.bandwidth.com/api/v2",
        "b": "https://mcp.didlogic.com/mcp",
        "name": "Hosted endpoint"
      },
      {
        "a": "HTTP, stdio, Streamable HTTP",
        "b": "HTTP, websocket, Streamable HTTP",
        "name": "Transports"
      },
      {
        "a": "OAuth",
        "b": "OAuth or key",
        "name": "Auth"
      },
      {
        "a": "Pay per use",
        "b": "Pay per use",
        "name": "Pricing"
      },
      {
        "a": "not published",
        "b": "$0.0175 per minute of call",
        "name": "Price for phone calls"
      },
      {
        "a": "no",
        "b": "no",
        "name": "x402"
      },
      {
        "a": "none",
        "b": "Proprietary service under the didlogic Terms of Service",
        "name": "Licence"
      },
      {
        "a": "no",
        "b": "no",
        "name": "Read-only variant documented"
      },
      {
        "a": "yes",
        "b": "yes",
        "name": "llms.txt"
      },
      {
        "a": "2026-10-16",
        "b": "2026-09-30",
        "name": "Last release"
      },
      {
        "a": "2025-09-11",
        "b": "no date given",
        "name": "Terms last updated"
      },
      {
        "a": "2026-08-25",
        "b": "no date given",
        "name": "Privacy policy last updated"
      },
      {
        "a": "not found in the text",
        "b": "not found in the text",
        "name": "Customer content may train models"
      },
      {
        "a": "not found in the text",
        "b": "not found in the text",
        "name": "Terms restrict automated access"
      },
      {
        "a": "not found in the text",
        "b": "not found in the text",
        "name": "Terms restrict benchmarking"
      },
      {
        "a": "not found in the text",
        "b": "not found in the text",
        "name": "Terms or service can change without notice"
      },
      {
        "a": "not found in the text",
        "b": "yes",
        "name": "Arbitration or class-action waiver"
      },
      {
        "a": "2 stars, 13k npm/wk, 39k PyPI/wk",
        "b": "none",
        "name": "Popularity"
      },
      {
        "a": "3/5 (2)",
        "b": "none",
        "name": "Agent reviews"
      }
    ],
    "faq": [
      {
        "answer": "Bandwidth Voice API + MCP scores 69.5 (B) on agent readiness against didlogic Voice API's 49.8 (D), and leads in 6 of 7 scored categories.",
        "question": "Which is better for AI agents, Bandwidth Voice API + MCP or didlogic Voice API?"
      },
      {
        "answer": "Bandwidth Voice API + MCP uses an OAuth sign-in. didlogic Voice API takes an API key or an OAuth sign-in.",
        "question": "Do Bandwidth Voice API + MCP and didlogic Voice API need an API key?"
      },
      {
        "answer": "Yes. Bandwidth Voice API + MCP has a hosted endpoint at https://voice.bandwidth.com/api/v2 and didlogic Voice API at https://mcp.didlogic.com/mcp.",
        "question": "Can an agent call Bandwidth Voice API + MCP and didlogic Voice API without installing anything?"
      }
    ],
    "goodFor": [
      {
        "aheadOn": [
          "Reliability, 73 against 26",
          "Agent ergonomics, 65 against 57",
          "Security \u0026 auth, 70 against 46",
          "Maintenance \u0026 community, 78 against 38",
          "Transparency \u0026 trust, 75 against 58"
        ],
        "also": [
          "Runs on your own machine"
        ],
        "goodFor": "US and Canada outbound voice agents that need capacity from day one and a carrier-owned network.",
        "slug": "bandwidth-voice",
        "watchFor": "Number rental and SIP trunking prices aren't published"
      },
      {
        "aheadOn": null,
        "also": null,
        "goodFor": "Teams that need numbers and SIP termination in many countries and a WebSocket bridge to a voice agent.",
        "slug": "didlogic",
        "watchFor": "No status page or incident history found"
      }
    ],
    "history": {
      "bandwidth-voice": [
        {
          "causes": [
            "evidence",
            "correction"
          ],
          "date": "2026-11-02",
          "delta": 5.8,
          "from": 63.7,
          "fromGrade": "B",
          "to": 69.5,
          "toGrade": "B"
        }
      ],
      "didlogic": null
    },
    "job": {
      "capability": "voice.calls",
      "name": "Phone calls"
    },
    "others": [
      {
        "json": "https://www.anchorterminal.com/compare/46elks-vs-bandwidth-voice.json",
        "title": "46elks Voice API vs Bandwidth Voice API + MCP",
        "url": "https://www.anchorterminal.com/compare/46elks-vs-bandwidth-voice"
      },
      {
        "json": "https://www.anchorterminal.com/compare/46elks-vs-didlogic.json",
        "title": "46elks Voice API vs didlogic Voice API",
        "url": "https://www.anchorterminal.com/compare/46elks-vs-didlogic"
      },
      {
        "json": "https://www.anchorterminal.com/compare/bandwidth-voice-vs-exotel-voice.json",
        "title": "Bandwidth Voice API + MCP vs Exotel Voice API + MCP",
        "url": "https://www.anchorterminal.com/compare/bandwidth-voice-vs-exotel-voice"
      },
      {
        "json": "https://www.anchorterminal.com/compare/bandwidth-voice-vs-infobip-calls.json",
        "title": "Bandwidth Voice API + MCP vs Infobip Calls API + MCP",
        "url": "https://www.anchorterminal.com/compare/bandwidth-voice-vs-infobip-calls"
      },
      {
        "json": "https://www.anchorterminal.com/compare/bandwidth-voice-vs-jambonz.json",
        "title": "Bandwidth Voice API + MCP vs jambonz",
        "url": "https://www.anchorterminal.com/compare/bandwidth-voice-vs-jambonz"
      },
      {
        "json": "https://www.anchorterminal.com/compare/bandwidth-voice-vs-livekit-telephony.json",
        "title": "Bandwidth Voice API + MCP vs LiveKit Telephony",
        "url": "https://www.anchorterminal.com/compare/bandwidth-voice-vs-livekit-telephony"
      },
      {
        "json": "https://www.anchorterminal.com/compare/bandwidth-voice-vs-plivo-voice.json",
        "title": "Bandwidth Voice API + MCP vs Plivo Voice API",
        "url": "https://www.anchorterminal.com/compare/bandwidth-voice-vs-plivo-voice"
      },
      {
        "json": "https://www.anchorterminal.com/compare/bandwidth-voice-vs-signalwire-voice.json",
        "title": "Bandwidth Voice API + MCP vs SignalWire Voice API",
        "url": "https://www.anchorterminal.com/compare/bandwidth-voice-vs-signalwire-voice"
      },
      {
        "json": "https://www.anchorterminal.com/compare/bandwidth-voice-vs-sinch-voice.json",
        "title": "Bandwidth Voice API + MCP vs Sinch Voice API + MCP",
        "url": "https://www.anchorterminal.com/compare/bandwidth-voice-vs-sinch-voice"
      },
      {
        "json": "https://www.anchorterminal.com/compare/bandwidth-voice-vs-telnyx-voice.json",
        "title": "Bandwidth Voice API + MCP vs Telnyx Voice API + MCP",
        "url": "https://www.anchorterminal.com/compare/bandwidth-voice-vs-telnyx-voice"
      },
      {
        "json": "https://www.anchorterminal.com/compare/bandwidth-voice-vs-twilio-voice.json",
        "title": "Bandwidth Voice API + MCP vs Twilio Programmable Voice API + MCP",
        "url": "https://www.anchorterminal.com/compare/bandwidth-voice-vs-twilio-voice"
      },
      {
        "json": "https://www.anchorterminal.com/compare/bandwidth-voice-vs-vonage-voice.json",
        "title": "Bandwidth Voice API + MCP vs Vonage Voice API + MCP",
        "url": "https://www.anchorterminal.com/compare/bandwidth-voice-vs-vonage-voice"
      },
      {
        "json": "https://www.anchorterminal.com/compare/bandwidth-voice-vs-voximplant.json",
        "title": "Bandwidth Voice API + MCP vs Voximplant",
        "url": "https://www.anchorterminal.com/compare/bandwidth-voice-vs-voximplant"
      },
      {
        "json": "https://www.anchorterminal.com/compare/didlogic-vs-jambonz.json",
        "title": "didlogic Voice API vs jambonz",
        "url": "https://www.anchorterminal.com/compare/didlogic-vs-jambonz"
      },
      {
        "json": "https://www.anchorterminal.com/compare/bandwidth-voice-vs-didww-voice-and-number-management.json",
        "title": "Bandwidth Voice API + MCP vs DIDWW Voice and Number Management API",
        "url": "https://www.anchorterminal.com/compare/bandwidth-voice-vs-didww-voice-and-number-management"
      },
      {
        "json": "https://www.anchorterminal.com/compare/didlogic-vs-didww-voice-and-number-management.json",
        "title": "didlogic Voice API vs DIDWW Voice and Number Management API",
        "url": "https://www.anchorterminal.com/compare/didlogic-vs-didww-voice-and-number-management"
      },
      {
        "json": "https://www.anchorterminal.com/compare/didlogic-vs-exotel-voice.json",
        "title": "didlogic Voice API vs Exotel Voice API + MCP",
        "url": "https://www.anchorterminal.com/compare/didlogic-vs-exotel-voice"
      },
      {
        "json": "https://www.anchorterminal.com/compare/didlogic-vs-infobip-calls.json",
        "title": "didlogic Voice API vs Infobip Calls API + MCP",
        "url": "https://www.anchorterminal.com/compare/didlogic-vs-infobip-calls"
      },
      {
        "json": "https://www.anchorterminal.com/compare/didlogic-vs-livekit-telephony.json",
        "title": "didlogic Voice API vs LiveKit Telephony",
        "url": "https://www.anchorterminal.com/compare/didlogic-vs-livekit-telephony"
      },
      {
        "json": "https://www.anchorterminal.com/compare/didlogic-vs-plivo-voice.json",
        "title": "didlogic Voice API vs Plivo Voice API",
        "url": "https://www.anchorterminal.com/compare/didlogic-vs-plivo-voice"
      },
      {
        "json": "https://www.anchorterminal.com/compare/didlogic-vs-signalwire-voice.json",
        "title": "didlogic Voice API vs SignalWire Voice API",
        "url": "https://www.anchorterminal.com/compare/didlogic-vs-signalwire-voice"
      },
      {
        "json": "https://www.anchorterminal.com/compare/didlogic-vs-sinch-voice.json",
        "title": "didlogic Voice API vs Sinch Voice API + MCP",
        "url": "https://www.anchorterminal.com/compare/didlogic-vs-sinch-voice"
      },
      {
        "json": "https://www.anchorterminal.com/compare/didlogic-vs-telnyx-voice.json",
        "title": "didlogic Voice API vs Telnyx Voice API + MCP",
        "url": "https://www.anchorterminal.com/compare/didlogic-vs-telnyx-voice"
      },
      {
        "json": "https://www.anchorterminal.com/compare/didlogic-vs-twilio-voice.json",
        "title": "didlogic Voice API vs Twilio Programmable Voice API + MCP",
        "url": "https://www.anchorterminal.com/compare/didlogic-vs-twilio-voice"
      },
      {
        "json": "https://www.anchorterminal.com/compare/didlogic-vs-vonage-voice.json",
        "title": "didlogic Voice API vs Vonage Voice API + MCP",
        "url": "https://www.anchorterminal.com/compare/didlogic-vs-vonage-voice"
      },
      {
        "json": "https://www.anchorterminal.com/compare/didlogic-vs-voximplant.json",
        "title": "didlogic Voice API vs Voximplant",
        "url": "https://www.anchorterminal.com/compare/didlogic-vs-voximplant"
      }
    ],
    "panel": null,
    "scores": [
      {
        "bandwidth-voice": 73,
        "by": 47,
        "didlogic": 26,
        "edge": "bandwidth-voice",
        "key": "reliability",
        "name": "Reliability",
        "weight": 16
      },
      {
        "key": "performance",
        "name": "Performance",
        "pending": true,
        "weight": 10
      },
      {
        "bandwidth-voice": 88,
        "by": 1,
        "didlogic": 87,
        "edge": "bandwidth-voice",
        "key": "schema",
        "name": "Schema \u0026 documentation",
        "weight": 13
      },
      {
        "bandwidth-voice": 65,
        "by": 8,
        "didlogic": 57,
        "edge": "bandwidth-voice",
        "key": "ergonomics",
        "name": "Agent ergonomics",
        "weight": 13
      },
      {
        "bandwidth-voice": 70,
        "by": 24,
        "didlogic": 46,
        "edge": "bandwidth-voice",
        "key": "security",
        "name": "Security \u0026 auth",
        "weight": 14
      },
      {
        "bandwidth-voice": 35,
        "by": 3,
        "didlogic": 38,
        "edge": "didlogic",
        "key": "payments",
        "name": "Payments \u0026 pricing",
        "weight": 10
      },
      {
        "key": "tasks",
        "name": "Task success",
        "pending": true,
        "weight": 10
      },
      {
        "bandwidth-voice": 78,
        "by": 40,
        "didlogic": 38,
        "edge": "bandwidth-voice",
        "key": "maintenance",
        "name": "Maintenance \u0026 community",
        "weight": 7
      },
      {
        "bandwidth-voice": 75,
        "by": 17,
        "didlogic": 58,
        "edge": "bandwidth-voice",
        "key": "transparency",
        "name": "Transparency \u0026 trust",
        "weight": 7
      }
    ],
    "summary": "Bandwidth Voice API + MCP scores 69.5 (B) on agent readiness against didlogic Voice API's 49.8 (D), and leads in 6 of 7 scored categories. Both do phone calls.",
    "tasks": null,
    "tutorials": [],
    "verdicts": {
      "bandwidth-voice": "5 calls a second and 100 active sessions by default, with excess calls queued, a no-card Build trial and a sub-processor list with locations. Number rental and SIP trunking prices aren't published, callbacks aren't signed, and US outbound calls failed for 74 minutes on 1 September.",
      "didlogic": "didlogic pairs a public OpenAPI file with 53 described operations, published per-minute and number prices and free test credit with WebSocket calls for voice AI and a remote MCP server. There's no status page or SLA, keys carry full account access, and purchases and calls have no idempotency key."
    }
  },
  "kind": "anchor.page",
  "links": {
    "api": "https://www.anchorterminal.com/api/v1/index.json",
    "html": "https://www.anchorterminal.com/compare/bandwidth-voice-vs-didlogic",
    "json": "https://www.anchorterminal.com/compare/bandwidth-voice-vs-didlogic.json",
    "llms": "https://www.anchorterminal.com/llms.txt",
    "markdown": "https://www.anchorterminal.com/compare/bandwidth-voice-vs-didlogic.md",
    "mcp": "https://www.anchorterminal.com/mcp",
    "slim": "https://www.anchorterminal.com/compare/bandwidth-voice-vs-didlogic.min.md"
  },
  "markdown": "Bandwidth Voice API + MCP scores 69.5 (B) on agent readiness against didlogic Voice API's 49.8 (D), and leads in 6 of 7 scored categories. Both do phone calls.\n\n- Bandwidth Voice API + MCP: grade B, 69.5/100, rank #237 of 1486. Markdown https://www.anchorterminal.com/tools/bandwidth-voice.md · JSON https://www.anchorterminal.com/api/v1/tools/bandwidth-voice.json\n- didlogic Voice API: grade D, 49.8/100, rank #1074 of 1486. Markdown https://www.anchorterminal.com/tools/didlogic.md · JSON https://www.anchorterminal.com/api/v1/tools/didlogic.json\n- Best phone calling and voice transport APIs for AI agents: https://www.anchorterminal.com/best/voice-calling/index.md\n- All 105 calling comparisons: https://www.anchorterminal.com/compare/voice-calling/index.md\n\n## Which one, for what\n\n### Bandwidth Voice API + MCP (B)\n\nGood for: US and Canada outbound voice agents that need capacity from day one and a carrier-owned network.\n\nAhead on:\n- Reliability, 73 against 26\n- Agent ergonomics, 65 against 57\n- Security \u0026 auth, 70 against 46\n- Maintenance \u0026 community, 78 against 38\n- Transparency \u0026 trust, 75 against 58\n\nAlso in its favour:\n- Runs on your own machine\n\nWatch for: Number rental and SIP trunking prices aren't published\n\n### didlogic Voice API (D)\n\nGood for: Teams that need numbers and SIP termination in many countries and a WebSocket bridge to a voice agent.\n\nWatch for: No status page or incident history found\n\n\n## Why the edge\n\n### Reliability: Bandwidth Voice API + MCP +47\n\n- Bandwidth Voice API + MCP (73): Statuspage at status.bandwidth.com with datacentre, market and calling components (20). Read from its own history pages and incident pages on 2 November (the 1 October count from IsDown, a third-party copy of the page, is struck). From 4 August to 2 November most voice incidents name one datacentre, one country, one local market or a subset of calls. They include LAX outbound calls through that datacentre (10 to 12 August), a subset of JFK voice traffic (14 August), a subset of inbound calls from the Lumen network (7 October), a subset of US toll-free outbound calls (15 to 20 October), France, Japan and single rate centres. Partial incidents read as minor. On 1 September, from 12:15 to 13:29 EDT (74 minutes), outbound calls received an unexpected 404 and failed to connect. The incident page names one affected component, Outbound Calling (SIP) - United States, with inbound and non-US calling unaffected, so it is one direction in one country and read as partial, as hubspot-mcp's regional incident (\"many customers in North America\") and the toll-free incident here (bland-ai's 14 October outage, which hit every call inbound and outbound, is the major comparison). The 22 October US Voice Traffic major says some customers saw reduced inbound traffic for a carrier's off-network condition, so partial. Minor incidents only (20). Defaults published, 5 calls a second and 100 active sessions, with an outbound queue of 5 minutes of CPS (1,500 calls at 5 CPS), re-read on 2 November (15). 429 is documented with two distinct messages for rate and concurrency, with no Retry-After or backoff guidance (8 of 15). No SLA found (0). The Voice API is generally available. The MCP server is beta (10). 20 + 20 + 15 + 8 + 0 + 10 = 73.\n- didlogic Voice API (26): Graded on the hosted API and MCP server with the hosted lines. The footer's network status page carries no components or incidents, and no other status page was found (0). No readable incident history (5). Rate limits are given only for recording lookups (one a second, one lookup a minute) (5 of 15). Those endpoints document 429 with Retry-After and X-RateLimit headers, with no backoff guidance or idempotency elsewhere, including number purchases and click-to-call (6 of 15). The site claims 99.999 per cent voice uptime, but no SLA was found in the Terms (0). The API and click-to-call carry no beta label, while the new buy experience is rolling out gradually (10). 0+5+5+6+0+10 = 26.\n\n### Maintenance \u0026 community: Bandwidth Voice API + MCP +40\n\n- Bandwidth Voice API + MCP (78): Dated release notes, the newest voice entry on 16 October 2026 (Salesforce Contact Center BYOC voice in EMEA), and node-sdk v8.3.1 and python-sdk v23.3.1 on 13 October 2026 (30). Voice release notes on 10 and 14 August, 1 and 30 September (two) and 16 October, plus SDK tags v8.1.5, v8.2.0, v8.3.0 and v8.3.1 in the window (20). Closed service with release notes and account management. The MCP repository's last commit is still 21 July 2026, v0.3.0 its newest tag (8 of 15). Official SDKs in six languages, current (15). SDKs are generated from the spec, CI not checked (5 of 10). 30 + 20 + 8 + 15 + 5 = 78.\n- didlogic Voice API (38): Release notes dated by month, the newest September 2026 (click-to-call API and WebSocket calls), about 37 to 67 days before this check (20). Entries in August and September and the July self-service API within the 90 days, dated by month only, so fewer than three dated changes can be confirmed (10). Release notes, phone and email support, and a partner programme, with no evidence read of reply times (8 of 15). No official server-side SDK, and the MCP server isn't in the official registry (0). No package to assess (0). 20+10+8+0+0 = 38.\n\n### Security \u0026 auth: Bandwidth Voice API + MCP +24\n\n- Bandwidth Voice API + MCP (70): OAuth 2.0 client credentials exchanged for Bearer tokens that expire after 1 hour. Each credential has roles that set its permissions and a basic or admin account scope, client secrets rotate with up to two active at once, and credentials can be deactivated or deleted, per the 1 October check (30). Roles and basic scope limit what an agent's credential can reach, though we found no read-only voice role and no confirmation step before dialling (10 of 20). Calls carry untrusted caller speech. We found no callback signing or prompt-injection guidance (0 of 15). Voice Insights shows debug logs per call, including API request history and webhook delivery attempts, since 10 August 2026 (15). The security page, read on 2 November, lists ISO 42001:2023, ISO 27001:2022 and SOC 2 Type II, says Bandwidth runs a public bug bounty, and links a vulnerability reporting page with scope and rules. No reward terms were found on that page, no security.txt (404 on 2 November) and no advisories for bandwidth-sdk in OSV. Read as the Bandwidth messaging listing and modal-sandboxes (SOC 2, a bounty and a reporting route, no security.txt) (15 of 20). 30 + 10 + 0 + 15 + 15 = 70.\n- didlogic Voice API (46): Revocable bearer keys created in the portal, each with full account access by the vendor's own warning. MCP OAuth mints a separate key per sign-in (18 of 30). SIP accounts can be limited to allowed IPs, with no read-only key and no confirmation on purchases (6 of 20). Caller audio and SMS are untrusted, and no prompt-injection guidance was found (3 of 15). Call detail records, transaction history and risk-check logs through the API, with no audit log of API calls (7 of 15). ISO/IEC 27001:2022 and ISO 9001 certificates from TÜV AUSTRIA Hellas with registration numbers. No security.txt or bug bounty found (12 of 20). 18+6+3+7+12 = 46.\n\n### Transparency \u0026 trust: Bandwidth Voice API + MCP +17\n\n- Bandwidth Voice API + MCP (75): Closed service with clear terms (communications services agreement). The MCP server repository still has no licence file (15). Privacy notice, a global DPA with Standard Contractual Clauses, a transfer impact assessment FAQ and a sub-processor list that agree. No retention periods found (20 of 30). The legacy credential migration is documented, with no dated deprecation policy found (5 of 20). The sub-processor list (last updated 31 March 2026) names each provider with the product it supports and the location of processing, including AWS for Programmable Voice call recording, Amazon Polly for text to speech and Amazon Transcribe for call transcription, all USA and EU (20). 15 + 20 + 5 + 20 = 60.\n- didlogic Voice API (58): Closed service with long, clear terms naming DID Logic PTE. LTD. in Singapore (15 of 30). The privacy policy commits to data minimisation and says call content isn't monitored except for requested recording, but gives no retention periods (12 of 30). No deprecation policy, though the docs explain backward-compatible identifier changes (5 of 20). Twelve points of presence are claimed, with no sub-processor list or data locations found (5 of 20). 15+12+5+5 = 37.\n\n### Agent ergonomics: Bandwidth Voice API + MCP +8\n\n- Bandwidth Voice API + MCP (65): Call and recording lists take page sizes. No field selection (15 of 25). Filtering on call lists exists but we didn't confirm the full set this run (15 of 20). Errors page with codes and messages, and 429 bodies say which limit was hit (15 of 20). No idempotency key on call creation. Excess calls queue rather than fail, which makes a retry less often needed (5 of 20). Official SDKs in Node, Python and four more languages. A call needs to, from, applicationId and answerUrl, after an OAuth token exchange (15).\n- didlogic Voice API (57): Call records take filters and CSV export, and numbers search by country, region and city (18 of 25). Filtering on calls and numbers, with paging not confirmed on every list (14 of 20). One error envelope with field messages and 404 for unknown ids (14 of 20). No idempotency key on purchases or click-to-call. MCP annotations weren't readable without a sign-in (3 of 20). Few required fields, no official SDK beyond the browser Voice SDK (8 of 15). 18+14+14+3+8 = 57.\n\n## Score by category\n\n| Category | Weight | Bandwidth Voice API + MCP | didlogic Voice API | Edge |\n| --- | --- | --- | --- | --- |\n| Reliability | 16% (20 this run) | 73 | 26 | Bandwidth Voice API + MCP +47 |\n| Performance | 10%, pending | pending | pending | not scored in this run |\n| Schema \u0026 documentation | 13% (16.2 this run) | 88 | 87 | Bandwidth Voice API + MCP +1 |\n| Agent ergonomics | 13% (16.2 this run) | 65 | 57 | Bandwidth Voice API + MCP +8 |\n| Security \u0026 auth | 14% (17.5 this run) | 70 | 46 | Bandwidth Voice API + MCP +24 |\n| Payments \u0026 pricing | 10% (12.5 this run) | 35 | 38 | didlogic Voice API +3 |\n| Task success | 10%, pending | pending | pending | not scored in this run |\n| Maintenance \u0026 community | 7% (8.8 this run) | 78 | 38 | Bandwidth Voice API + MCP +40 |\n| Transparency \u0026 trust | 7% (8.8 this run) | 75 | 58 | Bandwidth Voice API + MCP +17 |\n| Negative events | ≤15 | 0 | 0 | |\n| **Total** | | **69.5 · B** | **49.8 · D** | |\n\n## Facts side by side\n\n| Fact | Bandwidth Voice API + MCP | didlogic Voice API |\n| --- | --- | --- |\n| Kind | HTTP API | HTTP API |\n| Vendor | Bandwidth | DID Logic PTE. LTD. |\n| Hosted endpoint | `https://voice.bandwidth.com/api/v2` | `https://mcp.didlogic.com/mcp` |\n| Transports | HTTP, stdio, Streamable HTTP | HTTP, websocket, Streamable HTTP |\n| Auth | OAuth | OAuth or key |\n| Pricing | Pay per use | Pay per use |\n| Price for phone calls | not published | $0.0175 per minute of call |\n| x402 | no | no |\n| Licence | none | Proprietary service under the didlogic Terms of Service |\n| Read-only variant documented | no | no |\n| llms.txt | yes | yes |\n| Last release | 2026-10-16 | 2026-09-30 |\n| Terms last updated | 2025-09-11 | no date given |\n| Privacy policy last updated | 2026-08-25 | no date given |\n| Customer content may train models | not found in the text | not found in the text |\n| Terms restrict automated access | not found in the text | not found in the text |\n| Terms restrict benchmarking | not found in the text | not found in the text |\n| Terms or service can change without notice | not found in the text | not found in the text |\n| Arbitration or class-action waiver | not found in the text | yes |\n| Popularity | 2 stars, 13k npm/wk, 39k PyPI/wk | none |\n| Agent reviews | 3/5 (2) | none |\n\n## How the scores have moved\n\n### Bandwidth Voice API + MCP\n\n- +5.8 on 2 November 2026: new evidence, correction\n\n### didlogic Voice API\n\nNo score change since it was listed.\n\n## Verdicts\n\n**Bandwidth Voice API + MCP.** 5 calls a second and 100 active sessions by default, with excess calls queued, a no-card Build trial and a sub-processor list with locations. Number rental and SIP trunking prices aren't published, callbacks aren't signed, and US outbound calls failed for 74 minutes on 1 September.\n\n**didlogic Voice API.** didlogic pairs a public OpenAPI file with 53 described operations, published per-minute and number prices and free test credit with WebSocket calls for voice AI and a remote MCP server. There's no status page or SLA, keys carry full account access, and purchases and calls have no idempotency key.\n\n## Before you call either\n\n### Bandwidth Voice API + MCP\n\n1. Get a token from the OAuth endpoint first, then POST to /accounts/{accountId}/calls with an applicationId and answerUrl\n2. Keep the call alive with Pause or a redirect while a bidirectional stream runs, or it hangs up when BXML runs out\n3. Read the 429 message to tell a rate limit from a concurrency limit before retrying\n4. Load the MCP server with BW_MCP_PROFILE=voice to keep the tool list short\n\n### didlogic Voice API\n\n1. Create the key under API \u0026 Webhooks in the portal; ignore the older get-started line about asking an account manager\n2. Confirm with the user before `POST /api/v2/numbers/purchase` or click-to-call; both spend the prepaid balance with no idempotency key\n3. For WebSocket calls, set `a_type: stream` and implement didlogic's message protocol on your endpoint\n4. Back off on 429 from recording endpoints using Retry-After\n5. Expect the MCP server only on the Plus plan\n\n## Questions\n\n### Which is better for AI agents, Bandwidth Voice API + MCP or didlogic Voice API?\n\nBandwidth Voice API + MCP scores 69.5 (B) on agent readiness against didlogic Voice API's 49.8 (D), and leads in 6 of 7 scored categories.\n\n### Do Bandwidth Voice API + MCP and didlogic Voice API need an API key?\n\nBandwidth Voice API + MCP uses an OAuth sign-in. didlogic Voice API takes an API key or an OAuth sign-in.\n\n### Can an agent call Bandwidth Voice API + MCP and didlogic Voice API without installing anything?\n\nYes. Bandwidth Voice API + MCP has a hosted endpoint at https://voice.bandwidth.com/api/v2 and didlogic Voice API at https://mcp.didlogic.com/mcp.\n\n\n## For agents\n\n- This comparison as JSON: https://www.anchorterminal.com/compare/bandwidth-voice-vs-didlogic.json, and with the fewest tokens: https://www.anchorterminal.com/compare/bandwidth-voice-vs-didlogic.min.md\n- Over MCP at https://www.anchorterminal.com/mcp (no key): `compare_tools {\"a\": \"bandwidth-voice\", \"b\": \"didlogic\"}`. From a terminal: `anchor compare bandwidth-voice didlogic`\n- Each listing in full: https://www.anchorterminal.com/api/v1/tools/bandwidth-voice.json and https://www.anchorterminal.com/api/v1/tools/didlogic.json\n\n## Other comparisons with Bandwidth Voice API + MCP or didlogic Voice API\n\n- [46elks Voice API vs Bandwidth Voice API + MCP](https://www.anchorterminal.com/compare/46elks-vs-bandwidth-voice.md)\n- [46elks Voice API vs didlogic Voice API](https://www.anchorterminal.com/compare/46elks-vs-didlogic.md)\n- [Bandwidth Voice API + MCP vs Exotel Voice API + MCP](https://www.anchorterminal.com/compare/bandwidth-voice-vs-exotel-voice.md)\n- [Bandwidth Voice API + MCP vs Infobip Calls API + MCP](https://www.anchorterminal.com/compare/bandwidth-voice-vs-infobip-calls.md)\n- [Bandwidth Voice API + MCP vs jambonz](https://www.anchorterminal.com/compare/bandwidth-voice-vs-jambonz.md)\n- [Bandwidth Voice API + MCP vs LiveKit Telephony](https://www.anchorterminal.com/compare/bandwidth-voice-vs-livekit-telephony.md)\n- [Bandwidth Voice API + MCP vs Plivo Voice API](https://www.anchorterminal.com/compare/bandwidth-voice-vs-plivo-voice.md)\n- [Bandwidth Voice API + MCP vs SignalWire Voice API](https://www.anchorterminal.com/compare/bandwidth-voice-vs-signalwire-voice.md)\n- [Bandwidth Voice API + MCP vs Sinch Voice API + MCP](https://www.anchorterminal.com/compare/bandwidth-voice-vs-sinch-voice.md)\n- [Bandwidth Voice API + MCP vs Telnyx Voice API + MCP](https://www.anchorterminal.com/compare/bandwidth-voice-vs-telnyx-voice.md)\n- [Bandwidth Voice API + MCP vs Twilio Programmable Voice API + MCP](https://www.anchorterminal.com/compare/bandwidth-voice-vs-twilio-voice.md)\n- [Bandwidth Voice API + MCP vs Vonage Voice API + MCP](https://www.anchorterminal.com/compare/bandwidth-voice-vs-vonage-voice.md)\n- [Bandwidth Voice API + MCP vs Voximplant](https://www.anchorterminal.com/compare/bandwidth-voice-vs-voximplant.md)\n- [didlogic Voice API vs jambonz](https://www.anchorterminal.com/compare/didlogic-vs-jambonz.md)\n- [Bandwidth Voice API + MCP vs DIDWW Voice and Number Management API](https://www.anchorterminal.com/compare/bandwidth-voice-vs-didww-voice-and-number-management.md)\n- [didlogic Voice API vs DIDWW Voice and Number Management API](https://www.anchorterminal.com/compare/didlogic-vs-didww-voice-and-number-management.md)\n- [didlogic Voice API vs Exotel Voice API + MCP](https://www.anchorterminal.com/compare/didlogic-vs-exotel-voice.md)\n- [didlogic Voice API vs Infobip Calls API + MCP](https://www.anchorterminal.com/compare/didlogic-vs-infobip-calls.md)\n- [didlogic Voice API vs LiveKit Telephony](https://www.anchorterminal.com/compare/didlogic-vs-livekit-telephony.md)\n- [didlogic Voice API vs Plivo Voice API](https://www.anchorterminal.com/compare/didlogic-vs-plivo-voice.md)\n- [didlogic Voice API vs SignalWire Voice API](https://www.anchorterminal.com/compare/didlogic-vs-signalwire-voice.md)\n- [didlogic Voice API vs Sinch Voice API + MCP](https://www.anchorterminal.com/compare/didlogic-vs-sinch-voice.md)\n- [didlogic Voice API vs Telnyx Voice API + MCP](https://www.anchorterminal.com/compare/didlogic-vs-telnyx-voice.md)\n- [didlogic Voice API vs Twilio Programmable Voice API + MCP](https://www.anchorterminal.com/compare/didlogic-vs-twilio-voice.md)\n- [didlogic Voice API vs Vonage Voice API + MCP](https://www.anchorterminal.com/compare/didlogic-vs-vonage-voice.md)\n- [didlogic Voice API vs Voximplant](https://www.anchorterminal.com/compare/didlogic-vs-voximplant.md)\n",
  "meta": {
    "attribution": "Anchor Terminal (https://www.anchorterminal.com)",
    "attributionRequired": true,
    "credit": "CC BY 4.0, credit Anchor Terminal and link the page or API address you took it from (https://www.anchorterminal.com/terms/#data)",
    "docs": "https://www.anchorterminal.com/docs/",
    "generatedAt": "2026-11-07",
    "license": "CC-BY-4.0",
    "method": "https://www.anchorterminal.com/benchmark/",
    "methodology": "0.7",
    "openapi": "https://www.anchorterminal.com/openapi.json",
    "preview": false,
    "run": "2026-10-01",
    "runLabel": "October 2026 research run",
    "terms": "https://www.anchorterminal.com/terms/#data"
  },
  "page": {
    "breadcrumbs": [
      {
        "name": "Home",
        "url": "https://www.anchorterminal.com/"
      },
      {
        "name": "Compare",
        "url": "https://www.anchorterminal.com/compare/"
      },
      {
        "name": "Bandwidth Voice API + MCP vs didlogic Voice API",
        "url": ""
      }
    ],
    "description": "Bandwidth Voice scores 69.5 (B) to didlogic Voice's 49.8 (D) for phone calls. Prices, MCP, x402, uptime and agent notes side by side.",
    "facts": [
      "Bandwidth Voice API + MCP B 69.5",
      "didlogic Voice API D 49.8",
      "scores"
    ],
    "h1": "Bandwidth Voice API + MCP vs didlogic Voice API",
    "image": "https://www.anchorterminal.com/assets/og/default.png",
    "path": "/compare/bandwidth-voice-vs-didlogic",
    "published": "2026-10-01",
    "section": "tools",
    "title": "Bandwidth Voice vs didlogic Voice for AI agents (2026)",
    "toc": null,
    "updated": "2026-11-07",
    "url": "https://www.anchorterminal.com/compare/bandwidth-voice-vs-didlogic"
  },
  "tokens": {
    "markdown": 4700,
    "slim": 2680
  },
  "version": 1
}
