# Vendor facets — Speakeasy. Generates SDKs, Terraform providers, CLIs and MCP servers from an # OpenAPI, and hosts MCP servers through Gram. The headline: its lift is SDK and CLI pointers plus # one rubric-visible contract artifact, the OpenAPI Overlay that carries its code samples. It # publishes no docs site of its own, and its linter reports gaps without fixing them. vendor: speakeasy name: Speakeasy website: https://www.speakeasy.com areas: - sdk-generation registry_keys: [] rubric_schema_version: 0.22.0 generated: '2026-09-25' features_refreshed: '2026-09-25' basis: capability summary: >- Speakeasy moves Developer Ergonomics through SDKs in seven languages and a generated Go CLI, and each counts only once the provider declares it in apis.yml. It is one of the few vendors whose output is an OpenAPI Overlay (the x-codeSamples code-samples overlay), which scores overlay_published if the provider publishes it. Those code samples are SDK snippets, not request/response examples, so they earn nothing on examples_present and only the link fallback on openapi_examples. Its MCP servers, Terraform providers and retry logic look like the customer's own work, so the customer surface carries almost no Speakeasy fingerprint. features: - id: sdk-generation name: SDK generation description: >- Idiomatic SDKs for TypeScript, Python, Go, Java, C#, PHP and Ruby (Rust and C++ listed as coming soon). source: https://www.speakeasy.com/docs tier: paid - id: sdk-retries name: SDK retries driven by x-speakeasy-retries description: >- Backoff retries configured in the OpenAPI. When an endpoint already defines an idempotency header, retries reuse the same key. source: https://www.speakeasy.com/docs/sdks/customize/runtime/retries tier: all - id: code-samples-overlay name: Code samples delivered as an OpenAPI Overlay description: >- Generates x-codeSamples usage snippets for every operation as an Overlay document (code-samples.yaml) that docs platforms such as Scalar, Mintlify, ReadMe and Redocly render. source: https://www.speakeasy.com/docs/sdks/sdk-docs/code-samples/generate-code-samples tier: all - id: code-samples-api name: Code Samples API description: An authenticated API that serves generated snippets. Enterprise only. source: https://www.speakeasy.com/docs/sdks/sdk-docs/code-samples/code-samples-api tier: enterprise - id: sdk-docs-embedding name: SDK snippets embedded in partner docs description: >- Speakeasy does not host an API reference. It adds snippets to the spec for a third-party docs platform to render. source: https://www.speakeasy.com/blog/release-sdk-docs tier: all - id: cli-generation name: CLI generation description: >- A Go (Cobra) CLI that wraps the generated Go SDK, with GoReleaser configs and install scripts, and an agent mode that ships llms.txt and a skills.md for the CLI. source: https://www.speakeasy.com/blog/release-cli-generation tier: unknown - id: mcp-generation name: Standalone MCP server generation description: >- A TypeScript MCP server generated from the OpenAPI, distributed as an npm package, an MCPB bundle or a Cloudflare Worker config. source: https://www.speakeasy.com/docs/standalone-mcp/build-server tier: all - id: gram-hosting name: Gram hosted MCP servers description: >- Hosts MCP toolsets generated from an uploaded OpenAPI, with a custom slug and, on request to support, a custom domain. source: https://www.speakeasy.com/docs/gram/host-mcp/deploy-mcp-server tier: paid - id: terraform-generation name: Terraform provider generation description: Generates a Terraform provider from x-speakeasy-entity annotated OpenAPI operations. source: https://www.speakeasy.com/docs/terraform/create-terraform tier: paid - id: openapi-linter name: OpenAPI linter description: >- 90+ rules in five rulesets (speakeasy-recommended, speakeasy-generation, speakeasy-openapi, openapi-standard, owasp), configured in .speakeasy/lint.yaml. It reports issues and does not fix them. source: https://www.speakeasy.com/docs/sdks/prep-openapi/linting tier: all - id: speakeasy-skills name: Speakeasy Agent Skills description: >- 21 skills that teach coding agents to use Speakeasy (specs, SDKs, Terraform). They are not generated for the customer's API. source: https://www.speakeasy.com/docs/speakeasy-reference/skills/ tier: open-source maps: - feature: sdk-generation check: sdk_count_1 layer: composite provider_must: Publish a generated SDK and declare it as an SDK entry in apis.yml. catalog_pass_rate: 0.148 facet: developer_ergonomics points: 3 baseline_pass_rate: 0.413 - feature: sdk-generation check: sdk_count_3 layer: composite provider_must: Publish three or more language SDKs and declare each as its own SDK entry. catalog_pass_rate: 0.018 facet: developer_ergonomics points: 4 baseline_pass_rate: 0.043 - feature: cli-generation check: cli_present layer: composite provider_must: Release the generated CLI and declare it as a CLI entry. note: CLI generation is early-stage (alpha in the docs nav, beta in its own docs page). catalog_pass_rate: 0.063 facet: developer_ergonomics points: 3 baseline_pass_rate: 0.19 - feature: code-samples-overlay check: overlay_published layer: composite provider_must: >- Publish the code-samples Overlay document where the catalog harvests overlays/. By default it sits in the Speakeasy registry and the provider's workflow, not on the provider's public surface. catalog_pass_rate: 0.0 facet: contract_governance points: 4 baseline_pass_rate: 0.0 - feature: code-samples-overlay check: examples_published layer: composite provider_must: Declare the page or repository carrying the generated snippets as a CodeSamples entry. catalog_pass_rate: 0.052 facet: contract_quality points: 4 baseline_pass_rate: 0.127 - feature: code-samples-overlay check: openapi_examples layer: agent_readiness grade: documented partial: true partial_note: >- x-codeSamples are SDK usage snippets, not request/response examples. The dimension reads examples first, so Speakeasy reaches only the Code Samples link fallback (0.25). points: 7 baseline_pass_rate: 0.36 - feature: cli-generation check: agent_skills layer: agent_readiness credit: 0.25 provider_must: Generate a CLI and publish its skills file where the catalog can find it. note: >- The skills.md is generated from the CLI's commands, not written by the provider, so it is the derived class. points: 5 baseline_pass_rate: 0.236 - feature: mcp-generation check: mcp_server layer: agent_readiness grade: documented provider_must: >- Publish and declare the server. An npm or MCPB package run locally cannot be probed. Reaching `verified` means deploying it on a host the provider operates (a Cloudflare Worker, or Gram on a custom domain). note: >- Tools are generated per operation from the provider's own OpenAPI, so their shape should not cluster with other customers' as `platform`. A Gram server left on Gram's default URL is not on the provider's surface. points: 12 baseline_pass_rate: 0.22 - feature: openapi-linter check: operations_summary_coverage layer: composite conditional: true condition: The linter reports missing summaries. The provider has to write them and republish. catalog_pass_rate: 0.879 facet: contract_quality points: 6 baseline_pass_rate: 0.933 saturated: true saturated_note: >- 93% of providers with a contract, docs and a reference already earn this; the vendor cannot move it for most of its buyers. - feature: openapi-linter check: operations_operation_ids layer: composite conditional: true condition: >- Only when the provider fixes what the generation ruleset flags and publishes that contract. The linter does not rewrite the document. catalog_pass_rate: 0.827 facet: contract_quality points: 4 baseline_pass_rate: 0.918 saturated: true saturated_note: >- 92% of providers with a contract, docs and a reference already earn this; the vendor cannot move it for most of its buyers. - feature: openapi-linter check: error_responses_documented layer: composite conditional: true condition: Only if the API really returns documented 4xx bodies. Linting cannot invent an error schema. catalog_pass_rate: 0.367 facet: contract_quality points: 4 baseline_pass_rate: 0.621 - feature: openapi-linter check: credentials_not_in_query layer: composite conditional: true condition: >- The owasp ruleset flags query-string credentials. Clearing it means changing how the API authenticates, not the document. catalog_pass_rate: 0.845 facet: contract_quality points: 3 baseline_pass_rate: 0.891 earns_nothing: - feature: code-samples-overlay check: examples_present why: x-codeSamples are SDK snippets. The check counts request or response examples on operations. - feature: sdk-retries check: idempotency layer: agent_readiness why: >- Retries reuse an idempotency header only when the contract already declares one. The SDK never adds one. - feature: speakeasy-skills check: agent_skill_present why: The skills teach an agent to use Speakeasy. They describe nothing on the customer's API. - feature: openapi-linter check: rules_present why: >- A .speakeasy/lint.yaml is private workflow configuration. The check reads a ruleset the provider publishes. out_of_reach: checks: - portal_present - documentation_present - api_reference_present - llms_txt_published - change_log_present - status_page_present - rate_limits_documented - well_known_published - auth_clarity note: >- Speakeasy hosts no docs site; it feeds snippets to Scalar, Mintlify, ReadMe or Redocly. The llms.txt it generates belongs to a generated CLI, not to the provider's docs root. unscored_practice: - feature: terraform-generation why: A Terraform provider is a real, deployed integration surface that no check reads. - feature: gram-hosting why: >- Gram's AI control plane (policy and identity for agents and MCP) governs consumption, not the provider's published surface. - feature: sdk-retries why: The x-speakeasy-retries extension records retry behaviour in the OpenAPI, and no check reads it. surface: contract_quality: reachable: 21.0 total: 211 contract_governance: reachable: 4.0 total: 33 developer_ergonomics: reachable: 10.0 total: 42 agent_readiness: reachable: 7.8 total: 139 hard_rule: >- A model, not a score. Adopting this vendor changes a provider's Kin Score only when the provider publishes the resulting artifacts on its own surface; nothing here writes a score, and no sponsorship or partnership can. method: searched source: - https://www.speakeasy.com/blog/release-cli-generation - https://www.speakeasy.com/blog/release-sdk-docs - https://www.speakeasy.com/docs - https://www.speakeasy.com/docs/gram/host-mcp/deploy-mcp-server - https://www.speakeasy.com/docs/sdks/customize/runtime/retries - https://www.speakeasy.com/docs/sdks/prep-openapi/linting - https://www.speakeasy.com/docs/sdks/sdk-docs/code-samples/code-samples-api - https://www.speakeasy.com/docs/sdks/sdk-docs/code-samples/generate-code-samples - https://www.speakeasy.com/docs/speakeasy-reference/skills/ - https://www.speakeasy.com/docs/standalone-mcp/build-server - https://www.speakeasy.com/docs/terraform/create-terraform measured: cohort: method: vendors-catalog.json detections (CNAME / header / URL shape / markup), never a name match detected: 0 in_baseline: 0 control: basis: providers earning contract_present + documentation_present + api_reference_present, minus the cohort n: 5216 metric: >- cohort_pct / control_pct = mean share of the check's points earned (derived and platform credit weighted), x100 measured_on: '2026-09-25' status: 'not measurable: 0 detected customers clear the baseline (need 20)' simulation: simulated_on: '2026-09-25' rubric: 0.23.0 population: providers publishing a contract (contract_present earned), replayable exactly providers: 8977 providers_unreplayable: 987 providers_moved: 8976 conditional_rows: excluded (they depend on what the API already does) composite_lift: median: 6.9 p75: 6.9 p90: 6.9 max: 7.6 mean_among_movers: 6.1 agent_readiness_lift: median: 4.4 p75: 5.6 p90: 5.6 max: 6.5 mean_among_movers: 4.3 facet_lift_median_among_movers: contract_quality: 2.7 contract_governance: 12.1 developer_ergonomics: 23.8 composite_band_moves: thin -> developing: 2016 developing -> strong: 1224 strong -> exemplar: 400 emerging -> thin: 361 minimal -> emerging: 3 agent_readiness_band_moves: agent-aware -> agent-ready: 1950 agent-ready -> agent-native: 151 method: >- each provider's own kin/checks file, the vendor's maps at their stated credit, the scorer's composite formula; from -> to, nothing written