{
  "data": {
    "a": {
      "slug": "check-payroll",
      "name": "Check",
      "vendor": "Check Technologies, Inc.",
      "vendorUrl": "https://www.checkhq.com",
      "kind": "http-api",
      "category": "payroll",
      "summary": "Check is an embedded payroll API from Check Technologies in New York. Software platforms build US payroll on it for their own customers, with tax calculation, payment and filing handled by Check. Access is by partner agreement.",
      "url": "https://www.anchorterminal.com/tools/check-payroll",
      "markdownUrl": "https://www.anchorterminal.com/tools/check-payroll.md",
      "slimMarkdownUrl": "https://www.anchorterminal.com/tools/check-payroll.min.md",
      "jsonUrl": "https://www.anchorterminal.com/api/v1/tools/check-payroll.json",
      "repo": "https://github.com/check-technologies/mcp-server-check",
      "license": "Proprietary service under Check's terms of service and partner agreement. The MCP server and CLI on GitHub are MIT",
      "transports": [
        "http"
      ],
      "remoteUrl": "https://api.checkhq.com",
      "packages": [],
      "auth": "mixed",
      "authNotes": "A partner API key sent as `Authorization: Bearer`, one for sandbox and one for production, issued by Check after a request through its sales contact. The key carries the whole partner account, with no per-key scopes found. Check says unused keys expire, last activity is shown and IP restrictions can be set through the account team. Integration partners get OAuth tokens (authorisation code grant, with refresh tokens) limited to one employer and one permission level, after a Check partner authorises them. The hosted MCP server accepts the API key or a Console OAuth login that runs with the Console user's permissions. This listing grades embedded-payroll partner access. Check has no route to an existing employer's payroll account outside a partner platform.",
      "pricing": "paid",
      "pricingNotes": "No public prices. checkhq.com/pricing returns 404 and the site's buttons open a sales contact form. A sandbox exists at sandbox.checkhq.com under a Sandbox User Agreement, but the documentation says to request an API key from Check, so an agent can't start without a person contacting sales. Production needs a partner agreement. The Usage API reports billable companies, employees and contractors each month, with no unit price published (checked 2026-10-08).",
      "priceSummary": "Paid",
      "where": "hosted",
      "x402": {
        "level": "no",
        "evidence": "No x402, MPP or L402 in the documentation index, the API reference pages read or the website (checked 2026-10-08).",
        "endpoints": []
      },
      "toolCount": null,
      "popularity": {
        "githubStars": 18,
        "npmWeekly": null,
        "pypiWeekly": null,
        "asOf": "2026-10-08"
      },
      "docsUrl": "https://docs.checkhq.com",
      "llmsTxt": "https://docs.checkhq.com/llms.txt",
      "capabilities": [
        "payroll.run",
        "payroll.employees",
        "payroll.embedded",
        "payroll.tax-filing",
        "payroll.contractors"
      ],
      "tags": [
        "hosted",
        "embedded-payroll",
        "us-payroll",
        "api-key",
        "oauth",
        "mcp",
        "llms-txt",
        "sandbox",
        "webhooks",
        "sales-led",
        "partner-approval",
        "status-page",
        "bug-bounty",
        "soc2"
      ],
      "lastRelease": "2026-10-07",
      "graded": true,
      "anchor": {
        "graded": true,
        "score": 67.5,
        "grade": "B",
        "agentReady": false,
        "rank": 193,
        "ranked": true,
        "rankOf": 629,
        "categoryRank": 2,
        "methodology": "0.4",
        "run": "2026-10-01",
        "scores": {
          "ergonomics": 83,
          "maintenance": 72,
          "payments": 5,
          "reliability": 80,
          "schema": 78,
          "security": 74,
          "transparency": 62
        },
        "pending": [
          "performance",
          "tasks"
        ],
        "assessment": {
          "confidence": "medium",
          "date": "2026-10-08"
        },
        "negative": 0,
        "verdict": "Graded as embedded payroll through a partner API key, not access to an existing employer's payroll account. The API has idempotency keys on writes, a required preview before approval and queryable request logs. No price is public, a sandbox key comes through Check's sales team, and one API key carries the whole partner account.",
        "bestFor": "A software platform that wants to sell US payroll inside its own product and can sign a partnership, with Check handling tax calculation, money movement and filings.",
        "strengths": [
          "`X-Idempotency-Key` is accepted on writes and stored for 24 hours, and a 429 carries `Retry-After` with `RateLimit-Limit` and `RateLimit-Remaining` on every authenticated response",
          "A payroll must have a succeeded preview before approval, and `preview_started_at` makes approval fail with 409 `preview_superseded` if the preview is stale",
          "Every response carries `X-Request-Log-Id`, and GET /logs returns request logs with SSNs, bank account numbers and the `Authorization` header redacted",
          "The MCP server starts with three meta-tools over 270 tools, with read-only mode, toolset filters and optional confirmation for destructive tools",
          "llms.txt indexes the documentation, and each page is served as Markdown with an OpenAPI 3.1 fragment per operation"
        ],
        "weaknesses": [
          "No public price and no self-serve signup. The documentation says to request an API key through Check's sales contact",
          "An API key carries the whole partner account. No per-key scopes or read-only keys were found in the reviewed documentation",
          "No official SDK in a general programming language was found. The CLI and MCP server install from a git clone, not from PyPI",
          "No SLA is published. The terms of service make no representation about uptime unless agreed in writing",
          "No sub-processor list, hosting location or published DPA text was found, and the privacy policy states no retention periods"
        ],
        "agentNotes": [
          "Use https://sandbox.checkhq.com with the sandbox key and https://api.checkhq.com with the production key. A key is not valid across environments",
          "Preview a payroll before approving it, then pass `preview_started_at` to POST /payrolls/{id}/approve so a stale preview fails with 409",
          "Send `X-Idempotency-Key` on every write. Keys expire after 24 hours, so list the resource before retrying later than that",
          "On 429 wait for `Retry-After`. The limit is 10 requests a second in sandbox and for partners paying fewer than 1,000 payees a month, with 100 concurrent requests",
          "Connect the MCP server with `?read_only=true` or `X-MCP-Readonly: true` unless writes are intended. In production, approving a payroll moves money"
        ],
        "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": 67.5
          }
        ],
        "editorialScores": {
          "ergonomics": 83,
          "maintenance": 72,
          "payments": 5,
          "reliability": 80,
          "schema": 78,
          "security": 74,
          "transparency": 38
        },
        "provenanceScore": 86
      },
      "connect": {
        "http": "curl -X POST https://sandbox.checkhq.com/companies \\\n  -H 'Content-Type: application/json' \\\n  -H 'Authorization: Bearer \u003cAPI_KEY\u003e' \\\n  -d '{\"address\": {\"line1\": \"20 W 34th St\", \"postal_code\": \"10001\", \"city\": \"New York\", \"state\": \"NY\"}, \"start_date\": \"2020-05-20\", \"trade_name\": \"Good Web Design\", \"legal_name\": \"Good Web Design, Inc.\"}'",
        "claudeCode": "claude mcp add --transport http check https://mcp.sandbox.checkhq.com/check/mcp \\\n  --header \"Authorization: Bearer your-api-key-here\"",
        "config": {
          "mcpServers": {
            "check": {
              "type": "url",
              "url": "https://mcp.sandbox.checkhq.com/check/mcp"
            }
          }
        }
      },
      "letme": {
        "capability": "https://letme.dev/payroll.run",
        "tool": "https://letme.dev/check-payroll"
      },
      "area": "domain-data",
      "provenance": {
        "legalEntity": "Check Technologies, Inc.",
        "domain": "checkhq.com",
        "domainRegistered": "2006-10-28",
        "endpointOnVendorDomain": true,
        "terms": "https://www.checkhq.com/company/terms",
        "privacy": "https://www.checkhq.com/company/privacy",
        "statusPage": "https://status.checkhq.com",
        "changelog": "https://www.checkhq.com/resources/changelog",
        "securityTxt": "none",
        "checked": "2026-10-08",
        "notes": [
          "The privacy policy (effective 18 April 2024) names Check Technologies, Inc., 228 Park Ave. S, PMB 14961, New York, NY 10003. The site footer also names Check Payments LLC (NMLS #2103307).",
          "The terms of service are dated 3 September 2021. Sandbox use is also governed by a Sandbox User Agreement at checkhq.com/company/sandbox-user-agreement.",
          "www.checkhq.com/.well-known/security.txt and checkhq.com/.well-known/security.txt return 404. The security page sends vulnerability reports to a bug bounty at federacy.com/check.",
          "The API answers at api.checkhq.com and sandbox.checkhq.com, and the hosted MCP server at mcp.checkhq.com and mcp.sandbox.checkhq.com.",
          "RDAP for checkhq.com gives a registration date of 2006-10-28 and Squarespace Domains II LLC as registrar."
        ],
        "score": 86
      },
      "pageJsonUrl": "https://www.anchorterminal.com/tools/check-payroll.json",
      "live": {
        "slug": "check-payroll",
        "probe": {
          "target": "https://api.checkhq.com",
          "method": "get",
          "lastAt": "2026-10-08T19:08:42.948610562Z",
          "lastOk": true,
          "lastStatus": 200,
          "lastMs": 1242,
          "authRequired": false,
          "uptime24h": 100,
          "uptime30d": 100,
          "p50ms24h": 711,
          "p95ms24h": 1040,
          "samples24h": 42,
          "samples30d": 42,
          "days": [
            {
              "date": "2026-10-08",
              "probes": 42,
              "ok": 42
            }
          ]
        },
        "vendorStatus": {
          "page": "https://status.checkhq.com",
          "indicator": "none",
          "summary": "All Systems Operational",
          "checkedAt": "2026-10-08T19:06:29.125928299Z"
        },
        "githubStars": 18,
        "securityTxt": {
          "url": "https://checkhq.com/.well-known/security.txt",
          "state": "none",
          "checkedAt": "2026-10-08T15:38:31.878118114Z"
        },
        "pages": [
          {
            "url": "https://www.checkhq.com/resources/changelog",
            "kind": "changelog",
            "status": 200,
            "checkedAt": "2026-10-08T18:27:02.804039275Z",
            "changedAt": "0001-01-01T00:00:00Z",
            "fingerprint": "ada7be68b809"
          },
          {
            "url": "https://www.checkhq.com/company/privacy",
            "kind": "privacy",
            "status": 200,
            "checkedAt": "2026-10-08T18:26:58.734249468Z",
            "changedAt": "0001-01-01T00:00:00Z",
            "fingerprint": "2d782586e2af"
          },
          {
            "url": "https://www.checkhq.com/company/terms",
            "kind": "terms",
            "status": 200,
            "checkedAt": "2026-10-08T18:27:00.809006213Z",
            "changedAt": "0001-01-01T00:00:00Z",
            "fingerprint": "c2d2a944fcea"
          }
        ],
        "updatedAt": "2026-10-08T19:08:42.948610562Z"
      }
    },
    "answer": "Check scores 67.5 (B) on agent readiness against Zeal's 45.4 (E), and leads in every scored category.",
    "b": {
      "slug": "zeal",
      "name": "Zeal",
      "vendor": "Puzzl Group Inc.",
      "vendorUrl": "https://www.zeal.com",
      "kind": "http-api",
      "category": "payroll",
      "summary": "Zeal is an embedded payroll API for US staffing platforms, labour marketplaces and workforce software. Partners create employer companies, onboard W-2 employees and 1099 contractors, create pay cheques and contractor payments, preview payroll and pull reports.",
      "url": "https://www.anchorterminal.com/tools/zeal",
      "markdownUrl": "https://www.anchorterminal.com/tools/zeal.md",
      "slimMarkdownUrl": "https://www.anchorterminal.com/tools/zeal.min.md",
      "jsonUrl": "https://www.anchorterminal.com/api/v1/tools/zeal.json",
      "repo": "https://github.com/zeal-corp/typescript-sdk",
      "license": "Proprietary service. The npm SDK declares MIT. The SDK repositories on GitHub carry no licence file",
      "transports": [
        "http"
      ],
      "remoteUrl": "https://api.zeal.com",
      "packages": [
        {
          "registry": "npm",
          "name": "@zeal-api/sdk"
        },
        {
          "registry": "pypi",
          "name": "zeal-api-sdk"
        }
      ],
      "auth": "api-key",
      "authNotes": "API keys, issued only to Zeal partners. Zeal's team creates the partner account after a demo request, then the Partner Dashboard at app.zeal.com shows one Test API key, one Production API key and the `partnerID`. Every call sends `Authorization: Bearer {apiKey}`, and most also need a `companyID`. A key covers every employer company under the partner, has no scopes, and is rolled from the dashboard, which invalidates the old key at once. Production payroll is switched on by Zeal (error code 0 until then). The agent chat and MCP endpoints need a key that Zeal has Agent-enabled. This is embedded-payroll partner access. An employer has no separate API route into its own Zeal payroll account.",
      "pricing": "paid",
      "pricingNotes": "No public prices. www.zeal.com/pricing returns 404 and every call to action asks for a demo. A test environment that moves no money exists, but its key comes only after Zeal creates a partner account, so an agent cannot start without a sales contact. No free tier or self-serve trial was found (checked 2026-10-08).",
      "priceSummary": "Paid",
      "where": "hosted",
      "x402": {
        "level": "no",
        "evidence": "No x402, MPP or L402 in llms-full.txt, the OpenAPI specs or the marketing site (checked 2026-10-08).",
        "endpoints": []
      },
      "toolCount": null,
      "popularity": {
        "githubStars": 0,
        "npmWeekly": 8,
        "pypiWeekly": null,
        "asOf": "2026-10-08"
      },
      "docsUrl": "https://docs.zeal.com",
      "llmsTxt": "https://docs.zeal.com/llms.txt",
      "openapi": "https://docs.zeal.com/openapi/zeal-api.json",
      "capabilities": [
        "payroll.run",
        "payroll.embedded",
        "payroll.employees",
        "payroll.contractors",
        "payroll.tax-filing",
        "hr.onboarding"
      ],
      "tags": [
        "hosted",
        "api-key",
        "openapi",
        "llms-txt",
        "typescript",
        "python",
        "webhooks",
        "sandbox",
        "sales-led",
        "partner-only",
        "us-only",
        "soc2",
        "mcp"
      ],
      "lastRelease": "2026-07-31",
      "graded": true,
      "anchor": {
        "graded": true,
        "score": 45.4,
        "grade": "E",
        "agentReady": false,
        "rank": 569,
        "ranked": true,
        "rankOf": 629,
        "categoryRank": 5,
        "methodology": "0.4",
        "run": "2026-10-01",
        "scores": {
          "ergonomics": 63,
          "maintenance": 61,
          "payments": 0,
          "reliability": 42,
          "schema": 68,
          "security": 34,
          "transparency": 51
        },
        "pending": [
          "performance",
          "tasks"
        ],
        "assessment": {
          "confidence": "medium",
          "date": "2026-10-08"
        },
        "negative": 0,
        "verdict": "Graded on the partner REST API at api.zeal.com, which is the only access route. Three OpenAPI specs, llms.txt, a test environment that moves no money, a preview endpoint and a per-cheque approval flag are documented. Access starts with a demo request, prices are not published, each environment has one unscoped key, and no status page or working changelog was found.",
        "bestFor": "A US staffing platform, marketplace or workforce product that will sign a partnership and run payroll for many employers under its own brand, including daily and on-demand pay.",
        "strengths": [
          "Public OpenAPI 3.1 specs with 177 operations, plus llms.txt, llms-full.txt and a Markdown copy of every docs page",
          "Test keys run payroll end to end with no money moved and no tax filings, in an environment separate from production",
          "Preview endpoints return the gross-to-net breakdown before processing, and `approval_required` holds a cheque until `approved` is set",
          "`x-idempotency-key` header honoured for 24 hours, and 116 numbered error codes with messages",
          "Fern-generated TypeScript and Python SDKs (0.2.1, July 2026) that retry 408, 429 and 5xx with backoff"
        ],
        "weaknesses": [
          "No self-serve signup. Zeal's team creates the partner account after a demo request, and no price is published",
          "One test key and one production key per partner account, with no scopes and no read-only key",
          "No status page found, and the changelog linked from the home page and llms.txt returns 404",
          "The API has no version in the path or a header, and the main spec has 18 operations with no summary",
          "Webhooks carry the shared secret itself in `Puzzl-Signature`, not a signature of the payload",
          "No security.txt, disclosure policy, sub-processor list or DPA found on the public site"
        ],
        "agentNotes": [
          "Use the Test API key until a person has approved live payroll. Error code 0 (403) means the account has no production access",
          "Send `companyID` on almost every call and `partnerID` on partner-level calls, in the body for POST and PATCH and the query for GET",
          "Create cheques with `approval_required: true`, run POST /preview/checks, then PATCH /employeeCheck with `approved: true`. Without the flag Zeal processes pending cheques automatically",
          "Send `x-idempotency-key` on every create so a retry within 24 hours doesn't pay twice",
          "Previews and reports are jobs. Keep the `job_id` and poll GET /preview or GET /reports, or wait for the Job Queue webhook",
          "Check dates must be bank days and submitted before 2 PM Pacific two bank days ahead, or the call fails with code 89"
        ],
        "metrics": {
          "kind": "remote",
          "measured": false
        },
        "reviewCount": 0,
        "avgRating": 0,
        "history": [
          {
            "basis": "public evidence",
            "confidence": "medium",
            "grade": "E",
            "methodology": "0.4",
            "pending": [
              "performance",
              "tasks"
            ],
            "run": "2026-10-01",
            "runLabel": "October 2026 research run",
            "score": 45.4
          }
        ],
        "editorialScores": {
          "ergonomics": 63,
          "maintenance": 61,
          "payments": 0,
          "reliability": 42,
          "schema": 68,
          "security": 34,
          "transparency": 38
        },
        "provenanceScore": 64
      },
      "connect": {
        "install": "npm i -s @zeal-api/sdk",
        "http": "curl --request GET \\\n     --url 'https://api.zeal.com/companies?partnerID=YOUR_PARTNER_ID' \\\n     --header 'Accept: application/json' \\\n     --header 'Authorization: Bearer YOUR_API_KEY'"
      },
      "letme": {
        "capability": "https://letme.dev/payroll.run",
        "tool": "https://letme.dev/zeal"
      },
      "area": "domain-data",
      "provenance": {
        "legalEntity": "Puzzl Group Inc.",
        "domain": "zeal.com",
        "domainRegistered": "1995-07-03",
        "endpointOnVendorDomain": true,
        "terms": "https://www.zeal.com/legal?tab=terms-of-service",
        "privacy": "https://www.zeal.com/legal?tab=privacy-policy",
        "statusPage": "",
        "changelog": "",
        "securityTxt": "none",
        "checked": "2026-10-08",
        "notes": [
          "The legal page names Puzzl Group Inc., a Delaware corporation, 80 Langton Street, San Francisco, CA 94103. Its privacy notice was last updated on 16 January 2026.",
          "The API answers at https://api.zeal.com and docs at docs.zeal.com (hosted on Mintlify). The help centre at support.zeal.com runs on Pylon.",
          "www.zeal.com/.well-known/security.txt and docs.zeal.com/.well-known/security.txt return 404.",
          "No status page is linked from the site, the docs or the help centre. status.zeal.com did not complete a TLS handshake on 8 October 2026.",
          "The changelog URL the site advertises, https://docs.zeal.com/changelog, returns 404, so the field is left empty.",
          "The legal page says banking services come from Bangor Savings Bank, Member FDIC.",
          "RDAP for zeal.com gives a registration date of 1995-07-03 and GoDaddy.com, LLC as registrar."
        ],
        "score": 64
      },
      "pageJsonUrl": "https://www.anchorterminal.com/tools/zeal.json",
      "live": {
        "slug": "zeal",
        "probe": {
          "target": "https://api.zeal.com",
          "method": "get",
          "lastAt": "2026-10-08T19:09:02.816720765Z",
          "lastOk": true,
          "lastStatus": 200,
          "lastMs": 608,
          "authRequired": false,
          "uptime24h": 97.62,
          "uptime30d": 97.62,
          "p50ms24h": 596,
          "p95ms24h": 681,
          "samples24h": 42,
          "samples30d": 42,
          "days": [
            {
              "date": "2026-10-08",
              "probes": 42,
              "ok": 41
            }
          ]
        },
        "versions": [
          {
            "registry": "npm",
            "name": "@zeal-api/sdk",
            "version": "0.2.1",
            "seenAt": "2026-10-08T16:35:37.1323379Z"
          },
          {
            "registry": "pypi",
            "name": "zeal-api-sdk",
            "version": "0.2.1",
            "released": "2026-07-31",
            "seenAt": "2026-10-08T16:35:39.815769205Z"
          }
        ],
        "githubStars": 0,
        "npmWeekly": 8,
        "pypiWeekly": 4,
        "securityTxt": {
          "url": "https://zeal.com/.well-known/security.txt",
          "state": "none",
          "checkedAt": "2026-10-08T15:38:30.40067532Z"
        },
        "pages": [
          {
            "url": "https://www.zeal.com/legal?tab=privacy-policy",
            "kind": "privacy",
            "status": 200,
            "checkedAt": "2026-10-08T18:31:44.751983613Z",
            "changedAt": "0001-01-01T00:00:00Z",
            "fingerprint": "ca2c8021bf60"
          },
          {
            "url": "https://www.zeal.com/legal?tab=terms-of-service",
            "kind": "terms",
            "status": 200,
            "checkedAt": "2026-10-08T18:31:46.842036275Z",
            "changedAt": "0001-01-01T00:00:00Z",
            "fingerprint": "ca2c8021bf60"
          }
        ],
        "updatedAt": "2026-10-08T19:09:02.816720765Z"
      }
    },
    "facts": [
      {
        "a": "HTTP API",
        "b": "HTTP API",
        "name": "Kind"
      },
      {
        "a": "Check Technologies, Inc.",
        "b": "Puzzl Group Inc.",
        "name": "Vendor"
      },
      {
        "a": "https://api.checkhq.com",
        "b": "https://api.zeal.com",
        "name": "Hosted endpoint"
      },
      {
        "a": "HTTP",
        "b": "HTTP",
        "name": "Transports"
      },
      {
        "a": "OAuth or key",
        "b": "API key",
        "name": "Auth"
      },
      {
        "a": "Paid",
        "b": "Paid",
        "name": "Pricing"
      },
      {
        "a": "no",
        "b": "no",
        "name": "x402"
      },
      {
        "a": "Proprietary service under Check's terms of service and partner agreement. The MCP server and CLI on GitHub are MIT",
        "b": "Proprietary service. The npm SDK declares MIT. The SDK repositories on GitHub carry no licence file",
        "name": "Licence"
      },
      {
        "a": "yes",
        "b": "no",
        "name": "Read-only variant documented"
      },
      {
        "a": "yes",
        "b": "yes",
        "name": "llms.txt"
      },
      {
        "a": "2026-10-07",
        "b": "2026-07-31",
        "name": "Last release"
      },
      {
        "a": "2021-09-03",
        "b": "2026-01-16",
        "name": "Terms last updated"
      },
      {
        "a": "2024-04-18",
        "b": "2026-01-16",
        "name": "Privacy policy last updated"
      },
      {
        "a": "not found in the text",
        "b": "not found in the text",
        "name": "Customer content may train models"
      },
      {
        "a": "yes",
        "b": "yes",
        "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": "yes",
        "name": "Terms or service can change without notice"
      },
      {
        "a": "not found in the text",
        "b": "not found in the text",
        "name": "Arbitration or class-action waiver"
      },
      {
        "a": "18 stars",
        "b": "0 stars, 8 npm/wk",
        "name": "Popularity"
      }
    ],
    "faq": [
      {
        "answer": "Check scores 67.5 (B) on agent readiness against Zeal's 45.4 (E), and leads in every scored category.",
        "question": "Which is better for AI agents, Check or Zeal?"
      },
      {
        "answer": "Check takes an API key or an OAuth sign-in. Zeal needs an API key.",
        "question": "Do Check and Zeal need an API key?"
      },
      {
        "answer": "Yes. Check has a hosted endpoint at https://api.checkhq.com and Zeal at https://api.zeal.com.",
        "question": "Can an agent call Check and Zeal without installing anything?"
      }
    ],
    "goodFor": [
      {
        "aheadOn": [
          "Reliability, 80 against 42",
          "Schema \u0026 documentation, 78 against 68",
          "Agent ergonomics, 83 against 63",
          "Security \u0026 auth, 74 against 34",
          "Payments \u0026 pricing, 5 against 0",
          "Maintenance \u0026 community, 72 against 61",
          "Transparency \u0026 trust, 62 against 51"
        ],
        "also": null,
        "goodFor": "A software platform that wants to sell US payroll inside its own product and can sign a partnership, with Check handling tax calculation, money movement and filings.",
        "slug": "check-payroll",
        "watchFor": "No public price and no self-serve signup. The documentation says to request an API key through Check's sales contact"
      },
      {
        "aheadOn": null,
        "also": null,
        "goodFor": "A US staffing platform, marketplace or workforce product that will sign a partnership and run payroll for many employers under its own brand, including daily and on-demand pay.",
        "slug": "zeal",
        "watchFor": "No self-serve signup. Zeal's team creates the partner account after a demo request, and no price is published"
      }
    ],
    "job": {
      "capability": "payroll.run",
      "name": "Payroll run"
    },
    "others": [
      {
        "json": "https://www.anchorterminal.com/compare/check-payroll-vs-gusto.json",
        "title": "Check vs Gusto",
        "url": "https://www.anchorterminal.com/compare/check-payroll-vs-gusto"
      },
      {
        "json": "https://www.anchorterminal.com/compare/check-payroll-vs-salsa.json",
        "title": "Check vs Salsa",
        "url": "https://www.anchorterminal.com/compare/check-payroll-vs-salsa"
      },
      {
        "json": "https://www.anchorterminal.com/compare/gusto-vs-zeal.json",
        "title": "Gusto vs Zeal",
        "url": "https://www.anchorterminal.com/compare/gusto-vs-zeal"
      },
      {
        "json": "https://www.anchorterminal.com/compare/salsa-vs-zeal.json",
        "title": "Salsa vs Zeal",
        "url": "https://www.anchorterminal.com/compare/salsa-vs-zeal"
      },
      {
        "json": "https://www.anchorterminal.com/compare/check-payroll-vs-finch.json",
        "title": "Check vs Finch",
        "url": "https://www.anchorterminal.com/compare/check-payroll-vs-finch"
      },
      {
        "json": "https://www.anchorterminal.com/compare/finch-vs-zeal.json",
        "title": "Finch vs Zeal",
        "url": "https://www.anchorterminal.com/compare/finch-vs-zeal"
      }
    ],
    "scores": [
      {
        "by": 38,
        "check-payroll": 80,
        "edge": "check-payroll",
        "key": "reliability",
        "name": "Reliability",
        "weight": 16,
        "zeal": 42
      },
      {
        "key": "performance",
        "name": "Performance",
        "pending": true,
        "weight": 10
      },
      {
        "by": 10,
        "check-payroll": 78,
        "edge": "check-payroll",
        "key": "schema",
        "name": "Schema \u0026 documentation",
        "weight": 13,
        "zeal": 68
      },
      {
        "by": 20,
        "check-payroll": 83,
        "edge": "check-payroll",
        "key": "ergonomics",
        "name": "Agent ergonomics",
        "weight": 13,
        "zeal": 63
      },
      {
        "by": 40,
        "check-payroll": 74,
        "edge": "check-payroll",
        "key": "security",
        "name": "Security \u0026 auth",
        "weight": 14,
        "zeal": 34
      },
      {
        "by": 5,
        "check-payroll": 5,
        "edge": "check-payroll",
        "key": "payments",
        "name": "Payments \u0026 pricing",
        "weight": 10,
        "zeal": 0
      },
      {
        "key": "tasks",
        "name": "Task success",
        "pending": true,
        "weight": 10
      },
      {
        "by": 11,
        "check-payroll": 72,
        "edge": "check-payroll",
        "key": "maintenance",
        "name": "Maintenance \u0026 community",
        "weight": 7,
        "zeal": 61
      },
      {
        "by": 11,
        "check-payroll": 62,
        "edge": "check-payroll",
        "key": "transparency",
        "name": "Transparency \u0026 trust",
        "weight": 7,
        "zeal": 51
      }
    ],
    "summary": "Check scores 67.5 (B) on agent readiness against Zeal's 45.4 (E), and leads in every scored category. Both do payroll run.",
    "verdicts": {
      "check-payroll": "Graded as embedded payroll through a partner API key, not access to an existing employer's payroll account. The API has idempotency keys on writes, a required preview before approval and queryable request logs. No price is public, a sandbox key comes through Check's sales team, and one API key carries the whole partner account.",
      "zeal": "Graded on the partner REST API at api.zeal.com, which is the only access route. Three OpenAPI specs, llms.txt, a test environment that moves no money, a preview endpoint and a per-cheque approval flag are documented. Access starts with a demo request, prices are not published, each environment has one unscoped key, and no status page or working changelog was found."
    }
  },
  "kind": "anchor.page",
  "links": {
    "api": "https://www.anchorterminal.com/api/v1/index.json",
    "html": "https://www.anchorterminal.com/compare/check-payroll-vs-zeal",
    "json": "https://www.anchorterminal.com/compare/check-payroll-vs-zeal.json",
    "llms": "https://www.anchorterminal.com/llms.txt",
    "markdown": "https://www.anchorterminal.com/compare/check-payroll-vs-zeal.md",
    "slim": "https://www.anchorterminal.com/compare/check-payroll-vs-zeal.min.md"
  },
  "markdown": "Check scores 67.5 (B) on agent readiness against Zeal's 45.4 (E), and leads in every scored category. Both do payroll run.\n\n- Check: grade B, 67.5/100, rank #193 of 629. Markdown https://www.anchorterminal.com/tools/check-payroll.md · JSON https://www.anchorterminal.com/api/v1/tools/check-payroll.json\n- Zeal: grade E, 45.4/100, rank #569 of 629. Markdown https://www.anchorterminal.com/tools/zeal.md · JSON https://www.anchorterminal.com/api/v1/tools/zeal.json\n\n## Which one, for what\n\n### Check (B)\n\nGood for: A software platform that wants to sell US payroll inside its own product and can sign a partnership, with Check handling tax calculation, money movement and filings.\n\nAhead on:\n- Reliability, 80 against 42\n- Schema \u0026 documentation, 78 against 68\n- Agent ergonomics, 83 against 63\n- Security \u0026 auth, 74 against 34\n- Payments \u0026 pricing, 5 against 0\n- Maintenance \u0026 community, 72 against 61\n- Transparency \u0026 trust, 62 against 51\n\nWatch for: No public price and no self-serve signup. The documentation says to request an API key through Check's sales contact\n\n### Zeal (E)\n\nGood for: A US staffing platform, marketplace or workforce product that will sign a partnership and run payroll for many employers under its own brand, including daily and on-demand pay.\n\nWatch for: No self-serve signup. Zeal's team creates the partner account after a demo request, and no price is published\n\n\n## Score by category\n\n| Category | Weight | Check | Zeal | Edge |\n| --- | --- | --- | --- | --- |\n| Reliability | 16% (20 this run) | 80 | 42 | Check +38 |\n| Performance | 10%, pending | pending | pending | not scored in this run |\n| Schema \u0026 documentation | 13% (16.2 this run) | 78 | 68 | Check +10 |\n| Agent ergonomics | 13% (16.2 this run) | 83 | 63 | Check +20 |\n| Security \u0026 auth | 14% (17.5 this run) | 74 | 34 | Check +40 |\n| Payments \u0026 pricing | 10% (12.5 this run) | 5 | 0 | Check +5 |\n| Task success | 10%, pending | pending | pending | not scored in this run |\n| Maintenance \u0026 community | 7% (8.8 this run) | 72 | 61 | Check +11 |\n| Transparency \u0026 trust | 7% (8.8 this run) | 62 | 51 | Check +11 |\n| Negative events | ≤15 | 0 | 0 | |\n| **Total** | | **67.5 · B** | **45.4 · E** | |\n\n## Facts side by side\n\n| Fact | Check | Zeal |\n| --- | --- | --- |\n| Kind | HTTP API | HTTP API |\n| Vendor | Check Technologies, Inc. | Puzzl Group Inc. |\n| Hosted endpoint | `https://api.checkhq.com` | `https://api.zeal.com` |\n| Transports | HTTP | HTTP |\n| Auth | OAuth or key | API key |\n| Pricing | Paid | Paid |\n| x402 | no | no |\n| Licence | Proprietary service under Check's terms of service and partner agreement. The MCP server and CLI on GitHub are MIT | Proprietary service. The npm SDK declares MIT. The SDK repositories on GitHub carry no licence file |\n| Read-only variant documented | yes | no |\n| llms.txt | yes | yes |\n| Last release | 2026-10-07 | 2026-07-31 |\n| Terms last updated | 2021-09-03 | 2026-01-16 |\n| Privacy policy last updated | 2024-04-18 | 2026-01-16 |\n| Customer content may train models | not found in the text | not found in the text |\n| Terms restrict automated access | yes | yes |\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 | yes |\n| Arbitration or class-action waiver | not found in the text | not found in the text |\n| Popularity | 18 stars | 0 stars, 8 npm/wk |\n\n## Verdicts\n\n**Check.** Graded as embedded payroll through a partner API key, not access to an existing employer's payroll account. The API has idempotency keys on writes, a required preview before approval and queryable request logs. No price is public, a sandbox key comes through Check's sales team, and one API key carries the whole partner account.\n\n**Zeal.** Graded on the partner REST API at api.zeal.com, which is the only access route. Three OpenAPI specs, llms.txt, a test environment that moves no money, a preview endpoint and a per-cheque approval flag are documented. Access starts with a demo request, prices are not published, each environment has one unscoped key, and no status page or working changelog was found.\n\n## Before you call either\n\n### Check\n\n1. Use https://sandbox.checkhq.com with the sandbox key and https://api.checkhq.com with the production key. A key is not valid across environments\n2. Preview a payroll before approving it, then pass `preview_started_at` to POST /payrolls/{id}/approve so a stale preview fails with 409\n3. Send `X-Idempotency-Key` on every write. Keys expire after 24 hours, so list the resource before retrying later than that\n4. On 429 wait for `Retry-After`. The limit is 10 requests a second in sandbox and for partners paying fewer than 1,000 payees a month, with 100 concurrent requests\n5. Connect the MCP server with `?read_only=true` or `X-MCP-Readonly: true` unless writes are intended. In production, approving a payroll moves money\n\n### Zeal\n\n1. Use the Test API key until a person has approved live payroll. Error code 0 (403) means the account has no production access\n2. Send `companyID` on almost every call and `partnerID` on partner-level calls, in the body for POST and PATCH and the query for GET\n3. Create cheques with `approval_required: true`, run POST /preview/checks, then PATCH /employeeCheck with `approved: true`. Without the flag Zeal processes pending cheques automatically\n4. Send `x-idempotency-key` on every create so a retry within 24 hours doesn't pay twice\n5. Previews and reports are jobs. Keep the `job_id` and poll GET /preview or GET /reports, or wait for the Job Queue webhook\n6. Check dates must be bank days and submitted before 2 PM Pacific two bank days ahead, or the call fails with code 89\n\n## Questions\n\n### Which is better for AI agents, Check or Zeal?\n\nCheck scores 67.5 (B) on agent readiness against Zeal's 45.4 (E), and leads in every scored category.\n\n### Do Check and Zeal need an API key?\n\nCheck takes an API key or an OAuth sign-in. Zeal needs an API key.\n\n### Can an agent call Check and Zeal without installing anything?\n\nYes. Check has a hosted endpoint at https://api.checkhq.com and Zeal at https://api.zeal.com.\n\n\n## For agents\n\n- This comparison as JSON: https://www.anchorterminal.com/compare/check-payroll-vs-zeal.json, and with the fewest tokens: https://www.anchorterminal.com/compare/check-payroll-vs-zeal.min.md\n- Over MCP at https://www.anchorterminal.com/mcp (no key): `compare_tools {\"a\": \"check-payroll\", \"b\": \"zeal\"}`. From a terminal: `anchor compare check-payroll zeal`\n- Each listing in full: https://www.anchorterminal.com/api/v1/tools/check-payroll.json and https://www.anchorterminal.com/api/v1/tools/zeal.json\n\n## Other comparisons with Check or Zeal\n\n- [Check vs Gusto](https://www.anchorterminal.com/compare/check-payroll-vs-gusto.md)\n- [Check vs Salsa](https://www.anchorterminal.com/compare/check-payroll-vs-salsa.md)\n- [Gusto vs Zeal](https://www.anchorterminal.com/compare/gusto-vs-zeal.md)\n- [Salsa vs Zeal](https://www.anchorterminal.com/compare/salsa-vs-zeal.md)\n- [Check vs Finch](https://www.anchorterminal.com/compare/check-payroll-vs-finch.md)\n- [Finch vs Zeal](https://www.anchorterminal.com/compare/finch-vs-zeal.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": "Check vs Zeal",
        "url": ""
      }
    ],
    "description": "Check scores 67.5 (B) on agent readiness against Zeal's 45.4 (E), and leads in every scored category. Both do payroll run. Category scores, facts, verdicts and agent notes side by side.",
    "facts": [
      "Check B 67.5",
      "Zeal E 45.4",
      "scores"
    ],
    "h1": "Check vs Zeal",
    "image": "https://www.anchorterminal.com/assets/og/compare-check-payroll-vs-zeal.png",
    "path": "/compare/check-payroll-vs-zeal",
    "published": "2026-10-01",
    "section": "tools",
    "title": "Check vs Zeal for AI agents, B 67.5 vs E 45.4 | Anchor Terminal",
    "toc": null,
    "updated": "2026-10-08",
    "url": "https://www.anchorterminal.com/compare/check-payroll-vs-zeal"
  },
  "tokens": {
    "markdown": 1950,
    "slim": 630
  },
  "version": 1
}
