Skip to content

How Fern’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 Score43/100

Agent-ready 56.0 × 0.30 = 16.80

API quality 36.7 × 0.20 = 7.34

Openness 38.0 × 0.20 = 7.60

Built-in AI 47.3 × 0.15 = 7.09

Automation 28.5 × 0.15 = 4.27

(16.80 + 7.34 + 7.60 + 7.09 + 4.27) ÷ (0.30 + 0.20 + 0.20 + 0.15 + 0.15) = 43.11 ÷ 1.00 = 43.1

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-ready56.0/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

  • [claimed-docs] https://buildwithfern.com/learn/docs/ai-features/markdownFern serves clean Markdown for any documentation page so agents can consume your content efficiently. Agents fetch the source by appending `.md` or `.mdx` to a page URL
  • [claimed-docs] https://buildwithfern.com/learn/docs/ai-features/llms-txtFern implements this standard, automatically generating and maintaining an `llms.txt` Markdown file so AI tools can discover and index your documentation.
  • [claimed-docs] https://buildwithfern.com/learn/docs/ai-features/llms-txtFern implements this standard, automatically generating and maintaining an `llms.txt` Markdown file
  • [claimed-docs] https://buildwithfern.com/learn/docs/ai-features/agent-directivesTo override the default, set a custom directive using the `agents` key in `docs.yml`
  • [claimed-docs] https://buildwithfern.com/learn/docs/ai-features/llms-txt-analyticsThe tab reports `llms.txt` usage including: Traffic by LLM provider (Claude, ChatGPT, Cursor, etc.)
  • [probe] https://buildwithfern.com/llms.txtPROBE llms.txt: HTTP 200 at https://buildwithfern.com/llms.txt # Fern Documentation ## Instructions for AI Agents - For clean Markdown of any page, append `.md` to the page URL, or
  • [probe] https://buildwithfern.com/learn.mdPROBE docs-md: HTTP 404 at https://buildwithfern.com/learn.md

Run the product headlessly / in CI for automationweight 2

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

  • [claimed-docs] https://buildwithfern.com/cli.mdGenerate a branded, idiomatic command-line interface from your OpenAPI spec.
  • [claimed-docs] https://buildwithfern.com/cli.mdEvery command speaks JSON, so coding agents can pipe one call into the next.
  • [claimed-docs] https://buildwithfern.com/cli.mdFern publishes signed binaries to Homebrew, npm, pnpm, Scoop, and a one-line curl installer on every release.
  • [claimed-docs] https://buildwithfern.com/learn/docs/changelogYou can now put Fern Agent on a schedule... Automations can review your reader feedback, unanswered Ask Fern questions, search queries, or analytics, report back what it found, and open a pull request when the prompt asks for a change.
  • [claimed-docs] https://buildwithfern.com/learn/docs/changelogAutomations can review your reader feedback, unanswered Ask Fern questions, search queries, or analytics, report back what it found, and open a pull request when the prompt asks for a change.
  • [probe] https://buildwithfern.com/learn/cli-api-reference/cli-reference/overviewofficial CLI documented at https://buildwithfern.com/learn/cli-api-reference/cli-reference/overview

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

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

  • [claimed-docs] https://buildwithfern.com/learn/docs/ai-features/mcp-serverFern automatically generates and hosts a production-ready Model Context Protocol (MCP) server for every documentation site with Ask Fern enabled.
  • [claimed-docs] https://buildwithfern.com/learn/docs/ai-features/fern-mcp-serversRegister it with your coding agent to look up `docs.yml` syntax, components, and CLI commands while you build, and to read your sites, deployments, and reader activity without leaving your terminal.
  • [claimed-docs] https://buildwithfern.com/learn/docs/ai-features/mcp-serverThe server connects AI clients like Claude Code, Cursor, and Windsurf to your documentation as an external data source, so your readers can get instant answers about your product directly within their development environment.
  • [probe] https://buildwithfern.com/learn/docs/ai-features/mcp-serverofficial MCP server documented at https://buildwithfern.com/learn/docs/ai-features/mcp-server

Connect an agent via an official MCP serverweight 3

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

  • [claimed-docs] https://buildwithfern.com/learn/docs/ai-features/mcp-serverFern automatically generates and hosts a production-ready Model Context Protocol (MCP) server for every documentation site with Ask Fern enabled.
  • [claimed-docs] https://buildwithfern.com/learn/docs/ai-features/fern-mcp-serversRegister it with your coding agent to look up `docs.yml` syntax, components, and CLI commands while you build, and to read your sites, deployments, and reader activity without leaving your terminal.
  • [claimed-docs] https://buildwithfern.com/learn/docs/ai-features/mcp-serverThe server connects AI clients like Claude Code, Cursor, and Windsurf to your documentation as an external data source, so your readers can get instant answers about your product directly within their development environment.
  • [claimed-docs] https://buildwithfern.com/learn/docs/ai-features/fern-mcp-serversFern hosts a private Model Context Protocol (MCP) server for your organization, with full context on Fern’s documentation and configuration
  • [probe] https://buildwithfern.com/learn/docs/ai-features/mcp-serverofficial MCP server documented at https://buildwithfern.com/learn/docs/ai-features/mcp-server

Use an official CLIweight 2

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

  • [claimed-docs] https://buildwithfern.com/learn/cli-api-reference/cli-reference/overviewThe Fern CLI lets you initialize projects, validate API definitions, preview changes locally, and publish documentation and SDKs.
  • [claimed-docs] https://buildwithfern.com/cli.mdEvery command speaks JSON, so coding agents can pipe one call into the next.
  • [claimed-docs] https://buildwithfern.com/cli.mdFern publishes signed binaries to Homebrew, npm, pnpm, Scoop, and a one-line curl installer on every release.
  • [probe] https://buildwithfern.com/learn/cli-api-reference/cli-reference/overviewofficial CLI documented at https://buildwithfern.com/learn/cli-api-reference/cli-reference/overview

Drive the product through a documented public APIweight 3

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

  • [probe] https://buildwithfern.com/openapi.jsonPROBE openapi: HTTP 200 at https://buildwithfern.com/openapi.json — contains "openapi" key
  • [claimed-docs] https://buildwithfern.com/cli.mdEvery command speaks JSON, so coding agents can pipe one call into the next.
  • [claimed-docs] https://buildwithfern.com/learn/cli-api-reference/cli-reference/overviewThe Fern CLI lets you initialize projects, validate API definitions, preview changes locally, and publish documentation and SDKs.
  • [claimed-docs] https://buildwithfern.com/cli.mdGenerate a branded, idiomatic command-line interface from your OpenAPI spec.

Issue scoped/least-privilege API credentials for an agentweight 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

Build against official SDKsweight 2

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

  • [github] https://github.com/fern-api/fernType-safe SDKs in multiple languages, including TypeScript, Python, Java, Go, Ruby, PHP, and C#
  • [claimed-docs] https://buildwithfern.com/learnGenerate client libraries in multiple languages.
  • [claimed-docs] https://buildwithfern.com/sdks.mdFern generates SDKs in 9 languages from a single API specification
  • [claimed-docs] https://buildwithfern.com/sdks.mdPagination helpers. Cursor-based and offset-based pagination are first-class.
  • [claimed-docs] https://buildwithfern.com/post/openapi-generator-cli-vs-fern.mdFern is an SDK generator and documentation platform that produces idiomatic, type-safe client libraries in nine languages and ke
  • [community] https://hn.algolia.com/api/v1/items/40146505Fern: Notable for being open-source, though not free. It provides a robust end-to-end Developer Experience, covering everything from SDKs and documentation to Postman collections. Fern uses an internal "Fern Definition" language (~ think Smithy); it's optional and enables merging multiple specs, but adds another layer to navigate in our view.

Subscribe to events via webhooksweight 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

Agent-ready = 100.8 ÷ 180 × 100 = 56.0

API quality36.7/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) × 5 (quality) × 0.6 (partial) = 6.0 of 20 max

  • [claimed-docs] https://buildwithfern.com/learn/docs/getting-started/quickstartFern supports writing pages in Markdown and generating API Reference documentation from an OpenAPI specification.
  • [claimed-docs] https://buildwithfern.com/learn/docs/changelogGraphQL API References now include a page for every named type in your schema, collected under a `Types` section at the API Reference root and grouped by kind: Objects, Inputs, Enums, Scalars, Interfaces, and Unions.
  • [claimed-docs] https://buildwithfern.com/sdks.mdFern generates SDKs in 9 languages from a single API specification
  • [github] https://github.com/fern-api/fernType-safe SDKs in multiple languages, including TypeScript, Python, Java, Go, Ruby, PHP, and C#

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

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

  • [claimed-docs] https://buildwithfern.com/learn/docs/getting-started/quickstartFern supports writing pages in Markdown and generating API Reference documentation from an OpenAPI specification.
  • [probe] https://buildwithfern.com/openapi.jsonPROBE openapi: HTTP 200 at https://buildwithfern.com/openapi.json — contains "openapi" key
  • [claimed-docs] https://buildwithfern.com/post/openapi-generator-cli-vs-fern.mdFern is an SDK generator and documentation platform that produces idiomatic, type-safe client libraries in nine languages and ke

Test against a sandbox environment without touching production dataweight 1

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

Rely on versioned APIs with a documented deprecation policyweight 2

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

  • [claimed-docs] https://buildwithfern.com/learn/docs/configuration/versionsVersions add a dropdown to your docs for multiple releases of the same content. Each version can contain its own tabs, sections, pages, and API references, and versions can share content.
  • [claimed-docs] https://buildwithfern.com/learn/docs/configuration/versionsVersions add a dropdown to your docs for multiple releases of the same content.
  • [claimed-docs] https://buildwithfern.com/learn/docs/configuration/versionsAdd a dropdown version selector for multiple

API quality = 22.0 ÷ 60 × 100 = 36.7

Openness38.0/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) × 5 (quality) × 0.6 (partial) = 6.0 of 20 max

  • [claimed-docs] https://buildwithfern.com/learn/cli-api-reference/cli-reference/overviewThe Fern CLI lets you initialize projects, validate API definitions, preview changes locally, and publish documentation and SDKs.
  • [claimed-docs] https://buildwithfern.com/cli.mdEvery command speaks JSON, so coding agents can pipe one call into the next.
  • [claimed-docs] https://buildwithfern.com/learn/docs/writing-content/fern-editorFern Editor lets team members such as content writers, product managers, and marketers update documentation without code, markdown, or Git.
  • [probe] https://buildwithfern.com/learn/cli-api-reference/cli-reference/overviewofficial CLI documented at https://buildwithfern.com/learn/cli-api-reference/cli-reference/overview

Export all of my data in open formats and leaveweight 3

3 (weight) × 5 (quality) × 0.6 (partial) = 9.0 of 30 max

  • [claimed-docs] https://buildwithfern.com/learn/docs/getting-started/quickstartFern supports writing pages in Markdown and generating API Reference documentation from an OpenAPI specification.
  • [claimed-docs] https://buildwithfern.com/cli.mdGenerate a branded, idiomatic command-line interface from your OpenAPI spec.
  • [claimed-docs] https://buildwithfern.com/post/openapi-generator-cli-vs-fern.mdFern is an SDK generator and documentation platform that produces idiomatic, type-safe client libraries in nine languages and ke
  • [community] https://hn.algolia.com/api/v1/items/40146505Fern: Notable for being open-source, though not free. It provides a robust end-to-end Developer Experience, covering everything from SDKs and documentation to Postman collections. Fern uses an internal "Fern Definition" language (~ think Smithy); it's optional and enables merging multiple specs, but adds another layer to navigate in our view.

Read the product's source under an open licenseweight 2

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

  • [github] https://github.com/fern-api/fernType-safe SDKs in multiple languages, including TypeScript, Python, Java, Go, Ruby, PHP, and C#
  • [community] https://hn.algolia.com/api/v1/items/40146505Fern: Notable for being open-source, though not free. It provides a robust end-to-end Developer Experience, covering everything from SDKs and documentation to Postman collections. Fern uses an internal "Fern Definition" language (~ think Smithy); it's optional and enables merging multiple specs, but adds another layer to navigate in our view.

Self-host the core productweight 3

3 (weight) × 5 (quality) × 0.6 (partial) = 9.0 of 30 max

  • [claimed-docs] https://buildwithfern.com/learn/docs/changelogA self-hosted container can now resolve environment variables in the pages it serves, on each request... so one image serves deployments that differ only in those values.
  • [claimed-docs] https://buildwithfern.com/learn/docs/changelogA self-hosted container can now resolve environment variables in the pages it serves, on each request.
  • [community] https://hn.algolia.com/api/v1/items/40146505Fern: Notable for being open-source, though not free. It provides a robust end-to-end Developer Experience, covering everything from SDKs and documentation to Postman collections. Fern uses an internal "Fern Definition" language (~ think Smithy); it's optional and enables merging multiple specs, but adds another layer to navigate in our view.
  • [github] https://github.com/fern-api/fernType-safe SDKs in multiple languages, including TypeScript, Python, Java, Go, Ruby, PHP, and C#

Openness = 38.0 ÷ 100 × 100 = 38.0

Built-in AI47.3/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

2 (weight) × 6 (quality) × 0.6 (partial) = 7.2 of 20 max

  • [claimed-docs] https://buildwithfern.com/learn/docs/changelogYou can now put Fern Agent on a schedule... Automations can review your reader feedback, unanswered Ask Fern questions, search queries, or analytics, report back what it found, and open a pull request when the prompt asks for a change.
  • [claimed-docs] https://buildwithfern.com/learn/docs/changelogAutomations can review your reader feedback, unanswered Ask Fern questions, search queries, or analytics, report back what it found, and open a pull request when the prompt asks for a change.
  • [claimed-docs] https://buildwithfern.com/learn/docs/ai-features/fern-agentFern Agent reads your docs site’s source repository and makes the changes you describe.
  • [claimed-docs] https://buildwithfern.com/learn/docs/ai-features/ask-fern/overviewAsk Fern indexes your documentation and provides an interface for your end users to ask questions and get answers. Responses include citations that link directly to source pages.

Set up automations that run autonomously in the backgroundweight 2

2 (weight) × 6 (quality) × 0.6 (partial) = 7.2 of 20 max

  • [claimed-docs] https://buildwithfern.com/learn/docs/changelogYou can now put Fern Agent on a schedule... Automations can review your reader feedback, unanswered Ask Fern questions, search queries, or analytics, report back what it found, and open a pull request when the prompt asks for a change.
  • [claimed-docs] https://buildwithfern.com/learn/docs/changelogAutomations can review your reader feedback, unanswered Ask Fern questions, search queries, or analytics, report back what it found, and open a pull request when the prompt asks for a change.
  • [claimed-docs] https://buildwithfern.com/learn/docs/ai-features/fern-agentFern Agent reads your docs site’s source repository and makes the changes you describe.
  • [claimed-docs] https://buildwithfern.com/post/building-fern-agent.mdSlack to kick off PRs based on internal team discussions or customer troubleshooting

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

3 (weight) × 7 (quality) × 1.0 (full) = 21.0 of 30 max

  • [claimed-docs] https://buildwithfern.com/learn/docs/changelogYou can now put Fern Agent on a schedule... Automations can review your reader feedback, unanswered Ask Fern questions, search queries, or analytics, report back what it found, and open a pull request when the prompt asks for a change.
  • [claimed-docs] https://buildwithfern.com/learn/docs/changelogAutomations can review your reader feedback, unanswered Ask Fern questions, search queries, or analytics, report back what it found, and open a pull request when the prompt asks for a change.
  • [claimed-docs] https://buildwithfern.com/learn/docs/ai-features/fern-agentFern Agent reads your docs site’s source repository and makes the changes you describe.
  • [claimed-docs] https://buildwithfern.com/post/fern-agent.mdMove the SDK guides under Reference and fix the links.
  • [claimed-docs] https://buildwithfern.com/post/building-fern-agent.mdSlack to kick off PRs based on internal team discussions or customer troubleshooting

Operate the product with natural-language commandsweight 2

2 (weight) × 6 (quality) × 0.6 (partial) = 7.2 of 20 max

  • [claimed-docs] https://buildwithfern.com/learn/docs/changelogYou can now put Fern Agent on a schedule... Automations can review your reader feedback, unanswered Ask Fern questions, search queries, or analytics, report back what it found, and open a pull request when the prompt asks for a change.
  • [claimed-docs] https://buildwithfern.com/learn/docs/changelogAutomations can review your reader feedback, unanswered Ask Fern questions, search queries, or analytics, report back what it found, and open a pull request when the prompt asks for a change.
  • [claimed-docs] https://buildwithfern.com/learn/docs/ai-features/fern-agentFern Agent reads your docs site’s source repository and makes the changes you describe.
  • [claimed-docs] https://buildwithfern.com/post/fern-agent.mdMove the SDK guides under Reference and fix the links.
  • [claimed-docs] https://buildwithfern.com/post/building-fern-agent.mdSlack to kick off PRs based on internal team discussions or customer troubleshooting
  • [claimed-docs] https://buildwithfern.com/learn/docs/ai-features/ask-fern/overviewAsk Fern indexes your documentation and provides an interface for your end users to ask questions and get answers. Responses include citations that link directly to source pages.
  • [claimed-docs] https://buildwithfern.com/cli.mdEvery command speaks JSON, so coding agents can pipe one call into the next.

Built-in AI = 42.6 ÷ 90 × 100 = 47.3

Automation28.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) × 4 (quality) × 0.6 (partial) = 4.8 of 20 max

  • [claimed-docs] https://buildwithfern.com/cli.mdEvery command speaks JSON, so coding agents can pipe one call into the next.
  • [claimed-docs] https://buildwithfern.com/sdks.mdFern generates SDKs in 9 languages from a single API specification
  • [claimed-docs] https://buildwithfern.com/learn/docs/changelogYou can now put Fern Agent on a schedule... Automations can review your reader feedback, unanswered Ask Fern questions, search queries, or analytics, report back what it found, and open a pull request when the prompt asks for a change.
  • [claimed-docs] https://buildwithfern.com/learn/docs/changelogAutomations can review your reader feedback, unanswered Ask Fern questions, search queries, or analytics, report back what it found, and open a pull request when the prompt asks for a change.

Define rules that trigger actions automatically on eventsweight 3

3 (weight) × 5 (quality) × 0.6 (partial) = 9.0 of 30 max

  • [claimed-docs] https://buildwithfern.com/learn/docs/changelogYou can now put Fern Agent on a schedule... Automations can review your reader feedback, unanswered Ask Fern questions, search queries, or analytics, report back what it found, and open a pull request when the prompt asks for a change.
  • [claimed-docs] https://buildwithfern.com/learn/docs/changelogAutomations can review your reader feedback, unanswered Ask Fern questions, search queries, or analytics, report back what it found, and open a pull request when the prompt asks for a change.
  • [claimed-docs] https://buildwithfern.com/post/building-fern-agent.mdSlack to kick off PRs based on internal team discussions or customer troubleshooting
  • [claimed-docs] https://buildwithfern.com/learn/docs/ai-features/fern-agentFern Agent reads your docs site’s source repository and makes the changes you describe.

Schedule recurring jobs or workflowsweight 2

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

  • [claimed-docs] https://buildwithfern.com/learn/docs/changelogYou can now put Fern Agent on a schedule... Automations can review your reader feedback, unanswered Ask Fern questions, search queries, or analytics, report back what it found, and open a pull request when the prompt asks for a change.
  • [claimed-docs] https://buildwithfern.com/learn/docs/changelogAutomations can review your reader feedback, unanswered Ask Fern questions, search queries, or analytics, report back what it found, and open a pull request when the prompt asks for a change.
  • [claimed-docs] https://buildwithfern.com/learn/docs/ai-features/fern-agentFern Agent reads your docs site’s source repository and makes the changes you describe.

Version, review, and roll back my automationsweight 1

1 (weight) × 5 (quality) × 0.6 (partial) = 3.0 of 10 max

  • [claimed-docs] https://buildwithfern.com/learn/docs/changelogYou can now put Fern Agent on a schedule... Automations can review your reader feedback, unanswered Ask Fern questions, search queries, or analytics, report back what it found, and open a pull request when the prompt asks for a change.
  • [claimed-docs] https://buildwithfern.com/learn/docs/changelogAutomations can review your reader feedback, unanswered Ask Fern questions, search queries, or analytics, report back what it found, and open a pull request when the prompt asks for a change.
  • [claimed-docs] https://buildwithfern.com/learn/docs/ai-features/fern-agentFern Agent reads your docs site’s source repository and makes the changes you describe.

Automation = 22.8 ÷ 80 × 100 = 28.5