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/markdown“Fern 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-txt“Fern 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-txt“Fern implements this standard, automatically generating and maintaining an `llms.txt` Markdown file”
- [claimed-docs] https://buildwithfern.com/learn/docs/ai-features/agent-directives“To 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-analytics“The tab reports `llms.txt` usage including: Traffic by LLM provider (Claude, ChatGPT, Cursor, etc.)”
- [probe] https://buildwithfern.com/llms.txt“PROBE 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.md“PROBE 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.md“Generate a branded, idiomatic command-line interface from your OpenAPI spec.”
- [claimed-docs] https://buildwithfern.com/cli.md“Every command speaks JSON, so coding agents can pipe one call into the next.”
- [claimed-docs] https://buildwithfern.com/cli.md“Fern publishes signed binaries to Homebrew, npm, pnpm, Scoop, and a one-line curl installer on every release.”
- [claimed-docs] https://buildwithfern.com/learn/docs/changelog“You 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/changelog“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.”
- [probe] https://buildwithfern.com/learn/cli-api-reference/cli-reference/overview“official 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-server“Fern 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-servers“Register 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-server“The 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-server“official 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-server“Fern 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-servers“Register 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-server“The 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-servers“Fern 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-server“official 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/overview“The Fern CLI lets you initialize projects, validate API definitions, preview changes locally, and publish documentation and SDKs.”
- [claimed-docs] https://buildwithfern.com/cli.md“Every command speaks JSON, so coding agents can pipe one call into the next.”
- [claimed-docs] https://buildwithfern.com/cli.md“Fern 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/overview“official 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.json“PROBE openapi: HTTP 200 at https://buildwithfern.com/openapi.json — contains "openapi" key”
- [claimed-docs] https://buildwithfern.com/cli.md“Every command speaks JSON, so coding agents can pipe one call into the next.”
- [claimed-docs] https://buildwithfern.com/learn/cli-api-reference/cli-reference/overview“The Fern CLI lets you initialize projects, validate API definitions, preview changes locally, and publish documentation and SDKs.”
- [claimed-docs] https://buildwithfern.com/cli.md“Generate 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/fern“Type-safe SDKs in multiple languages, including TypeScript, Python, Java, Go, Ruby, PHP, and C#”
- [claimed-docs] https://buildwithfern.com/learn“Generate client libraries in multiple languages.”
- [claimed-docs] https://buildwithfern.com/sdks.md“Fern generates SDKs in 9 languages from a single API specification”
- [claimed-docs] https://buildwithfern.com/sdks.md“Pagination helpers. Cursor-based and offset-based pagination are first-class.”
- [claimed-docs] https://buildwithfern.com/post/openapi-generator-cli-vs-fern.md“Fern 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/40146505“Fern: 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/quickstart“Fern supports writing pages in Markdown and generating API Reference documentation from an OpenAPI specification.”
- [claimed-docs] https://buildwithfern.com/learn/docs/changelog“GraphQL 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.md“Fern generates SDKs in 9 languages from a single API specification”
- [github] https://github.com/fern-api/fern“Type-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/quickstart“Fern supports writing pages in Markdown and generating API Reference documentation from an OpenAPI specification.”
- [probe] https://buildwithfern.com/openapi.json“PROBE openapi: HTTP 200 at https://buildwithfern.com/openapi.json — contains "openapi" key”
- [claimed-docs] https://buildwithfern.com/post/openapi-generator-cli-vs-fern.md“Fern 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/versions“Versions 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/versions“Versions add a dropdown to your docs for multiple releases of the same content.”
- [claimed-docs] https://buildwithfern.com/learn/docs/configuration/versions“Add 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/overview“The Fern CLI lets you initialize projects, validate API definitions, preview changes locally, and publish documentation and SDKs.”
- [claimed-docs] https://buildwithfern.com/cli.md“Every command speaks JSON, so coding agents can pipe one call into the next.”
- [claimed-docs] https://buildwithfern.com/learn/docs/writing-content/fern-editor“Fern 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/overview“official 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/quickstart“Fern supports writing pages in Markdown and generating API Reference documentation from an OpenAPI specification.”
- [claimed-docs] https://buildwithfern.com/cli.md“Generate a branded, idiomatic command-line interface from your OpenAPI spec.”
- [claimed-docs] https://buildwithfern.com/post/openapi-generator-cli-vs-fern.md“Fern 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/40146505“Fern: 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/fern“Type-safe SDKs in multiple languages, including TypeScript, Python, Java, Go, Ruby, PHP, and C#”
- [community] https://hn.algolia.com/api/v1/items/40146505“Fern: 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/changelog“A 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/changelog“A self-hosted container can now resolve environment variables in the pages it serves, on each request.”
- [community] https://hn.algolia.com/api/v1/items/40146505“Fern: 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/fern“Type-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/changelog“You 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/changelog“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/ai-features/fern-agent“Fern 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/overview“Ask 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/changelog“You 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/changelog“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/ai-features/fern-agent“Fern Agent reads your docs site’s source repository and makes the changes you describe.”
- [claimed-docs] https://buildwithfern.com/post/building-fern-agent.md“Slack 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/changelog“You 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/changelog“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/ai-features/fern-agent“Fern Agent reads your docs site’s source repository and makes the changes you describe.”
- [claimed-docs] https://buildwithfern.com/post/fern-agent.md“Move the SDK guides under Reference and fix the links.”
- [claimed-docs] https://buildwithfern.com/post/building-fern-agent.md“Slack 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/changelog“You 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/changelog“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/ai-features/fern-agent“Fern Agent reads your docs site’s source repository and makes the changes you describe.”
- [claimed-docs] https://buildwithfern.com/post/fern-agent.md“Move the SDK guides under Reference and fix the links.”
- [claimed-docs] https://buildwithfern.com/post/building-fern-agent.md“Slack to kick off PRs based on internal team discussions or customer troubleshooting”
- [claimed-docs] https://buildwithfern.com/learn/docs/ai-features/ask-fern/overview“Ask 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.md“Every 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.md“Every command speaks JSON, so coding agents can pipe one call into the next.”
- [claimed-docs] https://buildwithfern.com/sdks.md“Fern generates SDKs in 9 languages from a single API specification”
- [claimed-docs] https://buildwithfern.com/learn/docs/changelog“You 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/changelog“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.”
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/changelog“You 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/changelog“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/post/building-fern-agent.md“Slack to kick off PRs based on internal team discussions or customer troubleshooting”
- [claimed-docs] https://buildwithfern.com/learn/docs/ai-features/fern-agent“Fern 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/changelog“You 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/changelog“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/ai-features/fern-agent“Fern 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/changelog“You 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/changelog“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/ai-features/fern-agent“Fern Agent reads your docs site’s source repository and makes the changes you describe.”
Automation = 22.8 ÷ 80 × 100 = 28.5