Skip to content

How Restate’s scores are calculated

The full audit trail, recomputed from the verdict data at build time through the same code that produced the leaderboard: verdict × quality × story weight per cell, cells sum to dimension scores, dimensions blend into the PA Score. Every number on the product page is reproducible from this page alone; for why the formula looks like this, see the methodology.

verdict factors: full ×1.0 · partial ×0.6 · disputed ×0.3 · none ×0.0 · n/a excluded from both sides · cell points = weight × quality × factor · cell max = weight × 10

PA Score33/100

Agent-ready 54.7 × 0.30 = 16.41

API quality 10.3 × 0.20 = 2.06

Openness 40.4 × 0.20 = 8.08

Built-in AI 20.0 × 0.15 = 3.00

Automation 25.5 × 0.15 = 3.82

(16.41 + 2.06 + 8.08 + 3.00 + 3.82) ÷ (0.30 + 0.20 + 0.20 + 0.15 + 0.15) = 33.38 ÷ 1.00 = 33.4

Scores are stored to 1 decimal; the product page’s pills round to whole numbers for display. Each dimension below shows the stories, verdicts, and cited evidence behind its number.

Agent-ready54.7/100×0.30 of the PA blend

Outside-in: can YOUR agent reach and drive this product — API, MCP, CLI, headless runs, agent docs.

Point an agent at llms.txt or agent-oriented docsweight 2

2 (weight) × 9 (quality) × 1.0 (full) = 18.0 of 20 max

  • [probe] https://docs.restate.dev/llms.txtPROBE llms.txt: HTTP 200 at https://docs.restate.dev/llms.txt # Restate > Restate is the simplest way to build resilient applications. - [Welcome to Restate!](https://docs.restate.
  • [claimed-docs] https://docs.restate.dev/develop/ai-assistantThe Restate plugin teaches your coding agent how to build Restate apps: Durable Execution, service types, SDK APIs, common pitfalls, and AI agent integration patterns
  • [claimed-docs] https://docs.restate.dev/develop/ai-assistantThe Restate documentation and templates integrate with AI coding agents like Claude Code, Codex, and Cursor so you can get expert help while building Restate apps.

Run the product headlessly / in CI for automationweight 2

2 (weight) × 8 (quality) × 1.0 (full) = 16.0 of 20 max

  • [claimed-docs] https://docs.restate.dev/server/overviewRestate is distributed as a single binary that implements all features required to run a single- or multi-node cluster
  • [claimed-docs] https://docs.restate.dev/installationRestate is a single self-contained binary. No external dependencies needed.
  • [claimed-docs] https://docs.restate.dev/server/overviewRestate is distributed as a single binary that implements all features required to run a single- or multi-node cluster, making it easy to run it on a variety of platforms, from your local machine, to a VM, to Kubernetes.
  • [claimed-docs] https://docs.restate.dev/concepts/durable_executionDeploy anywhere: Services run in your infrastructure as containers, serverless functions, VMs, or Kubernetes pods
  • [claimed-docs] https://docs.restate.dev/references/cli-config.mdYou can use the CLI to interact with Restate, and manage your services, deployments and invocations.
  • [claimed-docs] https://docs.restate.dev/foundations/invocationsUse typed clients from external applications to invoke Restate handlers
  • [claimed-docs] https://docs.restate.dev/foundations/invocationsTo call a function over HTTP, send a request to the Restate Server, specifying the service and the function you want to invoke.

Plug MCP servers into this product so it can use their toolsweight 3

3 (weight) × 0 (quality) × 0.0 (none) = 0.0 of 30 max

  • [claimed-docs] https://docs.restate.dev/develop/ai-assistantThe Restate plugin teaches your coding agent how to build Restate apps: Durable Execution, service types, SDK APIs, common pitfalls, and AI agent integration patterns
  • [claimed-docs] https://docs.restate.dev/develop/ai-assistant.mdThe Restate plugin teaches your coding agent how to build Restate apps: Durable Execution, service types, SDK APIs, common pitfalls, and AI agent integration patterns across TypeScript, Python, Java, and Go.
  • [claimed-docs] https://docs.restate.dev/develop/ai-assistantThe Restate documentation and templates integrate with AI coding agents like Claude Code, Codex, and Cursor so you can get expert help while building Restate apps.
  • [probe] https://docs.restate.dev/develop/ai-assistantofficial MCP server documented at https://docs.restate.dev/develop/ai-assistant
  • [claimed-docs] https://docs.restate.dev/ai/patterns/tools.mdDeploy complex tool logic as separate durable services. Scale tools independently, use any language, and get end-to-end durability.
  • [claimed-docs] https://docs.restate.dev/ai/sdk-integrations/openai-agents-sdk.mdIntegrate OpenAI Agents SDK with Restate for fault-tolerant agent execution with automatic retries and durable state.

Connect an agent via an official MCP serverweight 3

3 (weight) × 6 (quality) × 0.6 (partial) = 10.8 of 30 max

  • [claimed-docs] https://docs.restate.dev/develop/ai-assistantThe Restate plugin teaches your coding agent how to build Restate apps: Durable Execution, service types, SDK APIs, common pitfalls, and AI agent integration patterns
  • [claimed-docs] https://docs.restate.dev/develop/ai-assistant.mdThe Restate plugin teaches your coding agent how to build Restate apps: Durable Execution, service types, SDK APIs, common pitfalls, and AI agent integration patterns across TypeScript, Python, Java, and Go.
  • [claimed-docs] https://docs.restate.dev/develop/ai-assistantThe Restate documentation and templates integrate with AI coding agents like Claude Code, Codex, and Cursor so you can get expert help while building Restate apps.
  • [probe] https://docs.restate.dev/develop/ai-assistantofficial MCP server documented at https://docs.restate.dev/develop/ai-assistant

Use an official CLIweight 2

2 (weight) × 8 (quality) × 1.0 (full) = 16.0 of 20 max

  • [claimed-docs] https://docs.restate.dev/services/introspectionRestate exposes information on invocations and application state via its CLI and Introspection SQL API.
  • [claimed-docs] https://docs.restate.dev/references/cli-config.mdYou can use the CLI to interact with Restate, and manage your services, deployments and invocations.
  • [probe] https://docs.restate.dev/installationofficial CLI documented at https://docs.restate.dev/installation

Drive the product through a documented public APIweight 3

3 (weight) × 8 (quality) × 1.0 (full) = 24.0 of 30 max

  • [claimed-docs] https://docs.restate.dev/foundations/invocationsTo call a function over HTTP, send a request to the Restate Server, specifying the service and the function you want to invoke.
  • [claimed-docs] https://docs.restate.dev/foundations/invocationsUse typed clients from external applications to invoke Restate handlers
  • [claimed-docs] https://docs.restate.dev/services/introspectionRestate exposes information on invocations and application state via its CLI and Introspection SQL API.
  • [claimed-docs] https://docs.restate.dev/foundations/invocationsThere are three ways to invoke a handler: over HTTP, using typed clients, or through Kafka topics.
  • [claimed-docs] https://docs.restate.dev/services/invocation/clients/typescript-sdk.mdThe Restate SDK client library lets you invoke Restate handlers from anywhere in your application.
  • [claimed-docs] https://docs.restate.dev/references/cli-config.mdYou can use the CLI to interact with Restate, and manage your services, deployments and invocations.
  • [claimed-docs] https://docs.restate.dev/services/introspectionInspect the status of invocations/services.
  • [claimed-docs] https://docs.restate.dev/admin-apiCluster state endpoint
  • [claimed-docs] https://docs.restate.dev/admin-api/service/get-service-openapi-definition.mdReturns the OpenAPI 3.1 specification for the service, describing all handlers and their request/response schemas.
  • [probe] https://docs.restate.dev/openapi.jsonPROBE openapi: all candidate paths 404 (https://docs.restate.dev/openapi.json, https://docs.restate.dev/swagger.json, https://docs.restate.dev/api/openapi.json, https://docs.restate.dev/.well-known/openapi.json)
  • [probe] https://docs.restate.dev/installationofficial CLI documented at https://docs.restate.dev/installation

Issue scoped/least-privilege API credentials for an agentweight 2

2 (weight) × 0 (quality) × 0.0 (none) = 0.0 of 20 max

  • [claimed-docs] https://docs.restate.dev/services/securityRestate has a native request identity feature which can be used in the SDK to cryptographically verify that requests have come from a particular Restate instance.
  • [claimed-docs] https://docs.restate.dev/services/securityOnly Restate needs to be able to make requests to your services. The Restate Server will proxy all requests for these services.
  • [claimed-docs] https://docs.restate.dev/services/securityRestrict access to Restate services

Build against official SDKsweight 2

2 (weight) × 8 (quality) × 1.0 (full) = 16.0 of 20 max

  • [github] https://github.com/restatedev/restateRestate supports the following SDKs: * [Typescript] * [Java and Kotlin] * [Python] * [Go] * [Rust]
  • [claimed-docs] https://docs.restate.dev/ai/sdk-integrations/vercel-ai-sdk.mdThe Vercel AI SDK is an excellent fit for Restate integration.
  • [claimed-docs] https://docs.restate.dev/ai/sdk-integrations/openai-agents-sdk.mdIntegrate OpenAI Agents SDK with Restate for fault-tolerant agent execution with automatic retries and durable state.
  • [claimed-docs] https://docs.restate.dev/tour/agentsBuild AI agents that survive crashes and recover automatically. Every LLM call, tool execution, and routing decision is durably persisted.
  • [claimed-docs] https://docs.restate.dev/use-cases/ai-agentsAutomatically retry transient errors like rate limits and network failures. Persist steps (LLM calls, tools) and recover previous progress after failures.
  • [community] https://news.ycombinator.com/item?id=40659160The cloud setup was super fast! I used it for an existing app + restate TS sdk, really took a few steps to get things up and running! Looking forward to more support for nextjs/node
  • [community] https://news.ycombinator.com/item?id=40659160Being fairly familiar with Temporal, I definitely appreciate your cleaner architectural choices. Add a Go SDK and I'll definitely give this a try.

Subscribe to events via webhooksweight 2

2 (weight) × 7 (quality) × 1.0 (full) = 14.0 of 20 max

  • [claimed-docs] https://docs.restate.dev/guides/durable-webhooks.mdRestate persists all incoming events, and ensures that they are processed exactly once, across failures and restarts... Let Restate deduplicate events on an idempotency key.
  • [claimed-docs] https://docs.restate.dev/guides/durable-webhooks.mdAny handler can be a durable webhook endpoint. No need to do anything special or extra!
  • [claimed-docs] https://docs.restate.dev/guides/durable-webhooks.mdRestate persists all incoming events, and ensures that they are processed exactly once, across failures and restarts.
  • [claimed-docs] https://docs.restate.dev/guides/durable-webhooks.mdRestate persists all incoming events, and ensures that they are **processed exactly once**, across failures and restarts.
  • [claimed-docs] https://docs.restate.devCoordinate long-running processes, human approvals, listen to webhooks and other signals.
  • [claimed-docs] https://docs.restate.dev/develop/ts/external-eventsRestate provides three durable coordination primitives for this: ... Communication between ongoing invocations, agent steering, and human approvals

Agent-ready = 114.8 ÷ 210 × 100 = 54.7

API quality10.3/100×0.20 of the PA blend

The programmable surface once an agent is there — machine-readable spec, interactive docs, sandbox, versioning discipline.

Explore an interactive API reference with runnable examplesweight 2

2 (weight) × 0 (quality) × 0.0 (none) = 0.0 of 20 max

  • [claimed-docs] https://docs.restate.dev/admin-api/service/get-service-openapi-definition.mdReturns the OpenAPI 3.1 specification for the service, describing all handlers and their request/response schemas.
  • [probe] https://docs.restate.dev/openapi.jsonPROBE openapi: all candidate paths 404 (https://docs.restate.dev/openapi.json, https://docs.restate.dev/swagger.json, https://docs.restate.dev/api/openapi.json, https://docs.restate.dev/.well-known/openapi.json)

Download a machine-readable API spec (OpenAPI or equivalent)weight 2

2 (weight) × 0 (quality) × 0.0 (none) = 0.0 of 20 max

  • [probe] https://docs.restate.dev/openapi.jsonPROBE openapi: all candidate paths 404 (https://docs.restate.dev/openapi.json, https://docs.restate.dev/swagger.json, https://docs.restate.dev/api/openapi.json, https://docs.restate.dev/.well-known/openapi.json)
  • [claimed-docs] https://docs.restate.dev/foundations/invocationsTo call a function over HTTP, send a request to the Restate Server, specifying the service and the function you want to invoke.
  • [claimed-docs] https://docs.restate.dev/services/introspectionRestate exposes information on invocations and application state via its CLI and Introspection SQL API.

Test against a sandbox environment without touching production dataweight 1

1 (weight) × 6 (quality) × 0.6 (partial) = 3.6 of 10 max

  • [claimed-docs] https://docs.restate.dev/develop/ts/testingThis uses [Testcontainers](https://testcontainers.com/) to run a Restate Server in a Docker container and let you test your Restate handlers.
  • [claimed-docs] https://docs.restate.dev/develop/ts/testingThe Typescript SDK has a companion library which makes it easy to test against a Restate container
  • [claimed-docs] https://docs.restate.dev/develop/ts/testingUtilities to test your handler logic.
  • [claimed-docs] https://docs.restate.dev/installationLearn how to set up your local Restate development environment.

Rely on versioned APIs with a documented deprecation policyweight 2

2 (weight) × 3 (quality) × 0.6 (partial) = 3.6 of 20 max

  • [claimed-docs] https://docs.restate.dev/services/versioningRestate then makes sure that requests start and end on the same version, by sending any retry attempts always to the same endpoint.
  • [claimed-docs] https://docs.restate.dev/services/versioningRestate helps via the concept of immutable deployments. When you deploy a version of your code, you giv
  • [claimed-docs] https://docs.restate.dev/changelog/typescript-sdk.mdThe new restate.iface lets you declare service interfaces, including input/output serdes, and use them to both implement the service and call it as a typed client.
  • [claimed-docs] https://docs.restate.dev/changelog/typescript-sdk.mdThe new `restate.iface` lets you declare service interfaces, including input/output serdes, and use them to both **implement** the service and **call** it as a typed client.
  • [claimed-docs] https://docs.restate.dev/changelog/rust-sdk.mdThe SDK now generates a typed `<Type>IngressClient` for every impl-block service, virtual object, and workflow.

API quality = 7.2 ÷ 70 × 100 = 10.3

Openness40.4/100×0.20 of the PA blend

Can you leave, inspect, or self-host — data export, open source, portability.

Do everything through the API that I can do in the UIweight 2

2 (weight) × 7 (quality) × 1.0 (full) = 14.0 of 20 max

  • [claimed-docs] https://docs.restate.dev/services/introspectionRestate exposes information on invocations and application state via its CLI and Introspection SQL API.
  • [claimed-docs] https://docs.restate.dev/foundations/invocationsTo call a function over HTTP, send a request to the Restate Server, specifying the service and the function you want to invoke.
  • [claimed-docs] https://docs.restate.dev/foundations/invocationsUse typed clients from external applications to invoke Restate handlers
  • [claimed-docs] https://docs.restate.dev/server/overviewRestate is distributed as a single binary that implements all features required to run a single- or multi-node cluster

Export all of my data in open formats and leaveweight 3

3 (weight) × 0 (quality) × 0.0 (none) = 0.0 of 30 max

  • [claimed-docs] https://docs.restate.dev/services/introspectionRestate exposes information on invocations and application state via its CLI and Introspection SQL API.
  • [claimed-docs] https://docs.restate.dev/references/cli-config.mdYou can use the CLI to interact with Restate, and manage your services, deployments and invocations.
  • [claimed-docs] https://docs.restate.dev/hosting/overviewYou can use Restate Cloud, run a managed Restate region in your cloud account with Restate BYOC, or operate Restate yourself.
  • [community] https://news.ycombinator.com/item?id=40659160Looks very interesting, but calling it Open Source is misleading. BSL is not "minimal Amazon defense". It effectively prevents any meaningful dynamic functionality to be built on top of it without a commercial subscription.

Read the product's source under an open licenseweight 2

2 (weight) × 4 (quality) × 0.3 (disputed) = 2.4 of 20 max

  • [github] https://github.com/restatedev/restateRestate provides a distributed durable version of your everyday building blocks, letting you build a wide range of use cases
  • [github] https://github.com/restatedev/restateRestate supports the following SDKs: * [Typescript] * [Java and Kotlin] * [Python] * [Go] * [Rust]
  • [community] https://news.ycombinator.com/item?id=40659160Looks very interesting, but calling it Open Source is misleading. BSL is not "minimal Amazon defense". It effectively prevents any meaningful dynamic functionality to be built on top of it without a commercial subscription.

Self-host the core productweight 3

3 (weight) × 8 (quality) × 1.0 (full) = 24.0 of 30 max

  • [claimed-docs] https://docs.restate.dev/concepts/durable_executionDeploy anywhere: Services run in your infrastructure as containers, serverless functions, VMs, or Kubernetes pods
  • [claimed-docs] https://docs.restate.dev/server/overviewRestate is distributed as a single binary that implements all features required to run a single- or multi-node cluster
  • [claimed-docs] https://docs.restate.dev/hosting/overviewYou can use Restate Cloud, run a managed Restate region in your cloud account with Restate BYOC, or operate Restate yourself.
  • [claimed-docs] https://docs.restate.dev/installationRestate is a single self-contained binary. No external dependencies needed.
  • [community] https://news.ycombinator.com/item?id=43294756the restate server does handle the durable execution journal / orchestration, while the user code runs in a separate process, we don't host the code ourselves at the moment, but it is really easy to deploy it wherever you wish and even deploy it on AWS lambda!
  • [community] https://news.ycombinator.com/item?id=40659160Looks very interesting, but calling it Open Source is misleading. BSL is not "minimal Amazon defense". It effectively prevents any meaningful dynamic functionality to be built on top of it without a commercial subscription.

Openness = 40.4 ÷ 100 × 100 = 40.4

Built-in AI20.0/100×0.15 of the PA blend

Inside-out: how agentic the product itself is for its users — built-in assistants, autonomous features.

Get AI-generated insights and suggestions from my data inside the productweight 2

n/a — not applicable to this product: excluded from numerator and denominator

no evidence cited — the verdict rests on absence of evidence, re-checked on refresh

Set up automations that run autonomously in the backgroundweight 2

2 (weight) × 7 (quality) × 1.0 (full) = 14.0 of 20 max

  • [claimed-docs] https://docs.restate.devSleep, schedule, and wait for external events with durable timers.
  • [claimed-docs] https://docs.restate.devCoordinate long-running processes, human approvals, listen to webhooks and other signals.
  • [claimed-docs] https://docs.restate.dev/use-cases/ai-agentsAutomatically retry transient errors like rate limits and network failures. Persist steps (LLM calls, tools) and recover previous progress after failures.
  • [claimed-docs] https://docs.restate.dev/use-cases/ai-agentsA few lines turn your agent into a durable agent.
  • [claimed-docs] https://docs.restate.dev/tour/agentsBuild AI agents that survive crashes and recover automatically. Every LLM call, tool execution, and routing decision is durably persisted.
  • [claimed-docs] https://docs.restate.dev/develop/ts/external-eventsRestate provides three durable coordination primitives for this: ... Communication between ongoing invocations, agent steering, and human approvals
  • [claimed-docs] https://docs.restate.dev/develop/ts/durable-timersIf your handler runs on function-as-a-service platforms like AWS Lambda, Restate suspends the handler while it is sleeping, to free up resources.

Delegate tasks to a built-in AI assistant inside the productweight 3

3 (weight) × 0 (quality) × 0.0 (none) = 0.0 of 30 max

  • [claimed-docs] https://docs.restate.dev/develop/ai-assistantThe Restate plugin teaches your coding agent how to build Restate apps: Durable Execution, service types, SDK APIs, common pitfalls, and AI agent integration patterns
  • [claimed-docs] https://docs.restate.dev/develop/ai-assistant.mdThe Restate plugin teaches your coding agent how to build Restate apps: Durable Execution, service types, SDK APIs, common pitfalls, and AI agent integration patterns across TypeScript, Python, Java, and Go.
  • [claimed-docs] https://docs.restate.dev/develop/ai-assistantThe Restate documentation and templates integrate with AI coding agents like Claude Code, Codex, and Cursor so you can get expert help while building Restate apps.

Operate the product with natural-language commandsweight 2

2 (weight) × 0 (quality) × 0.0 (none) = 0.0 of 20 max

no evidence cited — the verdict rests on absence of evidence, re-checked on refresh

Built-in AI = 14.0 ÷ 70 × 100 = 20.0

Automation25.5/100×0.15 of the PA blend

Depth of automation primitives — rules, scheduling, bulk operations, webhooks.

Perform bulk operations across many items at onceweight 2

2 (weight) × 0 (quality) × 0.0 (none) = 0.0 of 20 max

no evidence cited — the verdict rests on absence of evidence, re-checked on refresh

Define rules that trigger actions automatically on eventsweight 3

3 (weight) × 6 (quality) × 0.6 (partial) = 10.8 of 30 max

  • [claimed-docs] https://docs.restate.devSleep, schedule, and wait for external events with durable timers.
  • [claimed-docs] https://docs.restate.devCoordinate long-running processes, human approvals, listen to webhooks and other signals.
  • [claimed-docs] https://docs.restate.dev/develop/ts/external-eventsRestate provides three durable coordination primitives for this: ... Communication between ongoing invocations, agent steering, and human approvals
  • [claimed-docs] https://docs.restate.dev/guides/durable-webhooks.mdRestate persists all incoming events, and ensures that they are processed exactly once, across failures and restarts... Let Restate deduplicate events on an idempotency key.
  • [claimed-docs] https://docs.restate.dev/guides/durable-webhooks.mdAny handler can be a durable webhook endpoint. No need to do anything special or extra!
  • [claimed-docs] https://docs.restate.dev/ai/patterns/human-in-the-loop.mdAgents that pause for human approval and resume when it arrives, even across restarts and infrastructure changes.
  • [claimed-docs] https://docs.restate.dev/develop/ts/durable-timersRestate provides durable, fault-tolerant timers that allow you to: Sleep... Send delayed messages... Set timeouts... Implement patterns like cron jobs
  • [claimed-docs] https://docs.restate.dev/ai/patterns/notify-when-ready.mdBuild async notification systems for your agents with just a few lines of code.

Schedule recurring jobs or workflowsweight 2

2 (weight) × 5 (quality) × 0.6 (partial) = 6.0 of 20 max

  • [claimed-docs] https://docs.restate.devSleep, schedule, and wait for external events with durable timers.
  • [claimed-docs] https://docs.restate.dev/develop/ts/durable-timersIf your handler runs on function-as-a-service platforms like AWS Lambda, Restate suspends the handler while it is sleeping, to free up resources.
  • [claimed-docs] https://docs.restate.devCoordinate long-running processes, human approvals, listen to webhooks and other signals.
  • [claimed-docs] https://docs.restate.dev/develop/ts/external-eventsRestate provides three durable coordination primitives for this: ... Communication between ongoing invocations, agent steering, and human approvals

Version, review, and roll back my automationsweight 1

1 (weight) × 6 (quality) × 0.6 (partial) = 3.6 of 10 max

  • [claimed-docs] https://docs.restate.dev/services/versioningRestate then makes sure that requests start and end on the same version, by sending any retry attempts always to the same endpoint.
  • [claimed-docs] https://docs.restate.dev/services/versioningRestate helps via the concept of immutable deployments. When you deploy a version of your code, you giv
  • [claimed-docs] https://docs.restate.dev/ai/patterns/rollback.mdGuaranteed compensation: If the main workflow fails, compensation handlers are reliably executed
  • [claimed-docs] https://docs.restate.dev/ai/patterns/rollback.mdImplement compensation and rollback mechanisms for agents that need to undo partial work when failures occur.
  • [claimed-docs] https://docs.restate.dev/ai/patterns/observability-control.mdFull visibility into agent execution. Inspect journals, export traces, and cancel or kill stuck agents.
  • [claimed-docs] https://docs.restate.dev/ai/patterns/observability-control.mdInvocations list: See all running, suspended, and completed agent invocations

Automation = 20.4 ÷ 80 × 100 = 25.5