{
  "data": {
    "a": {
      "slug": "factorial",
      "name": "Factorial",
      "vendor": "Everyday Software, S.L.",
      "vendorUrl": "https://factorial.com",
      "kind": "http-api",
      "category": "hr",
      "summary": "Factorial is an HR platform from Barcelona for employee records, time off, attendance, payroll data, recruiting and expenses. Agents reach it through a versioned REST API with API keys or OAuth 2.0, webhooks and a hosted MCP server.",
      "url": "https://www.anchorterminal.com/tools/factorial",
      "markdownUrl": "https://www.anchorterminal.com/tools/factorial.md",
      "slimMarkdownUrl": "https://www.anchorterminal.com/tools/factorial.min.md",
      "jsonUrl": "https://www.anchorterminal.com/api/v1/tools/factorial.json",
      "repo": "https://github.com/factorialco/factorial-api-sdks",
      "license": "Proprietary service under Factorial's terms and conditions. The TypeScript and Python SDKs are MIT",
      "transports": [
        "http"
      ],
      "remoteUrl": "https://api.factorialhr.com",
      "packages": [
        {
          "registry": "npm",
          "name": "@factorialco/api-client"
        },
        {
          "registry": "pypi",
          "name": "factorial-api-client"
        }
      ],
      "auth": "mixed",
      "authNotes": "A company administrator creates credentials in Factorial's settings, with no registration or approval queue for a company's own use. An API key goes in `x-api-key`, grants every scope and does not expire. OAuth 2.0 apps use the authorisation code grant through Factorial ID (PKCE for public clients), choose from 33 scopes and receive 1-hour company or user tokens with a refresh token. A user token is limited by that employee's permission group. Integrations for other companies must use OAuth, with scopes agreed with Factorial. The MCP server uses OAuth with dynamic client registration and runs as the signed-in employee.",
      "pricing": "paid",
      "pricingNotes": "The pricing page says Factorial starts at $8 per user per month and asks for a tailored quote for everything else. The terms describe a free trial of at most 15 days granted at Factorial's discretion, and the sign-up page is drawn by script, so its conditions were not read. The demo API environment is provisioned by an account manager, so an agent cannot start without a customer account. Factorial One requests through the MCP server consume plan credits (https://factorial.com/pricing, checked 2026-10-08).",
      "priceSummary": "$8 / seat-mo",
      "where": "hosted",
      "x402": {
        "level": "no",
        "evidence": "No x402, MPP or L402 in the developer docs, the OpenAPI definition, the terms or the pricing page (checked 2026-10-08).",
        "endpoints": []
      },
      "toolCount": null,
      "popularity": {
        "githubStars": 7,
        "npmWeekly": 1367,
        "pypiWeekly": 1075,
        "asOf": "2026-10-08"
      },
      "docsUrl": "https://apidoc.factorialhr.com",
      "llmsTxt": "https://apidoc.factorialhr.com/llms.txt",
      "openapi": "https://api.factorialhr.com/oas/",
      "capabilities": [
        "hr.employees",
        "hr.time-off",
        "hr.org",
        "hr.documents",
        "recruiting.applications",
        "recruiting.jobs",
        "recruiting.candidates",
        "spend.expenses",
        "tasks.create"
      ],
      "tags": [
        "hosted",
        "paid",
        "sales-led",
        "api-key",
        "oauth",
        "mcp",
        "openapi",
        "llms-txt",
        "webhooks",
        "sandbox",
        "typescript",
        "python",
        "status-page",
        "sla",
        "bug-bounty",
        "soc2",
        "eu"
      ],
      "lastRelease": "2026-10-05",
      "graded": true,
      "anchor": {
        "graded": true,
        "score": 66.3,
        "grade": "B",
        "agentReady": false,
        "rank": 271,
        "ranked": true,
        "rankOf": 842,
        "categoryRank": 3,
        "methodology": "0.4",
        "run": "2026-10-01",
        "scores": {
          "ergonomics": 58,
          "maintenance": 84,
          "payments": 10,
          "reliability": 88,
          "schema": 77,
          "security": 65,
          "transparency": 78
        },
        "pending": [
          "performance",
          "tasks"
        ],
        "assessment": {
          "confidence": "medium",
          "date": "2026-10-08"
        },
        "negative": 0,
        "verdict": "A public OpenAPI 3.1 definition covers 615 operations, including leave approval and employee termination, and OAuth apps can be limited to 33 scopes. API keys always grant every scope and never expire. No idempotency keys exist, and a request to an expired API version is answered in an older schema with no error.",
        "bestFor": "An agent working for a company that already runs Factorial and needs employee records, leave requests with approval, attendance clock-ins, recruiting or expenses through one API.",
        "strengths": [
          "OpenAPI 3.1.0 definition at `https://api.factorialhr.com/oas/` with 615 operations and 137 webhook events, plus `llms.txt` and a Markdown twin of every docs page",
          "OAuth 2.0 with 33 scopes, PKCE for public clients, 1-hour access tokens and a revoke endpoint. User tokens are bound to an employee's permission group",
          "Time off can be requested, approved and rejected through the API (`/timeoff/leaves/approve` and `/timeoff/leaves/reject`)",
          "Dated API versions ship each quarter and are supported for one year, with release notes that mark removed endpoints and fields",
          "A 99.9 per cent monthly uptime commitment with a 5 per cent service credit is published in the trust centre, and the status page shows no incident since 1 June 2026"
        ],
        "weaknesses": [
          "An API key grants every scope, cannot be narrowed and does not expire",
          "No idempotency keys. The docs say the API does not deduplicate requests, so a blind retry can create a duplicate record",
          "A request to an unsupported API version is served in the oldest supported schema with no error",
          "The only published rate limit is 200 `POST` requests a minute, and no `Retry-After` header is documented",
          "The terms prohibit benchmarking, competitive evaluation and monitoring of availability, and pricing beyond a $8 starting figure is by quote"
        ],
        "agentNotes": [
          "Send an API key in `x-api-key` and an OAuth token in `Authorization: Bearer`. The key is JWT-formatted but is rejected as a bearer token",
          "Pin the version in the path, such as `/api/2026-10-01/resources/...`, and migrate within a year. Expired versions answer in an older schema without an error",
          "Treat a 200 with an empty body as a credential from the other environment. Production is `api.factorialhr.com` and demo is `api.eu2.demo.factorial.dev`",
          "Page with `limit=100` and pass `meta.end_cursor` as `after_id`. A larger limit is capped at 100",
          "Check whether a record exists before retrying a create. Retry only 429 and 5xx with backoff, and branch on `code` for 422 because messages are localised"
        ],
        "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": 66.3
          }
        ],
        "editorialScores": {
          "ergonomics": 58,
          "maintenance": 84,
          "payments": 10,
          "reliability": 88,
          "schema": 77,
          "security": 65,
          "transparency": 73
        },
        "provenanceScore": 82
      },
      "connect": {
        "install": "npm install @factorialco/api-client",
        "http": "curl --request GET \\\n     --url 'https://api.factorialhr.com/api/2026-10-01/resources/api_public/credentials' \\\n     --header 'accept: application/json' \\\n     --header 'x-api-key: \u003capi_key\u003e'"
      },
      "letme": {
        "capability": "https://letme.dev/hr.employees",
        "tool": "https://letme.dev/factorial"
      },
      "area": "business",
      "unitPrices": [
        {
          "item": "Starting price",
          "unit": "seat-month",
          "usd": 8,
          "note": "Headline figure on the pricing page. Plans are quoted by modules and company size"
        }
      ],
      "provenance": {
        "legalEntity": "Everyday Software, S.L.",
        "domain": "factorialhr.com",
        "domainRegistered": "2016-11-10",
        "endpointOnVendorDomain": true,
        "terms": "https://factorial.com/terms-of-use",
        "privacy": "https://factorial.com/privacy",
        "statusPage": "https://status.factorialhr.com",
        "changelog": "https://apidoc.factorialhr.com/changelog",
        "securityTxt": "none",
        "checked": "2026-10-08",
        "notes": [
          "The terms and conditions of contract of the Factorial platform (last amended 12 December 2025) name EVERYDAY SOFTWARE, S.L., Carrer de Llacuna 56, Building C, 08005 Barcelona, tax number B-66854530, and its subsidiaries. They govern the platform and mention the public API in clause 13.8. No separate API terms were found.",
          "The privacy policy (last update January 2026) names the same company as controller and describes its role as processor for data that customers' employees enter on the platform. It refers to a Data Processing Agreement that we did not read.",
          "The API answers at api.factorialhr.com, OAuth at id.factorialhr.com and the MCP server at mcp.factorialhr.com. The marketing site factorialhr.com redirects to factorial.com.",
          "RDAP gives 2016-11-10 as the registration date of factorialhr.com and 1998-04-24 for factorial.com.",
          "factorialhr.com/.well-known/security.txt and factorial.com/.well-known/security.txt both returned 404. The trust centre has a vulnerability report form and names a HackerOne programme.",
          "The SLA linked from clause 11.2 of the terms resolves to the trust centre at trust.factorial.co."
        ],
        "score": 82
      },
      "pageJsonUrl": "https://www.anchorterminal.com/tools/factorial.json",
      "live": {
        "slug": "factorial",
        "probe": {
          "target": "https://api.factorialhr.com",
          "method": "get",
          "lastAt": "2026-10-09T10:42:42.921648228Z",
          "lastOk": true,
          "lastStatus": 404,
          "lastMs": 100,
          "authRequired": false,
          "uptime24h": 100,
          "uptime30d": 100,
          "p50ms24h": 79,
          "p95ms24h": 165,
          "samples24h": 164,
          "samples30d": 164,
          "days": [
            {
              "date": "2026-10-08",
              "probes": 50,
              "ok": 50
            },
            {
              "date": "2026-10-09",
              "probes": 114,
              "ok": 114
            }
          ]
        },
        "vendorStatus": {
          "page": "https://status.factorialhr.com",
          "indicator": "none",
          "summary": "All Systems Operational",
          "checkedAt": "2026-10-09T10:41:39.072530065Z"
        },
        "updatedAt": "2026-10-09T10:42:42.921648228Z"
      }
    },
    "answer": "Remote scores 70.7 (BB) on agent readiness against Factorial's 66.3 (B), and leads in 4 of 7 scored categories. Factorial leads on maintenance \u0026 community and transparency \u0026 trust.",
    "b": {
      "slug": "remote",
      "name": "Remote",
      "vendor": "Remote Technology, Inc.",
      "vendorUrl": "https://remote.com",
      "kind": "http-api",
      "category": "hr",
      "summary": "Remote is a global employment platform covering employer of record, payroll, contractors and HR records. Its REST API, hosted MCP server and CLI let an agent read and update employments, time off, timesheets, expenses, onboarding and documents.",
      "url": "https://www.anchorterminal.com/tools/remote",
      "markdownUrl": "https://www.anchorterminal.com/tools/remote.md",
      "slimMarkdownUrl": "https://www.anchorterminal.com/tools/remote.min.md",
      "jsonUrl": "https://www.anchorterminal.com/api/v1/tools/remote.json",
      "repo": "https://github.com/remoteoss/remote-for-ai",
      "license": "Proprietary service under Remote's terms of use. The remote-for-ai plugin and the Remote CLI repository on GitHub are MIT",
      "transports": [
        "http",
        "streamable-http"
      ],
      "remoteUrl": "https://gateway.remote.com",
      "packages": [
        {
          "registry": "npm",
          "name": "@remoteoss/remote-flows"
        }
      ],
      "auth": "mixed",
      "authNotes": "Self-serve for an existing Remote customer. A company admin or owner generates a Customer API token under Company Settings, Integrations and APIs, choosing read only, full access or custom scopes, after accepting the Remote API Terms of Use. Tokens are prefixed `ra_live_` or `ra_test_`. Partners building for many companies use OAuth 2.0, with credentials and scopes set up by Remote's partnerships team. The MCP server and the CLI sign in through a browser with OAuth 2.0 and PKCE, and MCP clients register dynamically. Scopes follow `resource:read` and `resource:write`.",
      "pricing": "paid",
      "pricingNotes": "No separate API charge was found. Access comes with a Remote account, priced per person a month, from $29 per employee for Payroll or per contractor for Contractor Management to $699 per employee for employer of record. Each plan's button books a demo, and no free production plan was found. A seeded sandbox company and API token are issued after an email verification and last 14 days, with no card (https://remote.com/pricing, https://developer.remote.com/docs/sandbox-quickstart, checked 2026-10-08).",
      "priceSummary": "$29 / seat-mo",
      "where": "hosted",
      "x402": {
        "level": "no",
        "evidence": "No x402, MPP or L402 in the developer docs, the OpenAPI document or the pricing page (checked 2026-10-08).",
        "endpoints": []
      },
      "toolCount": null,
      "popularity": {
        "githubStars": null,
        "npmWeekly": 1775,
        "pypiWeekly": null,
        "asOf": "2026-10-08"
      },
      "docsUrl": "https://developer.remote.com",
      "llmsTxt": "https://developer.remote.com/llms.txt",
      "openapi": "https://gateway.remote.com/v1/docs/openapi.json",
      "capabilities": [
        "hr.employees",
        "hr.time-off",
        "hr.onboarding",
        "hr.org",
        "hr.documents"
      ],
      "tags": [
        "hosted",
        "official",
        "mcp",
        "closed-source",
        "oauth",
        "openapi",
        "llms-txt",
        "webhooks",
        "sandbox",
        "scim",
        "cli",
        "status-page",
        "soc2",
        "sales-led"
      ],
      "lastRelease": "2026-10-08",
      "graded": true,
      "anchor": {
        "graded": true,
        "score": 70.7,
        "grade": "BB",
        "agentReady": true,
        "rank": 142,
        "ranked": true,
        "rankOf": 842,
        "categoryRank": 1,
        "methodology": "0.4",
        "run": "2026-10-01",
        "scores": {
          "ergonomics": 57,
          "maintenance": 72,
          "payments": 35,
          "reliability": 96,
          "schema": 78,
          "security": 74,
          "transparency": 68
        },
        "pending": [
          "performance",
          "tasks"
        ],
        "assessment": {
          "confidence": "medium",
          "date": "2026-10-08"
        },
        "negative": 0,
        "verdict": "The REST API has 303 operations in a public OpenAPI document, 78 OAuth scopes split into read and write, a sandbox issued by email with no card, and a hosted MCP server using OAuth with PKCE. The REST changelog link redirects to a login page, and writes have no idempotency key.",
        "bestFor": "A company that employs people through Remote (EOR, payroll, contractors or its HRIS) and wants an agent to read employments, file and review time off, track onboarding, and read payslips and documents.",
        "strengths": [
          "OpenAPI 3.0 document with 303 operations and 116 webhook events, plus llms.txt and a Markdown copy of every docs page",
          "78 scopes in `resource:action` form, with a read-only preset for customer tokens and a 403 body that names the scopes that would have worked",
          "Seeded sandbox company and `ra_test_` token issued after an email verification, available for 14 days, with no card",
          "Hosted MCP server with OAuth 2.0, PKCE and dynamic client registration. Its writes are employee self-service and follow the product's approval flow",
          "Terms warrant 99.5 per cent monthly uptime, and status.remote.com lists no API or platform incident from August to October 2026"
        ],
        "weaknesses": [
          "The REST API changelog link in the docs redirects to a ReadMe dashboard login, so no public dated record of API changes was read",
          "No idempotency key on writes. The vendor's own skill notes list creates for employments, time off, expenses and webhooks as unsafe to retry",
          "A partner authorisation request that omits `scope` is issued `all:write`, per the scopes page",
          "No general server SDK. The Remote Flows SDK is React, and the CLI ships as binaries for macOS on Apple Silicon and Linux x86_64 only",
          "The sub-processor list sits behind a customer login, and remote.com has no security.txt"
        ],
        "agentNotes": [
          "Match the token prefix to the host. `ra_test_` works only on https://gateway.remote-sandbox.com and `ra_live_` only on https://gateway.remote.com",
          "Stay under 300 requests a minute per company for customer tokens, shared by every token, and read `x-ratelimit-remaining` and `x-ratelimit-reset` (milliseconds)",
          "Check for an existing record before retrying a create, or set `external_id` on employments and treat a 422 for a duplicate as success",
          "Fetch the country form schema (`GET /v1/countries/{country_code}/{form}`) before writing employment data. Country codes are three-letter ISO",
          "Use the REST API for unattended work. The MCP server needs a browser sign-in and its write tools cover employee self-service only"
        ],
        "metrics": {
          "kind": "remote",
          "measured": false
        },
        "reviewCount": 0,
        "avgRating": 0,
        "history": [
          {
            "basis": "public evidence",
            "confidence": "medium",
            "grade": "BB",
            "methodology": "0.4",
            "pending": [
              "performance",
              "tasks"
            ],
            "run": "2026-10-01",
            "runLabel": "October 2026 research run",
            "score": 70.7
          }
        ],
        "editorialScores": {
          "ergonomics": 57,
          "maintenance": 72,
          "payments": 35,
          "reliability": 96,
          "schema": 78,
          "security": 74,
          "transparency": 51
        },
        "provenanceScore": 85
      },
      "connect": {
        "install": "curl -fsSL https://raw.githubusercontent.com/remoteoss/remote-cli/main/install.sh | sh",
        "http": "curl https://gateway.remote-sandbox.com/v1/employments \\\n  -H \"Authorization: Bearer $REMOTE_API_TOKEN\"",
        "claudeCode": "claude mcp add --scope user --transport http remote-com-mcp https://mcp.remote.com/mcp",
        "config": {
          "mcpServers": {
            "remote-com-mcp": {
              "type": "http",
              "url": "https://mcp.remote.com/mcp"
            }
          }
        }
      },
      "letme": {
        "capability": "https://letme.dev/hr.employees",
        "tool": "https://letme.dev/remote"
      },
      "area": "business",
      "unitPrices": [
        {
          "item": "Payroll",
          "unit": "seat-month",
          "usd": 29,
          "note": "per employee"
        },
        {
          "item": "Contractor Management",
          "unit": "seat-month",
          "usd": 29,
          "note": "per contractor"
        },
        {
          "item": "Contractor Management Plus",
          "unit": "seat-month",
          "usd": 99,
          "note": "per contractor"
        },
        {
          "item": "PEO",
          "unit": "seat-month",
          "usd": 99,
          "note": "from, per employee, United States"
        },
        {
          "item": "Contractor of Record",
          "unit": "seat-month",
          "usd": 325,
          "note": "from, per contractor"
        },
        {
          "item": "Employer of Record",
          "unit": "seat-month",
          "usd": 699,
          "note": "per employee"
        }
      ],
      "provenance": {
        "legalEntity": "Remote Europe Holding B.V.",
        "domain": "remote.com",
        "domainRegistered": "1992-06-24",
        "endpointOnVendorDomain": true,
        "terms": "https://remote.com/policy/terms-of-use",
        "privacy": "https://remote.com/policy/privacy-policy",
        "statusPage": "https://status.remote.com",
        "changelog": "https://developer.remote.com/docs/changelogs",
        "securityTxt": "none",
        "checked": "2026-10-08",
        "notes": [
          "The terms of use (last updated 3 August 2026) are an agreement with Remote Europe Holding B.V., Kraijenhoffstraat 137A, 1018 RG Amsterdam. The privacy policy names Remote Technology, Inc. as the group's holding company, and the site's copyright line and the MIT licences on GitHub carry that name.",
          "The terms of use cover the platform and products, with sections on use through the API and on AI clients and the MCP server. The docs also name a Remote API Terms of Use at remote.com/api-terms-of-use, which draws a PDF by script and was not read.",
          "The privacy policy (last updated 3 August 2026) covers remote.com, employ.remote.com, the mobile app and the services where Remote is the controller. Customer data processed on a client's behalf falls under the Data Processing Addendum at remote.com/policy/data-protection.",
          "The API answers on gateway.remote.com and the MCP server on mcp.remote.com. The sandbox uses a second domain, remote-sandbox.com. OAuth for MCP is issued by api.employ.remote.com.",
          "https://remote.com/.well-known/security.txt returns 404. The security page gives a contact email address.",
          "The changelog link is the docs page that lists where each component's changelog lives. The REST API changelog it names redirected to a ReadMe dashboard login on 8 October 2026.",
          "RDAP for remote.com gives a registration date of 1992-06-24."
        ],
        "score": 85
      },
      "pageJsonUrl": "https://www.anchorterminal.com/tools/remote.json",
      "live": {
        "slug": "remote",
        "probe": {
          "target": "https://gateway.remote.com",
          "method": "get",
          "lastAt": "2026-10-09T10:42:54.392868788Z",
          "lastOk": true,
          "lastStatus": 404,
          "lastMs": 79,
          "authRequired": false,
          "uptime24h": 100,
          "uptime30d": 100,
          "p50ms24h": 66,
          "p95ms24h": 98,
          "samples24h": 33,
          "samples30d": 33,
          "days": [
            {
              "date": "2026-10-09",
              "probes": 33,
              "ok": 33
            }
          ]
        },
        "vendorStatus": {
          "page": "https://status.remote.com",
          "indicator": "unknown",
          "summary": "no machine-readable status found",
          "checkedAt": "2026-10-09T07:58:28.834580334Z"
        },
        "updatedAt": "2026-10-09T10:42:54.392868788Z"
      }
    },
    "facts": [
      {
        "a": "HTTP API",
        "b": "HTTP API",
        "name": "Kind"
      },
      {
        "a": "Everyday Software, S.L.",
        "b": "Remote Technology, Inc.",
        "name": "Vendor"
      },
      {
        "a": "https://api.factorialhr.com",
        "b": "https://gateway.remote.com",
        "name": "Hosted endpoint"
      },
      {
        "a": "HTTP",
        "b": "HTTP, Streamable HTTP",
        "name": "Transports"
      },
      {
        "a": "OAuth or key",
        "b": "OAuth or key",
        "name": "Auth"
      },
      {
        "a": "Paid",
        "b": "Paid",
        "name": "Pricing"
      },
      {
        "a": "no",
        "b": "no",
        "name": "x402"
      },
      {
        "a": "Proprietary service under Factorial's terms and conditions. The TypeScript and Python SDKs are MIT",
        "b": "Proprietary service under Remote's terms of use. The remote-for-ai plugin and the Remote CLI repository on GitHub are MIT",
        "name": "Licence"
      },
      {
        "a": "no",
        "b": "yes",
        "name": "Read-only variant documented"
      },
      {
        "a": "yes",
        "b": "yes",
        "name": "llms.txt"
      },
      {
        "a": "2026-10-05",
        "b": "2026-10-08",
        "name": "Last release"
      },
      {
        "a": "no date given",
        "b": "2026-08-03",
        "name": "Terms last updated"
      },
      {
        "a": "2026-01-01",
        "b": "2026-08-03",
        "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": "yes",
        "name": "Terms restrict automated access"
      },
      {
        "a": "yes",
        "b": "yes",
        "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": "7 stars, 1.4k npm/wk, 1.1k PyPI/wk",
        "b": "1.8k npm/wk",
        "name": "Popularity"
      }
    ],
    "faq": [
      {
        "answer": "Remote scores 70.7 (BB) on agent readiness against Factorial's 66.3 (B), and leads in 4 of 7 scored categories. Factorial leads on maintenance \u0026 community and transparency \u0026 trust.",
        "question": "Which is better for AI agents, Factorial or Remote?"
      },
      {
        "answer": "Both take an API key or an OAuth sign-in.",
        "question": "Do Factorial and Remote need an API key?"
      },
      {
        "answer": "Yes. Factorial has a hosted endpoint at https://api.factorialhr.com and Remote at https://gateway.remote.com.",
        "question": "Can an agent call Factorial and Remote without installing anything?"
      }
    ],
    "goodFor": [
      {
        "aheadOn": [
          "Maintenance \u0026 community, 84 against 72",
          "Transparency \u0026 trust, 78 against 68"
        ],
        "also": null,
        "goodFor": "An agent working for a company that already runs Factorial and needs employee records, leave requests with approval, attendance clock-ins, recruiting or expenses through one API.",
        "slug": "factorial",
        "watchFor": "An API key grants every scope, cannot be narrowed and does not expire"
      },
      {
        "aheadOn": [
          "Reliability, 96 against 88",
          "Security \u0026 auth, 74 against 65",
          "Payments \u0026 pricing, 35 against 10"
        ],
        "also": [
          "Agent-ready, a grade of BB or better"
        ],
        "goodFor": "A company that employs people through Remote (EOR, payroll, contractors or its HRIS) and wants an agent to read employments, file and review time off, track onboarding, and read payslips and documents.",
        "slug": "remote",
        "watchFor": "The REST API changelog link in the docs redirects to a ReadMe dashboard login, so no public dated record of API changes was read"
      }
    ],
    "job": {
      "capability": "hr.employees",
      "name": "Hr employees"
    },
    "others": [
      {
        "json": "https://www.anchorterminal.com/compare/bamboohr-vs-factorial.json",
        "title": "BambooHR vs Factorial",
        "url": "https://www.anchorterminal.com/compare/bamboohr-vs-factorial"
      },
      {
        "json": "https://www.anchorterminal.com/compare/bamboohr-vs-remote.json",
        "title": "BambooHR vs Remote",
        "url": "https://www.anchorterminal.com/compare/bamboohr-vs-remote"
      },
      {
        "json": "https://www.anchorterminal.com/compare/deel-vs-factorial.json",
        "title": "Deel vs Factorial",
        "url": "https://www.anchorterminal.com/compare/deel-vs-factorial"
      },
      {
        "json": "https://www.anchorterminal.com/compare/deel-vs-remote.json",
        "title": "Deel vs Remote",
        "url": "https://www.anchorterminal.com/compare/deel-vs-remote"
      },
      {
        "json": "https://www.anchorterminal.com/compare/factorial-vs-hibob.json",
        "title": "Factorial vs HiBob",
        "url": "https://www.anchorterminal.com/compare/factorial-vs-hibob"
      },
      {
        "json": "https://www.anchorterminal.com/compare/factorial-vs-humaans.json",
        "title": "Factorial vs Humaans",
        "url": "https://www.anchorterminal.com/compare/factorial-vs-humaans"
      },
      {
        "json": "https://www.anchorterminal.com/compare/factorial-vs-rippling.json",
        "title": "Factorial vs Rippling",
        "url": "https://www.anchorterminal.com/compare/factorial-vs-rippling"
      },
      {
        "json": "https://www.anchorterminal.com/compare/factorial-vs-zoho-people.json",
        "title": "Factorial vs Zoho People",
        "url": "https://www.anchorterminal.com/compare/factorial-vs-zoho-people"
      },
      {
        "json": "https://www.anchorterminal.com/compare/hibob-vs-remote.json",
        "title": "HiBob vs Remote",
        "url": "https://www.anchorterminal.com/compare/hibob-vs-remote"
      },
      {
        "json": "https://www.anchorterminal.com/compare/humaans-vs-remote.json",
        "title": "Humaans vs Remote",
        "url": "https://www.anchorterminal.com/compare/humaans-vs-remote"
      },
      {
        "json": "https://www.anchorterminal.com/compare/remote-vs-rippling.json",
        "title": "Remote vs Rippling",
        "url": "https://www.anchorterminal.com/compare/remote-vs-rippling"
      },
      {
        "json": "https://www.anchorterminal.com/compare/remote-vs-zoho-people.json",
        "title": "Remote vs Zoho People",
        "url": "https://www.anchorterminal.com/compare/remote-vs-zoho-people"
      }
    ],
    "scores": [
      {
        "by": 8,
        "edge": "remote",
        "factorial": 88,
        "key": "reliability",
        "name": "Reliability",
        "remote": 96,
        "weight": 16
      },
      {
        "key": "performance",
        "name": "Performance",
        "pending": true,
        "weight": 10
      },
      {
        "by": 1,
        "edge": "remote",
        "factorial": 77,
        "key": "schema",
        "name": "Schema \u0026 documentation",
        "remote": 78,
        "weight": 13
      },
      {
        "by": 1,
        "edge": "factorial",
        "factorial": 58,
        "key": "ergonomics",
        "name": "Agent ergonomics",
        "remote": 57,
        "weight": 13
      },
      {
        "by": 9,
        "edge": "remote",
        "factorial": 65,
        "key": "security",
        "name": "Security \u0026 auth",
        "remote": 74,
        "weight": 14
      },
      {
        "by": 25,
        "edge": "remote",
        "factorial": 10,
        "key": "payments",
        "name": "Payments \u0026 pricing",
        "remote": 35,
        "weight": 10
      },
      {
        "key": "tasks",
        "name": "Task success",
        "pending": true,
        "weight": 10
      },
      {
        "by": 12,
        "edge": "factorial",
        "factorial": 84,
        "key": "maintenance",
        "name": "Maintenance \u0026 community",
        "remote": 72,
        "weight": 7
      },
      {
        "by": 10,
        "edge": "factorial",
        "factorial": 78,
        "key": "transparency",
        "name": "Transparency \u0026 trust",
        "remote": 68,
        "weight": 7
      }
    ],
    "summary": "Remote scores 70.7 (BB) on agent readiness against Factorial's 66.3 (B), and leads in 4 of 7 scored categories. Factorial leads on maintenance \u0026 community and transparency \u0026 trust. Both do hr employees.",
    "verdicts": {
      "factorial": "A public OpenAPI 3.1 definition covers 615 operations, including leave approval and employee termination, and OAuth apps can be limited to 33 scopes. API keys always grant every scope and never expire. No idempotency keys exist, and a request to an expired API version is answered in an older schema with no error.",
      "remote": "The REST API has 303 operations in a public OpenAPI document, 78 OAuth scopes split into read and write, a sandbox issued by email with no card, and a hosted MCP server using OAuth with PKCE. The REST changelog link redirects to a login page, and writes have no idempotency key."
    }
  },
  "kind": "anchor.page",
  "links": {
    "api": "https://www.anchorterminal.com/api/v1/index.json",
    "html": "https://www.anchorterminal.com/compare/factorial-vs-remote",
    "json": "https://www.anchorterminal.com/compare/factorial-vs-remote.json",
    "llms": "https://www.anchorterminal.com/llms.txt",
    "markdown": "https://www.anchorterminal.com/compare/factorial-vs-remote.md",
    "slim": "https://www.anchorterminal.com/compare/factorial-vs-remote.min.md"
  },
  "markdown": "Remote scores 70.7 (BB) on agent readiness against Factorial's 66.3 (B), and leads in 4 of 7 scored categories. Factorial leads on maintenance \u0026 community and transparency \u0026 trust. Both do hr employees.\n\n- Factorial: grade B, 66.3/100, rank #271 of 842. Markdown https://www.anchorterminal.com/tools/factorial.md · JSON https://www.anchorterminal.com/api/v1/tools/factorial.json\n- Remote: grade BB, 70.7/100, rank #142 of 842. Markdown https://www.anchorterminal.com/tools/remote.md · JSON https://www.anchorterminal.com/api/v1/tools/remote.json\n\n## Which one, for what\n\n### Factorial (B)\n\nGood for: An agent working for a company that already runs Factorial and needs employee records, leave requests with approval, attendance clock-ins, recruiting or expenses through one API.\n\nAhead on:\n- Maintenance \u0026 community, 84 against 72\n- Transparency \u0026 trust, 78 against 68\n\nWatch for: An API key grants every scope, cannot be narrowed and does not expire\n\n### Remote (BB)\n\nGood for: A company that employs people through Remote (EOR, payroll, contractors or its HRIS) and wants an agent to read employments, file and review time off, track onboarding, and read payslips and documents.\n\nAhead on:\n- Reliability, 96 against 88\n- Security \u0026 auth, 74 against 65\n- Payments \u0026 pricing, 35 against 10\n\nAlso in its favour:\n- Agent-ready, a grade of BB or better\n\nWatch for: The REST API changelog link in the docs redirects to a ReadMe dashboard login, so no public dated record of API changes was read\n\n\n## Score by category\n\n| Category | Weight | Factorial | Remote | Edge |\n| --- | --- | --- | --- | --- |\n| Reliability | 16% (20 this run) | 88 | 96 | Remote +8 |\n| Performance | 10%, pending | pending | pending | not scored in this run |\n| Schema \u0026 documentation | 13% (16.2 this run) | 77 | 78 | Remote +1 |\n| Agent ergonomics | 13% (16.2 this run) | 58 | 57 | Factorial +1 |\n| Security \u0026 auth | 14% (17.5 this run) | 65 | 74 | Remote +9 |\n| Payments \u0026 pricing | 10% (12.5 this run) | 10 | 35 | Remote +25 |\n| Task success | 10%, pending | pending | pending | not scored in this run |\n| Maintenance \u0026 community | 7% (8.8 this run) | 84 | 72 | Factorial +12 |\n| Transparency \u0026 trust | 7% (8.8 this run) | 78 | 68 | Factorial +10 |\n| Negative events | ≤15 | 0 | 0 | |\n| **Total** | | **66.3 · B** | **70.7 · BB** | |\n\n## Facts side by side\n\n| Fact | Factorial | Remote |\n| --- | --- | --- |\n| Kind | HTTP API | HTTP API |\n| Vendor | Everyday Software, S.L. | Remote Technology, Inc. |\n| Hosted endpoint | `https://api.factorialhr.com` | `https://gateway.remote.com` |\n| Transports | HTTP | HTTP, Streamable HTTP |\n| Auth | OAuth or key | OAuth or key |\n| Pricing | Paid | Paid |\n| x402 | no | no |\n| Licence | Proprietary service under Factorial's terms and conditions. The TypeScript and Python SDKs are MIT | Proprietary service under Remote's terms of use. The remote-for-ai plugin and the Remote CLI repository on GitHub are MIT |\n| Read-only variant documented | no | yes |\n| llms.txt | yes | yes |\n| Last release | 2026-10-05 | 2026-10-08 |\n| Terms last updated | no date given | 2026-08-03 |\n| Privacy policy last updated | 2026-01-01 | 2026-08-03 |\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 | yes |\n| Terms restrict benchmarking | yes | yes |\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 | 7 stars, 1.4k npm/wk, 1.1k PyPI/wk | 1.8k npm/wk |\n\n## Verdicts\n\n**Factorial.** A public OpenAPI 3.1 definition covers 615 operations, including leave approval and employee termination, and OAuth apps can be limited to 33 scopes. API keys always grant every scope and never expire. No idempotency keys exist, and a request to an expired API version is answered in an older schema with no error.\n\n**Remote.** The REST API has 303 operations in a public OpenAPI document, 78 OAuth scopes split into read and write, a sandbox issued by email with no card, and a hosted MCP server using OAuth with PKCE. The REST changelog link redirects to a login page, and writes have no idempotency key.\n\n## Before you call either\n\n### Factorial\n\n1. Send an API key in `x-api-key` and an OAuth token in `Authorization: Bearer`. The key is JWT-formatted but is rejected as a bearer token\n2. Pin the version in the path, such as `/api/2026-10-01/resources/...`, and migrate within a year. Expired versions answer in an older schema without an error\n3. Treat a 200 with an empty body as a credential from the other environment. Production is `api.factorialhr.com` and demo is `api.eu2.demo.factorial.dev`\n4. Page with `limit=100` and pass `meta.end_cursor` as `after_id`. A larger limit is capped at 100\n5. Check whether a record exists before retrying a create. Retry only 429 and 5xx with backoff, and branch on `code` for 422 because messages are localised\n\n### Remote\n\n1. Match the token prefix to the host. `ra_test_` works only on https://gateway.remote-sandbox.com and `ra_live_` only on https://gateway.remote.com\n2. Stay under 300 requests a minute per company for customer tokens, shared by every token, and read `x-ratelimit-remaining` and `x-ratelimit-reset` (milliseconds)\n3. Check for an existing record before retrying a create, or set `external_id` on employments and treat a 422 for a duplicate as success\n4. Fetch the country form schema (`GET /v1/countries/{country_code}/{form}`) before writing employment data. Country codes are three-letter ISO\n5. Use the REST API for unattended work. The MCP server needs a browser sign-in and its write tools cover employee self-service only\n\n## Questions\n\n### Which is better for AI agents, Factorial or Remote?\n\nRemote scores 70.7 (BB) on agent readiness against Factorial's 66.3 (B), and leads in 4 of 7 scored categories. Factorial leads on maintenance \u0026 community and transparency \u0026 trust.\n\n### Do Factorial and Remote need an API key?\n\nBoth take an API key or an OAuth sign-in.\n\n### Can an agent call Factorial and Remote without installing anything?\n\nYes. Factorial has a hosted endpoint at https://api.factorialhr.com and Remote at https://gateway.remote.com.\n\n\n## For agents\n\n- This comparison as JSON: https://www.anchorterminal.com/compare/factorial-vs-remote.json, and with the fewest tokens: https://www.anchorterminal.com/compare/factorial-vs-remote.min.md\n- Over MCP at https://www.anchorterminal.com/mcp (no key): `compare_tools {\"a\": \"factorial\", \"b\": \"remote\"}`. From a terminal: `anchor compare factorial remote`\n- Each listing in full: https://www.anchorterminal.com/api/v1/tools/factorial.json and https://www.anchorterminal.com/api/v1/tools/remote.json\n\n## Other comparisons with Factorial or Remote\n\n- [BambooHR vs Factorial](https://www.anchorterminal.com/compare/bamboohr-vs-factorial.md)\n- [BambooHR vs Remote](https://www.anchorterminal.com/compare/bamboohr-vs-remote.md)\n- [Deel vs Factorial](https://www.anchorterminal.com/compare/deel-vs-factorial.md)\n- [Deel vs Remote](https://www.anchorterminal.com/compare/deel-vs-remote.md)\n- [Factorial vs HiBob](https://www.anchorterminal.com/compare/factorial-vs-hibob.md)\n- [Factorial vs Humaans](https://www.anchorterminal.com/compare/factorial-vs-humaans.md)\n- [Factorial vs Rippling](https://www.anchorterminal.com/compare/factorial-vs-rippling.md)\n- [Factorial vs Zoho People](https://www.anchorterminal.com/compare/factorial-vs-zoho-people.md)\n- [HiBob vs Remote](https://www.anchorterminal.com/compare/hibob-vs-remote.md)\n- [Humaans vs Remote](https://www.anchorterminal.com/compare/humaans-vs-remote.md)\n- [Remote vs Rippling](https://www.anchorterminal.com/compare/remote-vs-rippling.md)\n- [Remote vs Zoho People](https://www.anchorterminal.com/compare/remote-vs-zoho-people.md)\n",
  "meta": {
    "attribution": "Anchor Terminal (https://www.anchorterminal.com)",
    "docs": "https://www.anchorterminal.com/docs/",
    "generatedAt": "2026-10-09",
    "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": "Factorial vs Remote",
        "url": ""
      }
    ],
    "description": "Remote scores 70.7 (BB) on agent readiness against Factorial's 66.3 (B), and leads in 4 of 7 scored categories. Factorial leads on maintenance \u0026 community and transparency \u0026 trust. Both do hr employees. Category scores, facts, verdicts and agent notes side by side.",
    "facts": [
      "Factorial B 66.3",
      "Remote BB 70.7",
      "scores"
    ],
    "h1": "Factorial vs Remote",
    "image": "https://www.anchorterminal.com/assets/og/compare-factorial-vs-remote.png",
    "path": "/compare/factorial-vs-remote",
    "published": "2026-10-01",
    "section": "tools",
    "title": "Factorial vs Remote for AI agents, B 66.3 vs BB 70.7 | Anchor Terminal",
    "toc": null,
    "updated": "2026-10-09",
    "url": "https://www.anchorterminal.com/compare/factorial-vs-remote"
  },
  "tokens": {
    "markdown": 2150,
    "slim": 680
  },
  "version": 1
}
