Yoast SEO Abilities API

Yoast SEO registers its content-analysis results as WordPress Abilities (the Abilities API introduced in WordPress 6.9), making them discoverable and executable over the WordPress REST API by AI agents and third-party systems. Three read-only abilities — yoast-seo/get-seo-scores, yoast-seo/get-readability-scores and yoast-seo/get-inclusive-language-scores — return the analysis scores of the most recently modified posts.

Operations 4

GET /wp-abilities/v1/abilities List registered abilities #
GET /wp-abilities/v1/abilities/yoast-seo/get-seo-scores/run Run the SEO analysis score ability #
GET /wp-abilities/v1/abilities/yoast-seo/get-readability-scores/run Run the readability analysis score ability #
GET /wp-abilities/v1/abilities/yoast-seo/get-inclusive-language-scores/run Run the inclusive language analysis score ability #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/yoast-abilities-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

yoast-abilities-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Yoast SEO Abilities API
  description: Yoast SEO registers its content-analysis results as WordPress Abilities (the Abilities API introduced in WordPress 6.9), which makes them discoverable and executable over the WordPress REST API by AI agents and third-party systems. Yoast currently registers three read-only abilities that return the SEO, readability and inclusive-language analysis scores of the most recently modified posts. Requires WordPress 6.9+ with Yoast indexables enabled and fully built.
  version: '1.0'
  contact:
    name: Yoast Developer Portal
    url: https://developer.yoast.com/features/yoast-seo-abilities/overview/
  license:
    name: GPL-3.0
    url: https://www.gnu.org/licenses/gpl-3.0.html
  x-api-evangelist-provenance:
    method: derived
    source: https://developer.yoast.com/features/yoast-seo-abilities/analysis-scores/
    note: Paths, ability identifiers (yoast-seo/get-seo-scores, yoast-seo/get-readability-scores, yoast-seo/get-inclusive-language-scores), the number_of_posts input (integer, 1-100, default 10) and the title/score/label/ focus_keyphrase output fields are all quoted from Yoast's own developer portal. Nothing was invented; where Yoast does not publish a detail (e.g. the required WordPress capability) it is recorded as unknown rather than guessed.
    fetched: '2026-08-13'
servers:
- url: https://{site}/wp-json
  description: The customer's own WordPress installation. Yoast ships plugin code, not a hosted gateway, so the host is the WordPress site running Yoast SEO.
  variables:
    site:
      default: example.com
      description: Your WordPress site domain
tags:
- name: Abilities
  description: Discovery and execution of Yoast SEO analysis-score abilities
paths:
  /wp-abilities/v1/abilities:
    get:
      operationId: listAbilities
      summary: List registered abilities
      description: The WordPress Abilities API central discovery endpoint. Any client can list everything registered on the site. Pass category=yoast-seo to list only the abilities Yoast SEO registers.
      tags:
      - Abilities
      parameters:
      - name: category
        in: query
        required: false
        description: Filter abilities by category; use "yoast-seo" for Yoast's abilities.
        schema:
          type: string
          example: yoast-seo
      responses:
        '200':
          description: The abilities registered on this site
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Ability'
  /wp-abilities/v1/abilities/yoast-seo/get-seo-scores/run:
    get:
      operationId: runGetSeoScores
      summary: Run the SEO analysis score ability
      description: Returns the SEO analysis score of the most recently modified posts. This is the only one of the three abilities that also returns the focus keyphrase.
      tags:
      - Abilities
      parameters:
      - $ref: '#/components/parameters/NumberOfPosts'
      responses:
        '200':
          description: SEO analysis scores for the most recently modified posts
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/SeoScore'
  /wp-abilities/v1/abilities/yoast-seo/get-readability-scores/run:
    get:
      operationId: runGetReadabilityScores
      summary: Run the readability analysis score ability
      description: Returns the readability analysis score of the most recently modified posts.
      tags:
      - Abilities
      parameters:
      - $ref: '#/components/parameters/NumberOfPosts'
      responses:
        '200':
          description: Readability analysis scores for the most recently modified posts
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/AnalysisScore'
  /wp-abilities/v1/abilities/yoast-seo/get-inclusive-language-scores/run:
    get:
      operationId: runGetInclusiveLanguageScores
      summary: Run the inclusive language analysis score ability
      description: Returns the inclusive-language analysis score of the most recently modified posts.
      tags:
      - Abilities
      parameters:
      - $ref: '#/components/parameters/NumberOfPosts'
      responses:
        '200':
          description: Inclusive-language scores for the most recently modified posts
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/AnalysisScore'
components:
  schemas:
    SeoScore:
      allOf:
      - $ref: '#/components/schemas/AnalysisScore'
      - type: object
        properties:
          focus_keyphrase:
            type:
            - string
            - 'null'
            description: The focus keyphrase set on the post; returned only by the SEO ability
    Ability:
      type: object
      description: A registered WordPress ability as returned by the discovery endpoint. Yoast's developer portal documents the three Yoast ability names but not the full discovery-record shape, so only the name is asserted here.
      properties:
        name:
          type: string
          enum:
          - yoast-seo/get-seo-scores
          - yoast-seo/get-readability-scores
          - yoast-seo/get-inclusive-language-scores
      additionalProperties: true
    AnalysisScore:
      type: object
      description: One post's analysis score
      properties:
        title:
          type: string
          description: The post title
        score:
          type: string
          description: The analysis score bucket
          enum:
          - na
          - bad
          - ok
          - good
        label:
          type: string
          description: Human-readable score label
  parameters:
    NumberOfPosts:
      name: input[number_of_posts]
      in: query
      required: false
      description: How many of the most recently modified posts to score.
      schema:
        type: integer
        minimum: 1
        maximum: 100
        default: 10
        example: 4