{
  "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"
  },
  "tool": {
    "slug": "prefactor",
    "name": "Prefactor",
    "vendor": "Prefactor Pty Ltd",
    "vendorUrl": "https://prefactor.tech",
    "kind": "http-api",
    "category": "agent-observability",
    "summary": "Prefactor is a hosted service that records AI agent runs as spans, classifies each run's data risk and stores quality evaluations. Agents and scripts reach it through an HTTP and WebSocket API, TypeScript and Python SDKs and a CLI.",
    "url": "https://www.anchorterminal.com/tools/prefactor",
    "markdownUrl": "https://www.anchorterminal.com/tools/prefactor.md",
    "slimMarkdownUrl": "https://www.anchorterminal.com/tools/prefactor.min.md",
    "jsonUrl": "https://www.anchorterminal.com/api/v1/tools/prefactor.json",
    "repo": "https://github.com/prefactordev/typescript-sdk",
    "license": "Proprietary hosted service. The TypeScript and Python SDKs and the CLI are MIT",
    "transports": [
      "http"
    ],
    "remoteUrl": "https://app.prefactorai.com/api/v1",
    "packages": [
      {
        "registry": "npm",
        "name": "@prefactor/core"
      },
      {
        "registry": "npm",
        "name": "@prefactor/cli"
      },
      {
        "registry": "pypi",
        "name": "prefactor-core"
      }
    ],
    "auth": "api-key",
    "authNotes": "Self-serve. A person signs in at app.prefactorai.com and creates an API token, sent as `Authorization: Bearer \u003ctoken\u003e`. Account tokens reach every agent in the account. Deployment tokens are bound to one agent in one environment. The OpenAPI document adds a `role` of `read_only` or `full_access` (the default) and an `expires_at` that defaults to two years. Tokens can be suspended, reactivated and revoked. `POST /api_token` mints tokens with an existing token.",
    "pricing": "freemium",
    "pricingNotes": "Free Dev plan with 5,000 spans a month, up to 3 agents and 7-day retention, no card required, so an agent's owner can start without a contract. Startup is $49 a month ($499 a year) with 15,000 spans, then $0.0025 a span. Scaleup is $199 a month ($2,000 a year) with 100,000 spans, then $2.50 per 1,000 spans monthly or $2.00 on the annual plan. Enterprise, from 4 million spans a month, is by quote. A span is one LLM call, tool call, message turn or custom step. Seats are unlimited on every plan (https://prefactor.tech/pricing).",
    "priceSummary": "$49 / mo",
    "where": "hosted",
    "x402": {
      "level": "no",
      "evidence": "No x402, MPP or L402 in the docs, the OpenAPI document or the pricing page (checked 2026-10-08).",
      "endpoints": []
    },
    "toolCount": null,
    "popularity": {
      "githubStars": 3,
      "npmWeekly": 19,
      "pypiWeekly": 28,
      "asOf": "2026-10-08"
    },
    "docsUrl": "https://docs.prefactor.ai",
    "llmsTxt": "https://docs.prefactor.ai/llms.txt",
    "openapi": "https://app.prefactorai.com/api/v1/openapi",
    "capabilities": [
      "obs.traces",
      "obs.evals"
    ],
    "tags": [
      "hosted",
      "freemium",
      "no-card",
      "llms-txt",
      "openapi",
      "python",
      "typescript",
      "closed-source",
      "enterprise",
      "status-page"
    ],
    "lastRelease": "2026-09-13",
    "graded": true,
    "anchor": {
      "graded": true,
      "score": 65.6,
      "grade": "B",
      "agentReady": false,
      "rank": 253,
      "ranked": true,
      "rankOf": 722,
      "categoryRank": 4,
      "methodology": "0.4",
      "run": "2026-10-01",
      "scores": {
        "ergonomics": 88,
        "maintenance": 82,
        "payments": 40,
        "reliability": 78,
        "schema": 80,
        "security": 56,
        "transparency": 42
      },
      "pending": [
        "performance",
        "tasks"
      ],
      "breakdown": [
        {
          "key": "reliability",
          "name": "Reliability",
          "weight": 16,
          "effectiveWeight": 20,
          "score": 78,
          "points": 15.6,
          "reason": "Graded as a hosted service. A public status page at status.prefactor.ai (UptimeRobot) with three monitors and 90 days of daily bars, though we found no link to it from the site or docs (20). All three monitors, the API host among them, show 100 per cent for the 90 days to 8 October 2026 and no status updates. These are plain HTTP checks, not per-endpoint probes (30). Rate limits are described by scope and window with no numbers (3 of 15). 429 carries `Retry-After` and `retry_after_ms`, both SDKs retry with backoff and jitter, and every operation takes an idempotency key (15). The pricing page lists an SLA on Enterprise with no text published (0). The API is version 1.0 and `@prefactor/core` is 1.2.0, with no beta label (10)."
        },
        {
          "key": "performance",
          "name": "Performance",
          "weight": 10,
          "effectiveWeight": 0,
          "pending": true,
          "points": 0,
          "reason": "Pending. Latency is measured per call by our probes, which haven't run yet, so this run doesn't score it. Its weight is shared across the assessed categories until the first probe window closes."
        },
        {
          "key": "schema",
          "name": "Schema \u0026 documentation",
          "weight": 13,
          "effectiveWeight": 16.25,
          "score": 80,
          "points": 13,
          "reason": "A public OpenAPI 3.0.0 document with 157 operations and an OpenRPC document with 159 WebSocket methods. Body parameters are declared `in: body`, which OpenAPI 3 does not define, so some generators will need adjusting (23 of 25). llms.txt with abridged and full versions of the docs (10). Operations carry one-line summaries and only 4 of 157 have a description. The concept pages are clearer and say what the product does not do (10 of 20). Named ID schemas, enums and bounds such as `page_size` 1 to 100, but span payloads are free-form by design and `start_time` and `end_time` have no schema (11 of 15). A table of 12 error codes, an error union in the spec, curl examples and a runnable WebSocket script (13 of 15). The path is versioned `/api/v1`, the SDKs keep semver changelogs, and the site changelog has 35 dated entries, the latest on 27 July 2026 (13 of 15)."
        },
        {
          "key": "ergonomics",
          "name": "Agent ergonomics",
          "weight": 13,
          "effectiveWeight": 16.25,
          "score": 88,
          "points": 14.3,
          "reason": "List calls take `pagination[page_size]` up to 100, summaries and counts are opt-in flags, and one endpoint exports a whole run's context (16 of 25). Offset pagination, sorting and filters by agent, instance, environment, time, purpose and status, with no cursor (18 of 20). Errors carry a stable `code`, a message naming the exceeded scope on 429 and a per-field map on validation failures (20). Every operation accepts `idempotency_key`, and a retried bulk request fails only the reused items. There is no MCP server to annotate (20). Official TypeScript and Python SDKs and a CLI. The Python SDK does not yet support sensitive encoding (14 of 15)."
        },
        {
          "key": "security",
          "name": "Security \u0026 auth",
          "weight": 14,
          "effectiveWeight": 17.5,
          "score": 56,
          "points": 9.8,
          "reason": "Bearer tokens scoped to the account or one agent deployment, with a `read_only` or `full_access` role, an expiry, and suspend, reactivate and revoke. The role appears only in the OpenAPI document, the default is full access and the default expiry is two years (27 of 30). Read-only and deployment tokens give least privilege. Deletes, including `account/{id}/implode`, have no confirmation step in the API, and the docs say all account members share one access level (12 of 20). Span payloads hold whatever the instrumented agent saw, the API returns marked sensitive values unless `redacted: true` is passed, and we found no prompt-injection guidance for agents reading them (4 of 15). Tokens show last use and creator, and quality and alert changes are written as spans. No log of API calls for the operator was found (7 of 15). A disclosure address with a 24-hour acknowledgement promise. No security.txt, no bounty, no advisories page, and SOC 2 Type II is described as in progress (6 of 20)."
        },
        {
          "key": "payments",
          "name": "Payments \u0026 pricing",
          "weight": 10,
          "effectiveWeight": 12.5,
          "score": 40,
          "points": 5,
          "reason": "No machine payment protocol (0). Per-span overage prices and plan prices are published without a login, $0.0025 a span and $49 or $199 a month (20). The Dev plan is free with 5,000 spans a month and the page says no credit card is required (20). A person signs in through the browser to create the first token. `POST /api_token` mints more only with an existing token (0)."
        },
        {
          "key": "tasks",
          "name": "Task success",
          "weight": 10,
          "effectiveWeight": 0,
          "pending": true,
          "points": 0,
          "reason": "Pending. Task success needs the category task suites run through each tool, which haven't run yet, so this run doesn't score it. Its weight is shared across the assessed categories until then. A data provider's data-quality score is published on its listing now and becomes half of this category when it's scored."
        },
        {
          "key": "maintenance",
          "name": "Maintenance \u0026 community",
          "weight": 7,
          "effectiveWeight": 8.75,
          "score": 82,
          "points": 7.18,
          "reason": "`@prefactor/core` 1.2.0 was published on 13 September 2026, 25 days before this check (30). Four releases of it since 10 July (0.5.1, 1.0.0, 1.1.0, 1.2.0), plus five changelog entries in late July (20). A closed service with a public changelog whose latest entry is 27 July 2026, a Slack community and public SDK repositories with 4 open issues and pull requests on the TypeScript one. We did not read reply times (9 of 15 available to a closed service). Current official SDKs in two languages (15). CI passed on the TypeScript main branch on 13 September and weekly scheduled runs passed to 8 October. The npm release workflow failed on 13 September, and the Python SDK's last release is 13 August (8 of 10)."
        },
        {
          "key": "transparency",
          "name": "Transparency \u0026 trust",
          "weight": 7,
          "effectiveWeight": 8.75,
          "score": 42,
          "points": 3.68,
          "note": "editorial 34, provenance 50",
          "reason": "A closed service with MIT SDKs. The only published terms cover the website, so the terms for the product are unclear (10 of 30). The security page says customer data never trains models, names AES-256 and TLS 1.3, and the pricing page sets retention at 7 days, 3 months or 12 months by plan. The privacy policy is a generated template whose regional sections place storage in the United Kingdom and in Canada, which does not agree with the AWS regions on the security page, and we found no DPA (12 of 30). No deprecation policy. The SDK changelogs mark breaking changes with major versions (4 of 20). Three AWS regions are named as residency options. No sub-processor list was found (8 of 20)."
        }
      ],
      "assessment": {
        "date": "2026-10-08",
        "basis": "public evidence",
        "confidence": "medium",
        "notes": {
          "ergonomics": "List calls take `pagination[page_size]` up to 100, summaries and counts are opt-in flags, and one endpoint exports a whole run's context (16 of 25). Offset pagination, sorting and filters by agent, instance, environment, time, purpose and status, with no cursor (18 of 20). Errors carry a stable `code`, a message naming the exceeded scope on 429 and a per-field map on validation failures (20). Every operation accepts `idempotency_key`, and a retried bulk request fails only the reused items. There is no MCP server to annotate (20). Official TypeScript and Python SDKs and a CLI. The Python SDK does not yet support sensitive encoding (14 of 15).",
          "maintenance": "`@prefactor/core` 1.2.0 was published on 13 September 2026, 25 days before this check (30). Four releases of it since 10 July (0.5.1, 1.0.0, 1.1.0, 1.2.0), plus five changelog entries in late July (20). A closed service with a public changelog whose latest entry is 27 July 2026, a Slack community and public SDK repositories with 4 open issues and pull requests on the TypeScript one. We did not read reply times (9 of 15 available to a closed service). Current official SDKs in two languages (15). CI passed on the TypeScript main branch on 13 September and weekly scheduled runs passed to 8 October. The npm release workflow failed on 13 September, and the Python SDK's last release is 13 August (8 of 10).",
          "payments": "No machine payment protocol (0). Per-span overage prices and plan prices are published without a login, $0.0025 a span and $49 or $199 a month (20). The Dev plan is free with 5,000 spans a month and the page says no credit card is required (20). A person signs in through the browser to create the first token. `POST /api_token` mints more only with an existing token (0).",
          "reliability": "Graded as a hosted service. A public status page at status.prefactor.ai (UptimeRobot) with three monitors and 90 days of daily bars, though we found no link to it from the site or docs (20). All three monitors, the API host among them, show 100 per cent for the 90 days to 8 October 2026 and no status updates. These are plain HTTP checks, not per-endpoint probes (30). Rate limits are described by scope and window with no numbers (3 of 15). 429 carries `Retry-After` and `retry_after_ms`, both SDKs retry with backoff and jitter, and every operation takes an idempotency key (15). The pricing page lists an SLA on Enterprise with no text published (0). The API is version 1.0 and `@prefactor/core` is 1.2.0, with no beta label (10).",
          "schema": "A public OpenAPI 3.0.0 document with 157 operations and an OpenRPC document with 159 WebSocket methods. Body parameters are declared `in: body`, which OpenAPI 3 does not define, so some generators will need adjusting (23 of 25). llms.txt with abridged and full versions of the docs (10). Operations carry one-line summaries and only 4 of 157 have a description. The concept pages are clearer and say what the product does not do (10 of 20). Named ID schemas, enums and bounds such as `page_size` 1 to 100, but span payloads are free-form by design and `start_time` and `end_time` have no schema (11 of 15). A table of 12 error codes, an error union in the spec, curl examples and a runnable WebSocket script (13 of 15). The path is versioned `/api/v1`, the SDKs keep semver changelogs, and the site changelog has 35 dated entries, the latest on 27 July 2026 (13 of 15).",
          "security": "Bearer tokens scoped to the account or one agent deployment, with a `read_only` or `full_access` role, an expiry, and suspend, reactivate and revoke. The role appears only in the OpenAPI document, the default is full access and the default expiry is two years (27 of 30). Read-only and deployment tokens give least privilege. Deletes, including `account/{id}/implode`, have no confirmation step in the API, and the docs say all account members share one access level (12 of 20). Span payloads hold whatever the instrumented agent saw, the API returns marked sensitive values unless `redacted: true` is passed, and we found no prompt-injection guidance for agents reading them (4 of 15). Tokens show last use and creator, and quality and alert changes are written as spans. No log of API calls for the operator was found (7 of 15). A disclosure address with a 24-hour acknowledgement promise. No security.txt, no bounty, no advisories page, and SOC 2 Type II is described as in progress (6 of 20).",
          "transparency": "A closed service with MIT SDKs. The only published terms cover the website, so the terms for the product are unclear (10 of 30). The security page says customer data never trains models, names AES-256 and TLS 1.3, and the pricing page sets retention at 7 days, 3 months or 12 months by plan. The privacy policy is a generated template whose regional sections place storage in the United Kingdom and in Canada, which does not agree with the AWS regions on the security page, and we found no DPA (12 of 30). No deprecation policy. The SDK changelogs mark breaking changes with major versions (4 of 20). Three AWS regions are named as residency options. No sub-processor list was found (8 of 20)."
        },
        "sources": [
          {
            "what": "home page",
            "url": "https://prefactor.tech/",
            "seen": "2026-10-08"
          },
          {
            "what": "site llms.txt",
            "url": "https://prefactor.tech/llms.txt",
            "seen": "2026-10-08"
          },
          {
            "what": "pricing",
            "url": "https://prefactor.tech/pricing",
            "seen": "2026-10-08"
          },
          {
            "what": "security page",
            "url": "https://prefactor.tech/security",
            "seen": "2026-10-08"
          },
          {
            "what": "changelog",
            "url": "https://prefactor.tech/changelog",
            "seen": "2026-10-08"
          },
          {
            "what": "integrations page",
            "url": "https://prefactor.tech/integrations",
            "seen": "2026-10-08"
          },
          {
            "what": "full documentation, all pages",
            "url": "https://docs.prefactor.ai/llms-full.txt",
            "seen": "2026-10-08"
          },
          {
            "what": "docs index",
            "url": "https://docs.prefactor.ai/llms.txt",
            "seen": "2026-10-08"
          },
          {
            "what": "OpenAPI document",
            "url": "https://app.prefactorai.com/api/v1/openapi",
            "seen": "2026-10-08"
          },
          {
            "what": "OpenRPC document for the WebSocket API",
            "url": "https://app.prefactorai.com/api/v1/openrpc",
            "seen": "2026-10-08"
          },
          {
            "what": "unauthenticated call, 401 not_authenticated",
            "url": "https://app.prefactorai.com/api/v1/ping",
            "seen": "2026-10-08"
          },
          {
            "what": "terms of service page, text read from the GetTerms feed the page loads",
            "url": "https://prefactor.tech/terms-of-service",
            "seen": "2026-10-08"
          },
          {
            "what": "privacy policy page, regional sections read from the GetTerms feed the page loads",
            "url": "https://prefactor.tech/privacy-policy",
            "seen": "2026-10-08"
          },
          {
            "what": "status page, monitor data read from the feed the page loads",
            "url": "https://status.prefactor.ai",
            "seen": "2026-10-08"
          },
          {
            "what": "TypeScript SDK repository, tags, changelog, CI workflows",
            "url": "https://github.com/prefactordev/typescript-sdk",
            "seen": "2026-10-08"
          },
          {
            "what": "Python SDK repository",
            "url": "https://github.com/prefactordev/python-sdk",
            "seen": "2026-10-08"
          },
          {
            "what": "npm release dates for @prefactor/core",
            "url": "https://registry.npmjs.org/@prefactor/core",
            "seen": "2026-10-08"
          },
          {
            "what": "PyPI release dates for prefactor-core",
            "url": "https://pypi.org/pypi/prefactor-core/json",
            "seen": "2026-10-08"
          },
          {
            "what": "domain registration",
            "url": "https://rdap.org/domain/prefactor.tech",
            "seen": "2026-10-08"
          },
          {
            "what": "security.txt, 404",
            "url": "https://prefactor.tech/.well-known/security.txt",
            "seen": "2026-10-08"
          }
        ],
        "openQuestions": [
          "Whether the hold, approve and block controls on the pricing page exist in the product. The docs deny automatic blocking and the API documents have no approval operation.",
          "Whether the hosted judge operations in the OpenAPI document are available to every account. The docs do not describe them.",
          "unchecked: the main body of the privacy policy. The page draws it by script and we could render only its regional sections from the feed.",
          "unchecked: whether signup shows a service agreement. We did not open the signup flow.",
          "unchecked: reply times on GitHub issues and in the Slack community.",
          "The published rate-limit numbers, the SLA text and any sub-processor list or DPA were not found.",
          "The OpenTelemetry ingest named in the lead and in one changelog entry has no documented endpoint."
        ]
      },
      "negative": -3,
      "negativeNotes": [
        "2026-10-08. The pricing page lists 'Hold, approve or block in real time' and PII detection on every plan, and the security page lists manual approval workflows and fine-grained RBAC. The vendor's own docs say crossing a risk threshold does not block or terminate a run, that Prefactor does not detect sensitive data, and that accounts have no role-based permissions. The OpenAPI and OpenRPC documents have no approval operation. Counted as a misleading claim (-3). The docs may lag the product, since the API has hosted judge operations they do not describe (https://prefactor.tech/pricing, https://prefactor.tech/security, https://docs.prefactor.ai/llms-full.txt)."
      ],
      "verdict": "The public OpenAPI document lists 157 operations, each accepting an idempotency key, and tokens can be read-only or bound to one agent deployment. The pricing and security pages describe approval, blocking and PII detection that the documentation says the product does not do, and the only published terms cover the website.",
      "bestFor": "A team that wants an auditable record of agent runs with declared data-risk labels, quality payloads from its own evaluations and a remote stop signal.",
      "strengths": [
        "Public OpenAPI 3.0 document with 157 operations and an OpenRPC document with 159 WebSocket methods, both fetched without a login",
        "Every write accepts an `idempotency_key`, and `POST /bulk` can be retried whole because a reused key fails only its own item",
        "Tokens are scoped to the account or to one agent deployment, carry a `read_only` or `full_access` role and an expiry, and can be suspended or revoked",
        "A 429 response carries `Retry-After` and `retry_after_ms`, and both SDKs retry with exponential backoff and jitter",
        "The free Dev plan includes 5,000 spans a month with no card, and the overage price per span is published"
      ],
      "weaknesses": [
        "The pricing page lists hold, approve or block and PII detection on every plan, while the docs say a risk threshold blocks nothing and that Prefactor does not detect sensitive data",
        "No approval operation exists in the OpenAPI or OpenRPC documents. The documented control is a cooperative terminate signal the agent's own code must obey",
        "The published terms of service cover the website. No service agreement, DPA, sub-processor list or SLA text was found",
        "Rate limits are described by scope with no numbers",
        "No security.txt and no certification held. The security page says SOC 2 Type II is in progress"
      ],
      "agentNotes": [
        "Send requests to `https://app.prefactorai.com/api/v1` with `Authorization: Bearer \u003ctoken\u003e`. The API host is not on the `prefactor.tech` or `prefactor.ai` domains",
        "Ask for a deployment-scoped token, or an account token created with `role` set to `read_only`, since the default role is `full_access` with a two-year expiry",
        "Pass `redacted: true` on span list and detail queries, because the API returns marked sensitive values unless asked otherwise",
        "On 429 wait for `retry_after_ms`. Limits use one-minute windows and the SDKs' default retries ignore the server's hint",
        "Treat terminate as a request. Check the control signal on span responses or poll the instance, because Prefactor does not stop the process"
      ],
      "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": 65.6
        }
      ],
      "editorialScores": {
        "ergonomics": 88,
        "maintenance": 82,
        "payments": 40,
        "reliability": 78,
        "schema": 80,
        "security": 56,
        "transparency": 34
      },
      "provenanceScore": 50
    },
    "connect": {
      "install": "npm install @prefactor/core",
      "http": "curl https://app.prefactorai.com/api/v1/agent \\\n  -H \"Authorization: Bearer $PREFACTOR_API_TOKEN\""
    },
    "letme": {
      "capability": "https://letme.dev/obs.traces",
      "tool": "https://letme.dev/prefactor"
    },
    "notable": [
      "The HTTP API answers at `https://app.prefactorai.com/api/v1` with Bearer tokens, and the WebSocket API at `wss://app.prefactorai.com/api/v1/ws` speaks JSON-RPC 2.0 with the same operations plus instance notifications (https://docs.prefactor.ai/llms-full.txt)",
      "The OpenAPI document lists 157 operations over 112 paths, among them span create and finish, `record_quality`, alerts raise and clear, risk profiles, API tokens, `agent_instance/{id}/terminate` and hosted judge operations (https://app.prefactorai.com/api/v1/openapi)",
      "The docs state that crossing a risk threshold does not block or terminate a run, that the evaluation happens outside Prefactor and that Prefactor does not detect sensitive data, which the integration must mark with `$sensitive` (https://docs.prefactor.ai/llms-full.txt)",
      "The pricing page lists hold, approve or block in real time, real-time scoring and PII detection on every plan, and the security page lists manual approval workflows and fine-grained RBAC. None of these is described in the docs (https://prefactor.tech/pricing, https://prefactor.tech/security)",
      "Termination is cooperative. The SDK sees a control signal on its next span response or polls every 30 seconds, and Prefactor keeps accepting spans until the agent stops (https://docs.prefactor.ai/llms-full.txt)",
      "The home page opens with a note addressed to AI agents and crawlers that points them to the signup page. We recorded it and did not act on it (https://prefactor.tech/)",
      "The changelog has 35 entries from 9 February to 27 July 2026, and an 18 June entry says GitHub Copilot sessions are ingested over OpenTelemetry. The docs describe no OpenTelemetry endpoint (https://prefactor.tech/changelog)"
    ],
    "area": "developer",
    "details": [
      {
        "label": "API",
        "value": "`https://app.prefactorai.com/api/v1`, JSON, OpenAPI 3.0.0 with 157 operations. WebSocket JSON-RPC at `wss://app.prefactorai.com/api/v1/ws` with 159 methods in an OpenRPC document"
      },
      {
        "label": "Credentials",
        "value": "Bearer API tokens (JWT). Scope account or agent deployment, role `read_only` or `full_access` (default), expiry defaulting to two years, states active, suspended and revoked, last-used time shown"
      },
      {
        "label": "Rate limits",
        "value": "Per IP, token, deployment, agent and account over fixed one-minute windows, reads allowed more than writes. No numbers published. 429 carries `Retry-After` and `retry_after_ms`"
      },
      {
        "label": "Errors",
        "value": "`status`, `code` and `message` envelope with 12 documented codes, a per-field `errors` map on `validation_errors`, 409 for state conflicts and reused idempotency keys"
      },
      {
        "label": "Pagination",
        "value": "`pagination[offset]` and `pagination[page_size]` (1 to 100), `sorting`, filters by agent, instance, environment, time range, purpose and status"
      },
      {
        "label": "SDKs",
        "value": "TypeScript `@prefactor/core` 1.2.0 (13 September 2026) with adapters for LangChain, Vercel AI SDK, Claude Agent SDK, LiveKit and OpenClaw, Node 22 or later. Python `prefactor-core` 0.5.3 (13 August 2026) with LangChain and LiveKit, Python 3.11 or later. MIT"
      },
      {
        "label": "CLI",
        "value": "`@prefactor/cli` 0.3.0, installed by a script from prefactor.tech. Reads `PREFACTOR_API_TOKEN` for CI. Four agent skills for coding tools ship in the TypeScript SDK repository"
      },
      {
        "label": "Evaluations",
        "value": "Named quality schemas (JSON Schema) per agent and a `record_quality` operation for payloads scored elsewhere. The OpenAPI document also has hosted judge operations that the docs do not describe"
      },
      {
        "label": "Risk",
        "value": "Risk profiles weight data categories and action types declared per span type, and each run is labelled Low, Medium, High or Critical. The label enforces nothing"
      },
      {
        "label": "Sensitive data",
        "value": "The integration marks values with `$sensitive`. Marked values are stored apart, redacted in the web app by default, returned unredacted by the API by default, and can be discarded per span"
      },
      {
        "label": "Plans",
        "value": "Dev free with 5,000 spans a month, 3 agents and 7-day retention. Startup $49 a month with 15,000 spans and 3-month retention. Scaleup $199 a month with 100,000 spans and 12-month retention. Enterprise by quote with self-hosting, SSO and an SLA"
      },
      {
        "label": "Status",
        "value": "status.prefactor.ai on UptimeRobot, three HTTP monitors (app, docs, site) with 90 days of daily bars"
      },
      {
        "label": "Hosting",
        "value": "AWS, with US East, EU West and Sydney named as residency options on the security page"
      }
    ],
    "unitPrices": [
      {
        "item": "Startup plan",
        "unit": "month",
        "usd": 49,
        "note": "15,000 spans included, 3-month retention"
      },
      {
        "item": "Scaleup plan",
        "unit": "month",
        "usd": 199,
        "note": "100,000 spans included, 12-month retention"
      },
      {
        "item": "Span beyond the Startup allowance",
        "unit": "record",
        "usd": 0.0025
      },
      {
        "item": "Span beyond the Scaleup allowance",
        "unit": "record",
        "usd": 0.0025,
        "note": "$2.50 per 1,000 on monthly billing, $2.00 on annual"
      }
    ],
    "provenance": {
      "legalEntity": "Prefactor Pty Ltd",
      "domain": "prefactor.tech",
      "domainRegistered": "2024-10-16",
      "endpointOnVendorDomain": false,
      "terms": "",
      "privacy": "https://prefactor.tech/privacy-policy",
      "statusPage": "https://status.prefactor.ai",
      "changelog": "https://prefactor.tech/changelog",
      "securityTxt": "none",
      "checked": "2026-10-08",
      "notes": [
        "prefactor.tech/llms.txt names Prefactor Pty Ltd, founded 2024, headquartered in Australia. The legal documents name the same entity and New South Wales law.",
        "`terms` is left out. The only published terms (last updated 17 March 2026) govern use of the website at prefactor.tech and are a generated website template. No service agreement, API terms or DPA was found on the site or in its sitemap.",
        "The privacy policy and terms pages are drawn by script from GetTerms. We read them from the feed the pages load (gettermscdn.com) and could render only the regional sections of the privacy policy, not its main body.",
        "The API answers at app.prefactorai.com, a third domain of the vendor's registered on 18 December 2025. The site is on prefactor.tech and the docs on docs.prefactor.ai.",
        "RDAP gives prefactor.tech a registration date of 16 October 2024 and an expiry of 16 October 2026, eight days after this check.",
        "prefactor.tech, app.prefactorai.com and docs.prefactor.ai each return 404 for /.well-known/security.txt. The security page asks for reports by email and promises an acknowledgement within 24 hours.",
        "status.prefactor.ai is an UptimeRobot page. We found no link to it on the site or docs pages we read."
      ],
      "score": 50,
      "checks": [
        {
          "check": "Legal entity named",
          "value": "Prefactor Pty Ltd",
          "points": 20,
          "max": 20,
          "state": "ok"
        },
        {
          "check": "Domain age",
          "value": "prefactor.tech, registered 2024-10-16 (1 year)",
          "points": 3,
          "max": 15,
          "state": "part"
        },
        {
          "check": "Endpoint on the vendor's domain",
          "value": "app.prefactorai.com is not on prefactor.tech",
          "points": 0,
          "max": 15,
          "state": "no"
        },
        {
          "check": "Terms of service",
          "value": "not found",
          "points": 0,
          "max": 10,
          "state": "no"
        },
        {
          "check": "Privacy policy",
          "value": "published, but our reader couldn't read it",
          "points": 7,
          "max": 10,
          "state": "part"
        },
        {
          "check": "Status page",
          "value": "status.prefactor.ai",
          "points": 10,
          "max": 10,
          "state": "ok"
        },
        {
          "check": "Changelog",
          "value": "published",
          "points": 10,
          "max": 10,
          "state": "ok"
        },
        {
          "check": "security.txt",
          "value": "not found",
          "points": 0,
          "max": 10,
          "state": "no"
        }
      ],
      "policies": [
        {
          "kind": "terms",
          "url": "",
          "state": "none-found",
          "points": 0,
          "max": 10
        },
        {
          "kind": "privacy",
          "url": "https://prefactor.tech/privacy-policy",
          "state": "unreadable",
          "reason": "the page has only its navigation and a heading without a browser, so the document is drawn by script or sits elsewhere",
          "readAt": "2026-10-08",
          "points": 7,
          "max": 10
        }
      ]
    },
    "pageJsonUrl": "https://www.anchorterminal.com/tools/prefactor.json",
    "live": {
      "slug": "prefactor",
      "probe": {
        "target": "https://app.prefactorai.com/api/v1",
        "method": "get",
        "lastAt": "2026-10-08T21:12:19.160085406Z",
        "lastOk": true,
        "lastStatus": 404,
        "lastMs": 388,
        "authRequired": false,
        "uptime24h": 100,
        "uptime30d": 100,
        "p50ms24h": 353,
        "p95ms24h": 431,
        "samples24h": 21,
        "samples30d": 21,
        "days": [
          {
            "date": "2026-10-08",
            "probes": 21,
            "ok": 21
          }
        ]
      },
      "vendorStatus": {
        "page": "https://status.prefactor.ai",
        "indicator": "unknown",
        "summary": "no machine-readable status found",
        "checkedAt": "2026-10-08T19:39:04.756104641Z"
      },
      "updatedAt": "2026-10-08T21:12:19.160085406Z"
    }
  }
}
