{
  "data": {
    "a": {
      "slug": "airwallex",
      "name": "Airwallex Spend and Issuing",
      "vendor": "Airwallex",
      "vendorUrl": "https://www.airwallex.com",
      "kind": "http-api",
      "category": "spend-management",
      "summary": "Airwallex is a multi-currency business account with company cards, expense management and bill pay. Its REST API issues and controls cards, reads card transactions and expenses, and creates vendors, purchase orders and bills. A CLI and MCP server use OAuth.",
      "url": "https://www.anchorterminal.com/tools/airwallex",
      "markdownUrl": "https://www.anchorterminal.com/tools/airwallex.md",
      "slimMarkdownUrl": "https://www.anchorterminal.com/tools/airwallex.min.md",
      "jsonUrl": "https://www.anchorterminal.com/api/v1/tools/airwallex.json",
      "repo": "https://github.com/airwallex/airwallex-marketplace",
      "license": "Proprietary service under Airwallex's service agreement and API terms. The plugin and skills repository is Apache-2.0 and `@airwallex/node-sdk` is MIT",
      "transports": [
        "http"
      ],
      "remoteUrl": "https://api.airwallex.com",
      "packages": [
        {
          "registry": "npm",
          "name": "@airwallex/node-sdk"
        }
      ],
      "auth": "mixed",
      "authNotes": "Access is self-serve in the sandbox and for an Airwallex customer in production. A user with the Owner, Admin or Developer role creates a key in the web app under Developer, then API keys. Scoped keys grant Read or Write per resource and can be tied to IP ranges, and admin keys are unrestricted. A key and client ID exchange at `POST /api/v1/authentication/login` for a bearer token that lasts 30 minutes. Spend resources need organisation-level permissions. The CLI, the MCP servers and partner apps use OAuth 2.0 with 64 scopes, and only Owner, Admin and Finance Admin users can consent. The service agreement says Airwallex must first approve API access, and the CLI guide says card and Issuing commands may need support to enable them.",
      "pricing": "freemium",
      "pricingNotes": "No separate API fee is published. The US pricing page lists Explore at $0 with up to 10 free Spend users, Grow at $12 per active Spend user a month up to 250 users, and Accelerate on request. It lists direct Spend API integration with an ERP under Accelerate and sends platform API and embedded finance use to sales. A sandbox account opens at once from a signup form with no payment card or contract, so an agent's owner can start there. Card, FX and transfer fees are on a separate fee schedule (checked 2026-10-08).",
      "priceSummary": "$12 / seat-mo",
      "where": "hosted",
      "x402": {
        "level": "no",
        "evidence": "No x402, MPP or L402 in the docs index, the API reference pages read or the pricing page (checked 2026-10-08).",
        "endpoints": []
      },
      "toolCount": null,
      "popularity": {
        "githubStars": 7,
        "npmWeekly": 44464,
        "pypiWeekly": null,
        "asOf": "2026-10-08"
      },
      "docsUrl": "https://www.airwallex.com/docs/",
      "llmsTxt": "https://www.airwallex.com/docs/llms.txt",
      "capabilities": [
        "spend.transactions",
        "spend.cards",
        "spend.expenses",
        "spend.bills",
        "spend.procurement"
      ],
      "tags": [
        "hosted",
        "freemium",
        "api-key",
        "oauth",
        "mcp",
        "cli",
        "llms-txt",
        "webhooks",
        "sandbox",
        "multi-currency",
        "soc2",
        "pci-dss",
        "iso27001",
        "status-page",
        "security-txt",
        "bug-bounty"
      ],
      "lastRelease": "2026-09-30",
      "graded": true,
      "anchor": {
        "graded": true,
        "score": 68.3,
        "grade": "B",
        "agentReady": false,
        "rank": 187,
        "ranked": true,
        "rankOf": 722,
        "categoryRank": 1,
        "methodology": "0.4",
        "run": "2026-10-01",
        "scores": {
          "ergonomics": 69,
          "maintenance": 66,
          "payments": 25,
          "reliability": 77,
          "schema": 69,
          "security": 84,
          "transparency": 78
        },
        "pending": [
          "performance",
          "tasks"
        ],
        "assessment": {
          "confidence": "medium",
          "date": "2026-10-08"
        },
        "negative": 0,
        "verdict": "Scoped API keys split read from write per resource, tokens last 30 minutes, and the sandbox opens at once with no contract. No OpenAPI spec was found, every Spend endpoint read is marked beta, the pricing page lists direct Spend API integration under the custom-priced Accelerate plan, and no SLA was found.",
        "bestFor": "A company already banking with Airwallex in several currencies that wants an agent to issue cards with limits, read card transactions and expenses, load vendors, purchase orders and bills, and sync status to an ERP.",
        "strengths": [
          "Scoped API keys grant Read or Write per resource, can be limited to listed IP ranges, and exchange for bearer tokens that last 30 minutes",
          "A sandbox account opens at once from a signup form, with the full API except Connected Accounts and simulation endpoints for card transactions",
          "Rate limits are published with numbers, 100 requests a second per account and 20 per endpoint in production, with backoff guidance for 429",
          "Create calls such as `POST /api/v1/issuing/cards/create` and `POST /api/v1/spend/bills/create` require a `request_id`, so a retried request isn't applied twice",
          "status.airwallex.com has separate Spend, Issuing, API Gateway and Sandbox components, and none was named in an incident between 27 April and 8 October 2026"
        ],
        "weaknesses": [
          "No OpenAPI spec was found. The reference is a Markdown page per endpoint, and the CLI prints one endpoint's schema at a time",
          "Each Spend endpoint we read (expenses, vendors, bills, purchase orders) is marked beta, and the pricing page lists direct Spend API integration under the custom-priced Accelerate plan",
          "The Spend API reads expenses and sets sync status. No endpoint was found to attach a receipt, code a card expense or approve one",
          "The only server SDK is `@airwallex/node-sdk`, still in beta and last published on 31 December 2025",
          "No SLA was found, and the Security Audit Logs API is open to selected accounts only and covers logins, user changes and key changes, not API calls"
        ],
        "agentNotes": [
          "Exchange `x-client-id` and `x-api-key` at `POST /api/v1/authentication/login` once, then reuse the bearer token for 30 minutes. The login endpoint allows 100 requests a minute per key",
          "Create Spend keys with organisation-level permissions. With a key linked to several accounts, send `x-login-as` at login or the token carries no account permissions",
          "Send a fresh UUID as `request_id` on every create call and reuse the same value when retrying after a timeout",
          "Expect two pagination styles. Spend and card transaction events use the `page` bookmark with `page_after` and `page_before`. Cards and legacy transactions use `page_num` and `has_more`",
          "Card and expense lists default to the last 30 days. Pass both created-at bounds to read further back, and fetch a card singly to see its `authorization_controls`"
        ],
        "metrics": {
          "kind": "remote",
          "measured": false
        },
        "reviewCount": 0,
        "avgRating": 0,
        "history": [
          {
            "basis": "public evidence",
            "confidence": "medium",
            "grade": "B",
            "methodology": "0.4",
            "pending": [
              "performance",
              "tasks"
            ],
            "run": "2026-10-01",
            "runLabel": "October 2026 research run",
            "score": 68.3
          }
        ],
        "editorialScores": {
          "ergonomics": 69,
          "maintenance": 66,
          "payments": 25,
          "reliability": 77,
          "schema": 69,
          "security": 84,
          "transparency": 64
        },
        "provenanceScore": 92
      },
      "connect": {
        "install": "curl -fsSL https://static.airwallex.com/developer-tools/airwallex-cli/install.sh | sh",
        "http": "curl -X POST https://api.sandbox.airwallex.com/api/v1/authentication/login \\\n  -H 'Content-Type: application/json' \\\n  -H 'x-api-key: {{YOUR_API_KEY}}' \\\n  -H 'x-client-id: {{YOUR_CLIENT_ID}}'",
        "claudeCode": "claude mcp add-json airwallex '{ \"type\": \"http\", \"url\": \"https://mcp.airwallex.com/mcp\" }'",
        "config": {
          "mcpServers": {
            "airwallex": {
              "type": "http",
              "url": "https://mcp.airwallex.com/mcp"
            }
          }
        }
      },
      "letme": {
        "capability": "https://letme.dev/spend.transactions",
        "tool": "https://letme.dev/airwallex"
      },
      "area": "domain-data",
      "unitPrices": [
        {
          "item": "Explore plan",
          "unit": "seat-month",
          "usd": 0,
          "note": "Up to 10 free Spend users. No separate API fee is published"
        },
        {
          "item": "Grow plan",
          "unit": "seat-month",
          "usd": 12,
          "note": "Per active Spend user, up to 250. Accelerate, which lists direct Spend API integration, is priced on request"
        }
      ],
      "provenance": {
        "legalEntity": "Airwallex US, LLC",
        "domain": "airwallex.com",
        "domainRegistered": "2015-11-08",
        "endpointOnVendorDomain": true,
        "terms": "https://www.airwallex.com/us/terms/application-programming-interface-terms",
        "privacy": "https://www.airwallex.com/us/terms/privacy-policy-airwallex",
        "statusPage": "https://status.airwallex.com",
        "changelog": "https://www.airwallex.com/docs/api/changelog",
        "securityTxt": "valid",
        "checked": "2026-10-08",
        "notes": [
          "The terms and privacy policy cited are the US ones. The US privacy policy names Airwallex US, LLC among the entities responsible, and the site footer gives Airwallex US, LLC (NMLS #1928093) as the licensed money transmitter. Other regions have their own entities and documents.",
          "The API terms (API Developer Terms and Conditions) are dated 20 June 2025. The service agreement was last updated on 2 December 2025 and took effect on 1 January 2026. The Spend Management Terms are dated 6 December 2023.",
          "The API answers at api.airwallex.com and api.sandbox.airwallex.com, and the MCP servers at mcp.airwallex.com and mcp.sandbox.airwallex.com.",
          "www.airwallex.com/.well-known/security.txt lists bugbounty@airwallex.com and security@airwallex.com and an expiry of 30 June 2030. The timestamp has a space inside it, which isn't the RFC 9116 format.",
          "The US privacy policy shows no last-updated line in the text we read. The global policy at /terms/privacy-policy is dated 26 February 2026.",
          "RDAP for airwallex.com gives a registration date of 2015-11-08."
        ],
        "score": 92
      },
      "pageJsonUrl": "https://www.anchorterminal.com/tools/airwallex.json",
      "live": {
        "slug": "airwallex",
        "probe": {
          "target": "https://api.airwallex.com",
          "method": "get",
          "lastAt": "2026-10-08T21:53:14.737813968Z",
          "lastOk": true,
          "lastStatus": 404,
          "lastMs": 47,
          "authRequired": false,
          "uptime24h": 100,
          "uptime30d": 100,
          "p50ms24h": 45,
          "p95ms24h": 75,
          "samples24h": 28,
          "samples30d": 28,
          "days": [
            {
              "date": "2026-10-08",
              "probes": 28,
              "ok": 28
            }
          ]
        },
        "vendorStatus": {
          "page": "https://status.airwallex.com",
          "indicator": "none",
          "summary": "All Systems Operational",
          "checkedAt": "2026-10-08T21:57:41.831642339Z"
        },
        "updatedAt": "2026-10-08T21:57:41.831642339Z"
      }
    },
    "answer": "Airwallex Spend and Issuing scores 68.3 (B) on agent readiness against Spendesk API + MCP's 62.3 (B), and leads in 4 of 7 scored categories. Spendesk API + MCP leads on schema \u0026 documentation.",
    "b": {
      "slug": "spendesk",
      "name": "Spendesk API + MCP",
      "vendor": "Spendesk SAS",
      "vendorUrl": "https://www.spendesk.com",
      "kind": "http-api",
      "category": "spend-management",
      "summary": "Spend management platform from Spendesk SAS in Paris, covering company cards, expense claims, supplier invoices, purchase orders and accounting exports. Outside agents reach it through a REST API with scoped keys or OAuth, and a hosted MCP server.",
      "url": "https://www.anchorterminal.com/tools/spendesk",
      "markdownUrl": "https://www.anchorterminal.com/tools/spendesk.md",
      "slimMarkdownUrl": "https://www.anchorterminal.com/tools/spendesk.min.md",
      "jsonUrl": "https://www.anchorterminal.com/api/v1/tools/spendesk.json",
      "license": "Proprietary service under Spendesk's terms and conditions and a separate Spendesk API agreement",
      "transports": [
        "http"
      ],
      "remoteUrl": "https://public-api.spendesk.com",
      "packages": [],
      "auth": "mixed",
      "authNotes": "Access is granted by Spendesk, not self-serve. A customer asks its Spendesk representative for API access, then an Account Owner or Admin creates an API key (client ID and secret) with chosen scopes and an expiry of up to one year. The key is exchanged at POST /v1/auth/token with HTTP Basic for a Bearer token that lasts 60 minutes and can carry fewer scopes than the key. Partner integrations use OAuth 2.0 authorisation code with PKCE after approval by the partnerships team. The MCP server accepts only OAuth user tokens, refuses API keys, and limits use to Controllers and Account Owners. Experimental scopes are added on request.",
      "pricing": "paid",
      "pricingNotes": "No public prices. The pricing page describes a fixed monthly platform fee plus variable fees per transaction (card purchases, invoice payments and expense claims) and asks for a quote. It lists the open API and the MCP connection in the base package. No free tier, trial or self-serve sandbox was found. A demo environment exists at public-api.demo.spendesk.com, with credentials requested alongside API access (checked 2026-10-08).",
      "priceSummary": "Paid",
      "where": "hosted",
      "x402": {
        "level": "no",
        "evidence": "No x402, MPP or L402 in the developer docs, the OpenAPI definition or the pricing page (checked 2026-10-08).",
        "endpoints": []
      },
      "toolCount": 62,
      "popularity": {
        "githubStars": null,
        "npmWeekly": null,
        "pypiWeekly": null,
        "asOf": "2026-10-08"
      },
      "docsUrl": "https://developer.spendesk.com",
      "llmsTxt": "https://developer.spendesk.com/llms.txt",
      "openapi": "https://developer.spendesk.com/openapi/spendesk-public-api.json",
      "capabilities": [
        "spend.transactions",
        "spend.expenses",
        "spend.cards",
        "spend.bills",
        "spend.procurement"
      ],
      "tags": [
        "hosted",
        "enterprise",
        "api-key",
        "oauth",
        "mcp",
        "openapi",
        "llms-txt",
        "webhooks",
        "sales-led",
        "status-page",
        "iso27001",
        "bug-bounty"
      ],
      "lastRelease": "2026-09-29",
      "graded": true,
      "anchor": {
        "graded": true,
        "score": 62.3,
        "grade": "B",
        "agentReady": false,
        "rank": 342,
        "ranked": true,
        "rankOf": 722,
        "categoryRank": 4,
        "methodology": "0.4",
        "run": "2026-10-01",
        "scores": {
          "ergonomics": 62,
          "maintenance": 57,
          "payments": 0,
          "reliability": 55,
          "schema": 87,
          "security": 86,
          "transparency": 80
        },
        "pending": [
          "performance",
          "tasks"
        ],
        "assessment": {
          "confidence": "medium",
          "date": "2026-10-08"
        },
        "negative": 0,
        "verdict": "Scoped credentials, MCP write permissions that are off by default, an action log and published guidance on prompt injection suit delegated finance work. Access needs a paying customer and a request to Spendesk, most write endpoints are experimental, no official SDK was found, and the status page lists three critical incidents between 2 and 29 September 2026.",
        "bestFor": "A finance team already on Spendesk that wants an assistant to analyse spend, follow invoices and prepare the accounting close, or an ERP sync reading payables and settlements.",
        "strengths": [
          "OpenAPI 3.1 definition with 106 operations, llms.txt and a Markdown copy of every docs page, all public without sign-in",
          "37 documented scopes split by resource and by read or write. A token can carry fewer scopes than its key, and keys expire within one year",
          "MCP write permissions are off by default, enabled per connection by an admin with a second factor, then ticked by each user",
          "Every MCP tool call is recorded in an action log with date, tool, status, user, company and correlation ID",
          "Rate limits are published (1,000 requests a minute per company and credential) with x-ratelimit headers on every response"
        ],
        "weaknesses": [
          "No public price, free tier or self-serve signup. API access and demo credentials are requested from a Spendesk representative",
          "Cards, transactions, invoices, purchase orders, webhooks and most writes sit behind experimental scopes granted on request, and may change",
          "No official SDK found on npm or PyPI, and the MCP server isn't in the official MCP registry",
          "status.spendesk.com has no API component and lists three critical and three major incidents opened between 2 and 29 September 2026",
          "An Idempotency-Key is documented only for creating an intake. A repeated purchase order or supplier request creates a second record"
        ],
        "agentNotes": [
          "Request a token at POST /v1/auth/token with HTTP Basic (client ID and secret). It lasts 3,600 seconds, so renew on a 401",
          "Stop paging at the last page calculated from `total` and `pageSize` (maximum 30). A page past the end returns 404, not an empty list",
          "With an organisation-level token, send `X-Company-Id` on every v1 call or expect a 400",
          "The MCP server refuses API keys. Connect with OAuth authorisation code and PKCE, and treat `Tool not found` (-32601) as a missing permission",
          "After an unclear write result, read the object again before retrying. Creating a purchase order or supplier twice creates two"
        ],
        "metrics": {
          "kind": "remote",
          "measured": false
        },
        "reviewCount": 0,
        "avgRating": 0,
        "history": [
          {
            "basis": "public evidence",
            "confidence": "medium",
            "grade": "B",
            "methodology": "0.4",
            "pending": [
              "performance",
              "tasks"
            ],
            "run": "2026-10-01",
            "runLabel": "October 2026 research run",
            "score": 62.3
          }
        ],
        "editorialScores": {
          "ergonomics": 62,
          "maintenance": 57,
          "payments": 0,
          "reliability": 55,
          "schema": 87,
          "security": 86,
          "transparency": 64
        },
        "provenanceScore": 96
      },
      "connect": {
        "http": "curl -X POST https://public-api.demo.spendesk.com/v1/auth/token \\\n  -u \"YOUR_CLIENT_ID:YOUR_CLIENT_SECRET\"\n\ncurl https://public-api.demo.spendesk.com/v1/wallet-summary \\\n  -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\""
      },
      "letme": {
        "capability": "https://letme.dev/spend.transactions",
        "tool": "https://letme.dev/spendesk"
      },
      "area": "domain-data",
      "provenance": {
        "legalEntity": "Spendesk SAS",
        "domain": "spendesk.com",
        "domainRegistered": "2015-10-30",
        "endpointOnVendorDomain": true,
        "terms": "https://www.spendesk.com/legals/terms/",
        "privacy": "https://www.spendesk.com/legals/privacy/",
        "statusPage": "https://status.spendesk.com",
        "changelog": "https://developer.spendesk.com/changelog",
        "securityTxt": "valid",
        "checked": "2026-10-08",
        "notes": [
          "The legal notice names Spendesk SAS, 7 Rue de Madrid, 75008 Paris, registration 821 893 286 R.C.S. Paris. The privacy policy (March 2025, version 0.5) gives the registered office as 51 rue de Londres, 75008 Paris.",
          "Payment services are supplied by Spendesk Financial Services (a French payment institution licensed by the ACPR, number 17518) in the EEA, Adyen in the UK and Sutton Bank in the US, per the site footer.",
          "The API and the MCP server answer at public-api.spendesk.com. An unauthenticated POST to /v1/mcp returned 401 with a WWW-Authenticate header naming the protected resource metadata.",
          "www.spendesk.com/.well-known/security.txt is present with a contact and an expiry of 31 December 2026. developer.spendesk.com/.well-known/security.txt returns 404.",
          "The terms page lists the customer terms, a DORA addendum, a Spendesk API agreement and partner programme terms. The document links are drawn by JavaScript and we couldn't open them.",
          "RDAP for spendesk.com gives a registration date of 2015-10-30."
        ],
        "score": 96
      },
      "pageJsonUrl": "https://www.anchorterminal.com/tools/spendesk.json",
      "live": {
        "slug": "spendesk",
        "probe": {
          "target": "https://public-api.spendesk.com",
          "method": "get",
          "lastAt": "2026-10-08T21:53:34.736116367Z",
          "lastOk": true,
          "lastStatus": 403,
          "lastMs": 63,
          "lastNote": "asks for credentials",
          "authRequired": true,
          "uptime24h": 100,
          "uptime30d": 100,
          "p50ms24h": 65,
          "p95ms24h": 110,
          "samples24h": 71,
          "samples30d": 71,
          "days": [
            {
              "date": "2026-10-08",
              "probes": 71,
              "ok": 71
            }
          ]
        },
        "vendorStatus": {
          "page": "https://status.spendesk.com",
          "indicator": "minor",
          "summary": "Partially Degraded Service",
          "checkedAt": "2026-10-08T21:58:15.095615847Z"
        },
        "securityTxt": {
          "url": "https://spendesk.com/.well-known/security.txt",
          "state": "valid",
          "expires": "2026-12-31T22:00:00.000Z",
          "checkedAt": "2026-10-08T15:38:39.004780879Z"
        },
        "pages": [
          {
            "url": "https://developer.spendesk.com/changelog",
            "kind": "changelog",
            "status": 200,
            "checkedAt": "2026-10-08T18:17:18.275650963Z",
            "changedAt": "0001-01-01T00:00:00Z",
            "fingerprint": "0a7493461e82"
          },
          {
            "url": "https://www.spendesk.com/legals/privacy/",
            "kind": "privacy",
            "status": 200,
            "checkedAt": "2026-10-08T18:30:38.654232386Z",
            "changedAt": "0001-01-01T00:00:00Z",
            "fingerprint": "f77c18596c95"
          },
          {
            "url": "https://www.spendesk.com/legals/terms/",
            "kind": "terms",
            "status": 200,
            "checkedAt": "2026-10-08T18:30:41.303104049Z",
            "changedAt": "0001-01-01T00:00:00Z",
            "fingerprint": "880e4794e2b0"
          }
        ],
        "updatedAt": "2026-10-08T21:58:15.095615847Z"
      }
    },
    "facts": [
      {
        "a": "HTTP API",
        "b": "HTTP API",
        "name": "Kind"
      },
      {
        "a": "Airwallex",
        "b": "Spendesk SAS",
        "name": "Vendor"
      },
      {
        "a": "https://api.airwallex.com",
        "b": "https://public-api.spendesk.com",
        "name": "Hosted endpoint"
      },
      {
        "a": "HTTP",
        "b": "HTTP",
        "name": "Transports"
      },
      {
        "a": "OAuth or key",
        "b": "OAuth or key",
        "name": "Auth"
      },
      {
        "a": "Freemium",
        "b": "Paid",
        "name": "Pricing"
      },
      {
        "a": "no",
        "b": "no",
        "name": "x402"
      },
      {
        "a": "Proprietary service under Airwallex's service agreement and API terms. The plugin and skills repository is Apache-2.0 and `@airwallex/node-sdk` is MIT",
        "b": "Proprietary service under Spendesk's terms and conditions and a separate Spendesk API agreement",
        "name": "Licence"
      },
      {
        "a": "none",
        "b": "62",
        "name": "Tools exposed"
      },
      {
        "a": "no",
        "b": "no",
        "name": "Read-only variant documented"
      },
      {
        "a": "yes",
        "b": "yes",
        "name": "llms.txt"
      },
      {
        "a": "2026-09-30",
        "b": "2026-09-29",
        "name": "Last release"
      },
      {
        "a": "2025-06-20",
        "b": "couldn't be read",
        "name": "Terms last updated"
      },
      {
        "a": "no date given",
        "b": "2025-03-01",
        "name": "Privacy policy last updated"
      },
      {
        "a": "yes",
        "b": "couldn't be read",
        "name": "Customer content may train models"
      },
      {
        "a": "yes",
        "b": "couldn't be read",
        "name": "Terms restrict automated access"
      },
      {
        "a": "yes",
        "b": "couldn't be read",
        "name": "Terms restrict benchmarking"
      },
      {
        "a": "not found in the text",
        "b": "couldn't be read",
        "name": "Terms or service can change without notice"
      },
      {
        "a": "not found in the text",
        "b": "couldn't be read",
        "name": "Arbitration or class-action waiver"
      },
      {
        "a": "7 stars, 44k npm/wk",
        "b": "none",
        "name": "Popularity"
      }
    ],
    "faq": [
      {
        "answer": "Airwallex Spend and Issuing scores 68.3 (B) on agent readiness against Spendesk API + MCP's 62.3 (B), and leads in 4 of 7 scored categories. Spendesk API + MCP leads on schema \u0026 documentation.",
        "question": "Which is better for AI agents, Airwallex Spend and Issuing or Spendesk API + MCP?"
      },
      {
        "answer": "Both take an API key or an OAuth sign-in.",
        "question": "Do Airwallex Spend and Issuing and Spendesk API + MCP need an API key?"
      },
      {
        "answer": "Yes. Airwallex Spend and Issuing has a hosted endpoint at https://api.airwallex.com and Spendesk API + MCP at https://public-api.spendesk.com.",
        "question": "Can an agent call Airwallex Spend and Issuing and Spendesk API + MCP without installing anything?"
      }
    ],
    "goodFor": [
      {
        "aheadOn": [
          "Reliability, 77 against 55",
          "Agent ergonomics, 69 against 62",
          "Payments \u0026 pricing, 25 against 0",
          "Maintenance \u0026 community, 66 against 57"
        ],
        "also": null,
        "goodFor": "A company already banking with Airwallex in several currencies that wants an agent to issue cards with limits, read card transactions and expenses, load vendors, purchase orders and bills, and sync status to an ERP.",
        "slug": "airwallex",
        "watchFor": "No OpenAPI spec was found. The reference is a Markdown page per endpoint, and the CLI prints one endpoint's schema at a time"
      },
      {
        "aheadOn": [
          "Schema \u0026 documentation, 87 against 69"
        ],
        "also": null,
        "goodFor": "A finance team already on Spendesk that wants an assistant to analyse spend, follow invoices and prepare the accounting close, or an ERP sync reading payables and settlements.",
        "slug": "spendesk",
        "watchFor": "No public price, free tier or self-serve signup. API access and demo credentials are requested from a Spendesk representative"
      }
    ],
    "job": {
      "capability": "spend.transactions",
      "name": "Spend transactions"
    },
    "others": [
      {
        "json": "https://www.anchorterminal.com/compare/airwallex-vs-bill.json",
        "title": "Airwallex Spend and Issuing vs BILL",
        "url": "https://www.anchorterminal.com/compare/airwallex-vs-bill"
      },
      {
        "json": "https://www.anchorterminal.com/compare/airwallex-vs-brex.json",
        "title": "Airwallex Spend and Issuing vs Brex",
        "url": "https://www.anchorterminal.com/compare/airwallex-vs-brex"
      },
      {
        "json": "https://www.anchorterminal.com/compare/airwallex-vs-expensify.json",
        "title": "Airwallex Spend and Issuing vs Expensify",
        "url": "https://www.anchorterminal.com/compare/airwallex-vs-expensify"
      },
      {
        "json": "https://www.anchorterminal.com/compare/airwallex-vs-mercury.json",
        "title": "Airwallex Spend and Issuing vs Mercury API",
        "url": "https://www.anchorterminal.com/compare/airwallex-vs-mercury"
      },
      {
        "json": "https://www.anchorterminal.com/compare/airwallex-vs-pleo.json",
        "title": "Airwallex Spend and Issuing vs Pleo API + MCP",
        "url": "https://www.anchorterminal.com/compare/airwallex-vs-pleo"
      },
      {
        "json": "https://www.anchorterminal.com/compare/airwallex-vs-ramp.json",
        "title": "Airwallex Spend and Issuing vs Ramp",
        "url": "https://www.anchorterminal.com/compare/airwallex-vs-ramp"
      },
      {
        "json": "https://www.anchorterminal.com/compare/bill-vs-spendesk.json",
        "title": "BILL vs Spendesk API + MCP",
        "url": "https://www.anchorterminal.com/compare/bill-vs-spendesk"
      },
      {
        "json": "https://www.anchorterminal.com/compare/brex-vs-spendesk.json",
        "title": "Brex vs Spendesk API + MCP",
        "url": "https://www.anchorterminal.com/compare/brex-vs-spendesk"
      },
      {
        "json": "https://www.anchorterminal.com/compare/expensify-vs-spendesk.json",
        "title": "Expensify vs Spendesk API + MCP",
        "url": "https://www.anchorterminal.com/compare/expensify-vs-spendesk"
      },
      {
        "json": "https://www.anchorterminal.com/compare/mercury-vs-spendesk.json",
        "title": "Mercury API vs Spendesk API + MCP",
        "url": "https://www.anchorterminal.com/compare/mercury-vs-spendesk"
      },
      {
        "json": "https://www.anchorterminal.com/compare/pleo-vs-spendesk.json",
        "title": "Pleo API + MCP vs Spendesk API + MCP",
        "url": "https://www.anchorterminal.com/compare/pleo-vs-spendesk"
      },
      {
        "json": "https://www.anchorterminal.com/compare/ramp-vs-spendesk.json",
        "title": "Ramp vs Spendesk API + MCP",
        "url": "https://www.anchorterminal.com/compare/ramp-vs-spendesk"
      }
    ],
    "scores": [
      {
        "airwallex": 77,
        "by": 22,
        "edge": "airwallex",
        "key": "reliability",
        "name": "Reliability",
        "spendesk": 55,
        "weight": 16
      },
      {
        "key": "performance",
        "name": "Performance",
        "pending": true,
        "weight": 10
      },
      {
        "airwallex": 69,
        "by": 18,
        "edge": "spendesk",
        "key": "schema",
        "name": "Schema \u0026 documentation",
        "spendesk": 87,
        "weight": 13
      },
      {
        "airwallex": 69,
        "by": 7,
        "edge": "airwallex",
        "key": "ergonomics",
        "name": "Agent ergonomics",
        "spendesk": 62,
        "weight": 13
      },
      {
        "airwallex": 84,
        "by": 2,
        "edge": "spendesk",
        "key": "security",
        "name": "Security \u0026 auth",
        "spendesk": 86,
        "weight": 14
      },
      {
        "airwallex": 25,
        "by": 25,
        "edge": "airwallex",
        "key": "payments",
        "name": "Payments \u0026 pricing",
        "spendesk": 0,
        "weight": 10
      },
      {
        "key": "tasks",
        "name": "Task success",
        "pending": true,
        "weight": 10
      },
      {
        "airwallex": 66,
        "by": 9,
        "edge": "airwallex",
        "key": "maintenance",
        "name": "Maintenance \u0026 community",
        "spendesk": 57,
        "weight": 7
      },
      {
        "airwallex": 78,
        "by": 2,
        "edge": "spendesk",
        "key": "transparency",
        "name": "Transparency \u0026 trust",
        "spendesk": 80,
        "weight": 7
      }
    ],
    "summary": "Airwallex Spend and Issuing scores 68.3 (B) on agent readiness against Spendesk API + MCP's 62.3 (B), and leads in 4 of 7 scored categories. Spendesk API + MCP leads on schema \u0026 documentation. Both do spend transactions.",
    "verdicts": {
      "airwallex": "Scoped API keys split read from write per resource, tokens last 30 minutes, and the sandbox opens at once with no contract. No OpenAPI spec was found, every Spend endpoint read is marked beta, the pricing page lists direct Spend API integration under the custom-priced Accelerate plan, and no SLA was found.",
      "spendesk": "Scoped credentials, MCP write permissions that are off by default, an action log and published guidance on prompt injection suit delegated finance work. Access needs a paying customer and a request to Spendesk, most write endpoints are experimental, no official SDK was found, and the status page lists three critical incidents between 2 and 29 September 2026."
    }
  },
  "kind": "anchor.page",
  "links": {
    "api": "https://www.anchorterminal.com/api/v1/index.json",
    "html": "https://www.anchorterminal.com/compare/airwallex-vs-spendesk",
    "json": "https://www.anchorterminal.com/compare/airwallex-vs-spendesk.json",
    "llms": "https://www.anchorterminal.com/llms.txt",
    "markdown": "https://www.anchorterminal.com/compare/airwallex-vs-spendesk.md",
    "slim": "https://www.anchorterminal.com/compare/airwallex-vs-spendesk.min.md"
  },
  "markdown": "Airwallex Spend and Issuing scores 68.3 (B) on agent readiness against Spendesk API + MCP's 62.3 (B), and leads in 4 of 7 scored categories. Spendesk API + MCP leads on schema \u0026 documentation. Both do spend transactions.\n\n- Airwallex Spend and Issuing: grade B, 68.3/100, rank #187 of 722. Markdown https://www.anchorterminal.com/tools/airwallex.md · JSON https://www.anchorterminal.com/api/v1/tools/airwallex.json\n- Spendesk API + MCP: grade B, 62.3/100, rank #342 of 722. Markdown https://www.anchorterminal.com/tools/spendesk.md · JSON https://www.anchorterminal.com/api/v1/tools/spendesk.json\n\n## Which one, for what\n\n### Airwallex Spend and Issuing (B)\n\nGood for: A company already banking with Airwallex in several currencies that wants an agent to issue cards with limits, read card transactions and expenses, load vendors, purchase orders and bills, and sync status to an ERP.\n\nAhead on:\n- Reliability, 77 against 55\n- Agent ergonomics, 69 against 62\n- Payments \u0026 pricing, 25 against 0\n- Maintenance \u0026 community, 66 against 57\n\nWatch for: No OpenAPI spec was found. The reference is a Markdown page per endpoint, and the CLI prints one endpoint's schema at a time\n\n### Spendesk API + MCP (B)\n\nGood for: A finance team already on Spendesk that wants an assistant to analyse spend, follow invoices and prepare the accounting close, or an ERP sync reading payables and settlements.\n\nAhead on:\n- Schema \u0026 documentation, 87 against 69\n\nWatch for: No public price, free tier or self-serve signup. API access and demo credentials are requested from a Spendesk representative\n\n\n## Score by category\n\n| Category | Weight | Airwallex Spend and Issuing | Spendesk API + MCP | Edge |\n| --- | --- | --- | --- | --- |\n| Reliability | 16% (20 this run) | 77 | 55 | Airwallex Spend and Issuing +22 |\n| Performance | 10%, pending | pending | pending | not scored in this run |\n| Schema \u0026 documentation | 13% (16.2 this run) | 69 | 87 | Spendesk API + MCP +18 |\n| Agent ergonomics | 13% (16.2 this run) | 69 | 62 | Airwallex Spend and Issuing +7 |\n| Security \u0026 auth | 14% (17.5 this run) | 84 | 86 | Spendesk API + MCP +2 |\n| Payments \u0026 pricing | 10% (12.5 this run) | 25 | 0 | Airwallex Spend and Issuing +25 |\n| Task success | 10%, pending | pending | pending | not scored in this run |\n| Maintenance \u0026 community | 7% (8.8 this run) | 66 | 57 | Airwallex Spend and Issuing +9 |\n| Transparency \u0026 trust | 7% (8.8 this run) | 78 | 80 | Spendesk API + MCP +2 |\n| Negative events | ≤15 | 0 | 0 | |\n| **Total** | | **68.3 · B** | **62.3 · B** | |\n\n## Facts side by side\n\n| Fact | Airwallex Spend and Issuing | Spendesk API + MCP |\n| --- | --- | --- |\n| Kind | HTTP API | HTTP API |\n| Vendor | Airwallex | Spendesk SAS |\n| Hosted endpoint | `https://api.airwallex.com` | `https://public-api.spendesk.com` |\n| Transports | HTTP | HTTP |\n| Auth | OAuth or key | OAuth or key |\n| Pricing | Freemium | Paid |\n| x402 | no | no |\n| Licence | Proprietary service under Airwallex's service agreement and API terms. The plugin and skills repository is Apache-2.0 and `@airwallex/node-sdk` is MIT | Proprietary service under Spendesk's terms and conditions and a separate Spendesk API agreement |\n| Tools exposed | none | 62 |\n| Read-only variant documented | no | no |\n| llms.txt | yes | yes |\n| Last release | 2026-09-30 | 2026-09-29 |\n| Terms last updated | 2025-06-20 | couldn't be read |\n| Privacy policy last updated | no date given | 2025-03-01 |\n| Customer content may train models | yes | couldn't be read |\n| Terms restrict automated access | yes | couldn't be read |\n| Terms restrict benchmarking | yes | couldn't be read |\n| Terms or service can change without notice | not found in the text | couldn't be read |\n| Arbitration or class-action waiver | not found in the text | couldn't be read |\n| Popularity | 7 stars, 44k npm/wk | none |\n\n## Verdicts\n\n**Airwallex Spend and Issuing.** Scoped API keys split read from write per resource, tokens last 30 minutes, and the sandbox opens at once with no contract. No OpenAPI spec was found, every Spend endpoint read is marked beta, the pricing page lists direct Spend API integration under the custom-priced Accelerate plan, and no SLA was found.\n\n**Spendesk API + MCP.** Scoped credentials, MCP write permissions that are off by default, an action log and published guidance on prompt injection suit delegated finance work. Access needs a paying customer and a request to Spendesk, most write endpoints are experimental, no official SDK was found, and the status page lists three critical incidents between 2 and 29 September 2026.\n\n## Before you call either\n\n### Airwallex Spend and Issuing\n\n1. Exchange `x-client-id` and `x-api-key` at `POST /api/v1/authentication/login` once, then reuse the bearer token for 30 minutes. The login endpoint allows 100 requests a minute per key\n2. Create Spend keys with organisation-level permissions. With a key linked to several accounts, send `x-login-as` at login or the token carries no account permissions\n3. Send a fresh UUID as `request_id` on every create call and reuse the same value when retrying after a timeout\n4. Expect two pagination styles. Spend and card transaction events use the `page` bookmark with `page_after` and `page_before`. Cards and legacy transactions use `page_num` and `has_more`\n5. Card and expense lists default to the last 30 days. Pass both created-at bounds to read further back, and fetch a card singly to see its `authorization_controls`\n\n### Spendesk API + MCP\n\n1. Request a token at POST /v1/auth/token with HTTP Basic (client ID and secret). It lasts 3,600 seconds, so renew on a 401\n2. Stop paging at the last page calculated from `total` and `pageSize` (maximum 30). A page past the end returns 404, not an empty list\n3. With an organisation-level token, send `X-Company-Id` on every v1 call or expect a 400\n4. The MCP server refuses API keys. Connect with OAuth authorisation code and PKCE, and treat `Tool not found` (-32601) as a missing permission\n5. After an unclear write result, read the object again before retrying. Creating a purchase order or supplier twice creates two\n\n## Questions\n\n### Which is better for AI agents, Airwallex Spend and Issuing or Spendesk API + MCP?\n\nAirwallex Spend and Issuing scores 68.3 (B) on agent readiness against Spendesk API + MCP's 62.3 (B), and leads in 4 of 7 scored categories. Spendesk API + MCP leads on schema \u0026 documentation.\n\n### Do Airwallex Spend and Issuing and Spendesk API + MCP need an API key?\n\nBoth take an API key or an OAuth sign-in.\n\n### Can an agent call Airwallex Spend and Issuing and Spendesk API + MCP without installing anything?\n\nYes. Airwallex Spend and Issuing has a hosted endpoint at https://api.airwallex.com and Spendesk API + MCP at https://public-api.spendesk.com.\n\n\n## For agents\n\n- This comparison as JSON: https://www.anchorterminal.com/compare/airwallex-vs-spendesk.json, and with the fewest tokens: https://www.anchorterminal.com/compare/airwallex-vs-spendesk.min.md\n- Over MCP at https://www.anchorterminal.com/mcp (no key): `compare_tools {\"a\": \"airwallex\", \"b\": \"spendesk\"}`. From a terminal: `anchor compare airwallex spendesk`\n- Each listing in full: https://www.anchorterminal.com/api/v1/tools/airwallex.json and https://www.anchorterminal.com/api/v1/tools/spendesk.json\n\n## Other comparisons with Airwallex Spend and Issuing or Spendesk API + MCP\n\n- [Airwallex Spend and Issuing vs BILL](https://www.anchorterminal.com/compare/airwallex-vs-bill.md)\n- [Airwallex Spend and Issuing vs Brex](https://www.anchorterminal.com/compare/airwallex-vs-brex.md)\n- [Airwallex Spend and Issuing vs Expensify](https://www.anchorterminal.com/compare/airwallex-vs-expensify.md)\n- [Airwallex Spend and Issuing vs Mercury API](https://www.anchorterminal.com/compare/airwallex-vs-mercury.md)\n- [Airwallex Spend and Issuing vs Pleo API + MCP](https://www.anchorterminal.com/compare/airwallex-vs-pleo.md)\n- [Airwallex Spend and Issuing vs Ramp](https://www.anchorterminal.com/compare/airwallex-vs-ramp.md)\n- [BILL vs Spendesk API + MCP](https://www.anchorterminal.com/compare/bill-vs-spendesk.md)\n- [Brex vs Spendesk API + MCP](https://www.anchorterminal.com/compare/brex-vs-spendesk.md)\n- [Expensify vs Spendesk API + MCP](https://www.anchorterminal.com/compare/expensify-vs-spendesk.md)\n- [Mercury API vs Spendesk API + MCP](https://www.anchorterminal.com/compare/mercury-vs-spendesk.md)\n- [Pleo API + MCP vs Spendesk API + MCP](https://www.anchorterminal.com/compare/pleo-vs-spendesk.md)\n- [Ramp vs Spendesk API + MCP](https://www.anchorterminal.com/compare/ramp-vs-spendesk.md)\n",
  "meta": {
    "attribution": "Anchor Terminal (https://www.anchorterminal.com)",
    "docs": "https://www.anchorterminal.com/docs/",
    "generatedAt": "2026-10-08",
    "license": "CC-BY-4.0",
    "method": "https://www.anchorterminal.com/benchmark/",
    "methodology": "0.4",
    "openapi": "https://www.anchorterminal.com/openapi.json",
    "preview": false,
    "run": "2026-10-01",
    "runLabel": "October 2026 research run"
  },
  "page": {
    "breadcrumbs": [
      {
        "name": "Home",
        "url": "https://www.anchorterminal.com/"
      },
      {
        "name": "Compare",
        "url": "https://www.anchorterminal.com/compare/"
      },
      {
        "name": "Airwallex Spend and Issuing vs Spendesk API + MCP",
        "url": ""
      }
    ],
    "description": "Airwallex Spend and Issuing scores 68.3 (B) on agent readiness against Spendesk API + MCP's 62.3 (B), and leads in 4 of 7 scored categories. Spendesk API + MCP leads on schema \u0026 documentation. Both do spend transactions. Category scores, facts, verdicts and agent notes side by…",
    "facts": [
      "Airwallex Spend and Issuing B 68.3",
      "Spendesk API + MCP B 62.3",
      "scores"
    ],
    "h1": "Airwallex Spend and Issuing vs Spendesk API + MCP",
    "image": "https://www.anchorterminal.com/assets/og/compare-airwallex-vs-spendesk.png",
    "path": "/compare/airwallex-vs-spendesk",
    "published": "2026-10-01",
    "section": "tools",
    "title": "Airwallex Spend and Issuing vs Spendesk API + MCP for AI agents",
    "toc": null,
    "updated": "2026-10-08",
    "url": "https://www.anchorterminal.com/compare/airwallex-vs-spendesk"
  },
  "tokens": {
    "markdown": 2300,
    "slim": 780
  },
  "version": 1
}
