Skip to main content
Glama

Get ranked keywords

seo_get_ranked_keywords
Read-onlyIdempotent

Keywords a domain or one page ranks for in the top 100, with position, URL and metrics.

Use when: "what does competitor.com rank for", "which keywords send traffic to this page", building a list of a site's topics. Not for: keywords a competitor has that you do not, use seo_get_keyword_gap. One keyword's position, use seo_get_position. New keyword ideas, use seo_search_keywords. Returns: List. rows[]: keyword, rank, type (organic, featured_snippet or local_pack; ads excluded), previous_rank (null = did not rank at the provider's previous update), is_new, url, volume, kd, cpc, intent, traffic (estimated monthly visits from this keyword), serp_features[] (SERP feature types on the keyword's page). A keyword can appear once per type. Sorted by traffic, highest first. rank counts every element on the page, ads and features included, so a keyword in the organic top 100 can read rank 104. null = provider has no data. A traffic figure saved before 1 November 2026 may be on DataForSEO's older traffic model: take a new baseline rather than compare across that date. Cost: 5 + 5 per 100 rows. Default 100 rows = 10 credits. Cached 7 days. Example: {"target": "competitor.com", "limit": 200}

Input Schema

NameRequiredDescriptionDefault
limitNoMax rows. Default 100, cap 1000.
cursorNoFrom meta.cursor of the previous page.
targetYesDomain or URL. example.com covers all subdomains, www.example.com is that host only, a full URL is that page only.
dry_runNoReturn only meta with the estimate. Costs nothing.
languageNoISO 639-1 language code. Default en.en
locationNoProvider location name or code. Default United States.United States
max_creditsNoRefuse with BudgetExceeded if the estimate is higher.

Output Schema

NameRequiredDescriptionDefault
metaYes
rowsNo
errorNo
hintsYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changed
    • changedOutput schema / properties / meta / properties / credits_remaining / description
      Previous value: -"The workspace's credits left after this call. null when the call did not check the balance (free tools, cache hits, dry runs, tasks) or the balance has no limit."New value: +"The workspace's credits left after this call. null when the call did not check the balance (free tools, cache hits, dry runs, tasks) or the balance has no limit. Leaves out credits held for calls still running, so it can dip during parallel calls and come back; credits_charged is what this call cost."
  2. Changed1 schema field changed
    • addedOutput schema / properties / meta / properties / feedback_request
      Added value: +{
      +  "additionalProperties": false,
      +  "description": "Once per workspace: after the task, ask the user once for feedback and send any answer with submit_feedback.",
      +  "properties": {
      +    "message": {
      +      "type": "string"
      +    }
      +  },
      +  "required": [
      +    "message"
      +  ],
      +  "type": "object"
      +}
  3. Changed1 schema field changed
    • changedOutput schema / properties / meta / properties / credits_notice / description
      Previous value: -"A free workspace is low on credits, at most once a day. Tell the user once."New value: +"The workspace is low on credits, at most once a day. Tell the user once."
  4. Changed17 schema fields changed
    • removedInput schema / $schema
      Removed value: -"https://json-schema.org/draft/2020-12/schema"
    • removedInput schema / properties / max_credits / maximum
      Removed value: -9007199254740991
    • removedInput schema / properties / provider
      Removed value: -{
      -  "description": "Provider id. Defaults to the server default for the tool.",
      -  "type": "string"
      -}
    • removedOutput schema / $schema
      Removed value: -"https://json-schema.org/draft/2020-12/schema"
    • addedOutput schema / properties / error / additionalProperties
      Added value: +{}
    • removedOutput schema / properties / error / oneOf
      Removed value: -[
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "error": {
      -        "const": "BudgetExceeded",
      -        "type": "string"
      -      },
      -      "est_credits": {
      -        "type": "number"
      -      },
      -      "max_credits": {
      -        "type": "number"
      -      },
      -      "message": {
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "error",
      -      "est_credits",
      -      "max_credits",
      -      "message"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "billing_url": {
      -        "type": "string"
      -      },
      -      "error": {
      -        "const": "InsufficientCredits",
      -        "type": "string"
      -      },
      -      "est_credits": {
      -        "type": "number"
      -      },
      -      "message": {
      -        "type": "string"
      -      },
      -      "upgrade_url": {
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "error",
      -      "est_credits",
      -      "message"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "error": {
      -        "const": "NoData",
      -        "type": "string"
      -      },
      -      "message": {
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "error",
      -      "message"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "error": {
      -        "const": "InvalidTarget",
      -        "type": "string"
      -      },
      -      "message": {
      -        "type": "string"
      -      },
      -      "target": {
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "error",
      -      "target",
      -      "message"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "error": {
      -        "const": "InvalidProvider",
      -        "type": "string"
      -      },
      -      "message": {
      -        "type": "string"
      -      },
      -      "provider": {
      -        "type": "string"
      -      },
      -      "valid_providers": {
      -        "items": {
      -          "type": "string"
      -        },
      -        "type": "array"
      -      }
      -    },
      -    "required": [
      -      "error",
      -      "provider",
      -      "valid_providers",
      -      "message"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "error": {
      -        "const": "ProviderUnavailable",
      -        "type": "string"
      -      },
      -      "message": {
      -        "type": "string"
      -      },
      -      "provider": {
      -        "type": "string"
      -      },
      -      "retry_after_s": {
      -        "type": "number"
      -      }
      -    },
      -    "required": [
      -      "error",
      -      "provider",
      -      "retry_after_s",
      -      "message"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "error": {
      -        "const": "ConcurrencyLimit",
      -        "type": "string"
      -      },
      -      "limit": {
      -        "type": "number"
      -      },
      -      "message": {
      -        "type": "string"
      -      },
      -      "retry_after_s": {
      -        "type": "number"
      -      }
      -    },
      -    "required": [
      -      "error",
      -      "limit",
      -      "retry_after_s",
      -      "message"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "cap": {
      -        "type": "number"
      -      },
      -      "error": {
      -        "const": "SpendCapReached",
      -        "type": "string"
      -      },
      -      "est_credits": {
      -        "type": "number"
      -      },
      -      "message": {
      -        "type": "string"
      -      },
      -      "period": {
      -        "enum": [
      -          "day",
      -          "month"
      -        ],
      -        "type": "string"
      -      },
      -      "resets_at": {
      -        "type": "string"
      -      },
      -      "spent": {
      -        "type": "number"
      -      }
      -    },
      -    "required": [
      -      "error",
      -      "period",
      -      "cap",
      -      "spent",
      -      "est_credits",
      -      "resets_at",
      -      "message"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "error": {
      -        "const": "TaskFailed",
      -        "type": "string"
      -      },
      -      "message": {
      -        "type": "string"
      -      },
      -      "task_id": {
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "error",
      -      "task_id",
      -      "message"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "error": {
      -        "const": "TaskPending",
      -        "type": "string"
      -      },
      -      "message": {
      -        "type": "string"
      -      },
      -      "poll_after_s": {
      -        "type": "number"
      -      },
      -      "task_id": {
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "error",
      -      "task_id",
      -      "poll_after_s",
      -      "message"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "connect_url": {
      -        "type": "string"
      -      },
      -      "engine": {
      -        "type": "string"
      -      },
      -      "error": {
      -        "const": "NotConnected",
      -        "type": "string"
      -      },
      -      "message": {
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "error",
      -      "engine",
      -      "connect_url",
      -      "message"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "engine": {
      -        "type": "string"
      -      },
      -      "error": {
      -        "const": "EngineMisconfigured",
      -        "type": "string"
      -      },
      -      "message": {
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "error",
      -      "engine",
      -      "message"
      -    ],
      -    "type": "object"
      -  }
      -]
    • addedOutput schema / properties / error / properties
      Added value: +{
      +  "error": {
      +    "enum": [
      +      "BudgetExceeded",
      +      "InsufficientCredits",
      +      "NoData",
      +      "InvalidTarget",
      +      "InvalidProvider",
      +      "ProviderUnavailable",
      +      "ConcurrencyLimit",
      +      "SpendCapReached",
      +      "TaskFailed",
      +      "TaskPending",
      +      "NotConnected",
      +      "EngineMisconfigured"
      +    ],
      +    "type": "string"
      +  },
      +  "message": {
      +    "type": "string"
      +  }
      +}
    • addedOutput schema / properties / error / required
      Added value: +[
      +  "error",
      +  "message"
      +]
    • addedOutput schema / properties / error / type
      Added value: +"object"
    • removedOutput schema / properties / errors
      Removed value: -{
      -  "description": "Per-input failures of a batch call.",
      -  "items": {
      -    "additionalProperties": false,
      -    "properties": {
      -      "error": {
      -        "oneOf": [
      -          {
      -            "additionalProperties": false,
      -            "properties": {
      -              "error": {
      -                "const": "BudgetExceeded",
      -                "type": "string"
      -              },
      -              "est_credits": {
      -                "type": "number"
      -              },
      -              "max_credits": {
      -                "type": "number"
      -              },
      -              "message": {
      -                "type": "string"
      -              }
      -            },
      -            "required": [
      -              "error",
      -              "est_credits",
      -              "max_credits",
      -              "message"
      -            ],
      -            "type": "object"
      -          },
      -          {
      -            "additionalProperties": false,
      -            "properties": {
      -              "billing_url": {
      -                "type": "string"
      -              },
      -              "error": {
      -                "const": "InsufficientCredits",
      -                "type": "string"
      -              },
      -              "est_credits": {
      -                "type": "number"
      -              },
      -              "message": {
      -                "type": "string"
      -              },
      -              "upgrade_url": {
      -                "type": "string"
      -              }
      -            },
      -            "required": [
      -              "error",
      -              "est_credits",
      -              "message"
      -            ],
      -            "type": "object"
      -          },
      -          {
      -            "additionalProperties": false,
      -            "properties": {
      -              "error": {
      -                "const": "NoData",
      -                "type": "string"
      -              },
      -              "message": {
      -                "type": "string"
      -              }
      -            },
      -            "required": [
      -              "error",
      -              "message"
      -            ],
      -            "type": "object"
      -          },
      -          {
      -            "additionalProperties": false,
      -            "properties": {
      -              "error": {
      -                "const": "InvalidTarget",
      -                "type": "string"
      -              },
      -              "message": {
      -                "type": "string"
      -              },
      -              "target": {
      -                "type": "string"
      -              }
      -            },
      -            "required": [
      -              "error",
      -              "target",
      -              "message"
      -            ],
      -            "type": "object"
      -          },
      -          {
      -            "additionalProperties": false,
      -            "properties": {
      -              "error": {
      -                "const": "InvalidProvider",
      -                "type": "string"
      -              },
      -              "message": {
      -                "type": "string"
      -              },
      -              "provider": {
      -                "type": "string"
      -              },
      -              "valid_providers": {
      -                "items": {
      -                  "type": "string"
      -                },
      -                "type": "array"
      -              }
      -            },
      -            "required": [
      -              "error",
      -              "provider",
      -              "valid_providers",
      -              "message"
      -            ],
      -            "type": "object"
      -          },
      -          {
      -            "additionalProperties": false,
      -            "properties": {
      -              "error": {
      -                "const": "ProviderUnavailable",
      -                "type": "string"
      -              },
      -              "message": {
      -                "type": "string"
      -              },
      -              "provider": {
      -                "type": "string"
      -              },
      -              "retry_after_s": {
      -                "type": "number"
      -              }
      -            },
      -            "required": [
      -              "error",
      -              "provider",
      -              "retry_after_s",
      -              "message"
      -            ],
      -            "type": "object"
      -          },
      -          {
      -            "additionalProperties": false,
      -            "properties": {
      -              "error": {
      -                "const": "ConcurrencyLimit",
      -                "type": "string"
      -              },
      -              "limit": {
      -                "type": "number"
      -              },
      -              "message": {
      -                "type": "string"
      -              },
      -              "retry_after_s": {
      -                "type": "number"
      -              }
      -            },
      -            "required": [
      -              "error",
      -              "limit",
      -              "retry_after_s",
      -              "message"
      -            ],
      -            "type": "object"
      -          },
      -          {
      -            "additionalProperties": false,
      -            "properties": {
      -              "cap": {
      -                "type": "number"
      -              },
      -              "error": {
      -                "const": "SpendCapReached",
      -                "type": "string"
      -              },
      -              "est_credits": {
      -                "type": "number"
      -              },
      -              "message": {
      -                "type": "string"
      -              },
      -              "period": {
      -                "enum": [
      -                  "day",
      -                  "month"
      -                ],
      -                "type": "string"
      -              },
      -              "resets_at": {
      -                "type": "string"
      -              },
      -              "spent": {
      -                "type": "number"
      -              }
      -            },
      -            "required": [
      -              "error",
      -              "period",
      -              "cap",
      -              "spent",
      -              "est_credits",
      -              "resets_at",
      -              "message"
      -            ],
      -            "type": "object"
      -          },
      -          {
      -            "additionalProperties": false,
      -            "properties": {
      -              "error": {
      -                "const": "TaskFailed",
      -                "type": "string"
      -              },
      -              "message": {
      -                "type": "string"
      -              },
      -              "task_id": {
      -                "type": "string"
      -              }
      -            },
      -            "required": [
      -              "error",
      -              "task_id",
      -              "message"
      -            ],
      -            "type": "object"
      -          },
      -          {
      -            "additionalProperties": false,
      -            "properties": {
      -              "error": {
      -                "const": "TaskPending",
      -                "type": "string"
      -              },
      -              "message": {
      -                "type": "string"
      -              },
      -              "poll_after_s": {
      -                "type": "number"
      -              },
      -              "task_id": {
      -                "type": "string"
      -              }
      -            },
      -            "required": [
      -              "error",
      -              "task_id",
      -              "poll_after_s",
      -              "message"
      -            ],
      -            "type": "object"
      -          },
      -          {
      -            "additionalProperties": false,
      -            "properties": {
      -              "connect_url": {
      -                "type": "string"
      -              },
      -              "engine": {
      -                "type": "string"
      -              },
      -              "error": {
      -                "const": "NotConnected",
      -                "type": "string"
      -              },
      -              "message": {
      -                "type": "string"
      -              }
      -            },
      -            "required": [
      -              "error",
      -              "engine",
      -              "connect_url",
      -              "message"
      -            ],
      -            "type": "object"
      -          },
      -          {
      -            "additionalProperties": false,
      -            "properties": {
      -              "engine": {
      -                "type": "string"
      -              },
      -              "error": {
      -                "const": "EngineMisconfigured",
      -                "type": "string"
      -              },
      -              "message": {
      -                "type": "string"
      -              }
      -            },
      -            "required": [
      -              "error",
      -              "engine",
      -              "message"
      -            ],
      -            "type": "object"
      -          }
      -        ]
      -      },
      -      "input": {
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "input",
      -      "error"
      -    ],
      -    "type": "object"
      -  },
      -  "type": "array"
      -}
    • changedOutput schema / properties / meta / properties / rows_available / anyOf
      Previous value: -[
      -  {
      -    "maximum": 9007199254740991,
      -    "minimum": -9007199254740991,
      -    "type": "integer"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]New value: +[
      +  {
      +    "type": "integer"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • removedOutput schema / properties / meta / properties / rows_returned / maximum
      Removed value: -9007199254740991
    • removedOutput schema / properties / meta / properties / rows_returned / minimum
      Removed value: --9007199254740991
    • changedOutput schema / properties / rows / items / properties / previous_rank / anyOf
      Previous value: -[
      -  {
      -    "maximum": 9007199254740991,
      -    "minimum": -9007199254740991,
      -    "type": "integer"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]New value: +[
      +  {
      +    "type": "integer"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • removedOutput schema / properties / rows / items / properties / rank / maximum
      Removed value: -9007199254740991
    • removedOutput schema / properties / rows / items / properties / rank / minimum
      Removed value: --9007199254740991
    • changedOutput schema / properties / rows / items / properties / volume / anyOf
      Previous value: -[
      -  {
      -    "maximum": 9007199254740991,
      -    "minimum": -9007199254740991,
      -    "type": "integer"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]New value: +[
      +  {
      +    "type": "integer"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
  5. Changed3 schema fields changed
    • addedOutput schema / properties / meta / properties / credits_notice
      Added value: +{
      +  "additionalProperties": false,
      +  "description": "A free workspace is low on credits, at most once a day. Tell the user once.",
      +  "properties": {
      +    "message": {
      +      "type": "string"
      +    },
      +    "resets_at": {
      +      "type": [
      +        "string",
      +        "null"
      +      ]
      +    },
      +    "upgrade_url": {
      +      "type": "string"
      +    }
      +  },
      +  "required": [
      +    "upgrade_url",
      +    "resets_at",
      +    "message"
      +  ],
      +  "type": "object"
      +}
    • addedOutput schema / properties / meta / properties / credits_remaining
      Added value: +{
      +  "description": "The workspace's credits left after this call. null when the call did not check the balance (free tools, cache hits, dry runs, tasks) or the balance has no limit.",
      +  "type": [
      +    "number",
      +    "null"
      +  ]
      +}
    • changedOutput schema / properties / meta / required
      Previous value: -[
      -  "provider",
      -  "credits_charged",
      -  "est_credits",
      -  "cached",
      -  "data_as_of",
      -  "rows_returned",
      -  "rows_available",
      -  "cursor",
      -  "request_id"
      -]New value: +[
      +  "provider",
      +  "credits_charged",
      +  "est_credits",
      +  "cached",
      +  "data_as_of",
      +  "rows_returned",
      +  "rows_available",
      +  "cursor",
      +  "request_id",
      +  "credits_remaining"
      +]
  6. Changed5 schema fields changed
    • addedOutput schema / properties / rows / items / properties / is_new
      Added value: +{
      +  "description": "Ranks now and did not at the provider's previous update.",
      +  "type": "boolean"
      +}
    • addedOutput schema / properties / rows / items / properties / previous_rank
      Added value: +{
      +  "anyOf": [
      +    {
      +      "maximum": 9007199254740991,
      +      "minimum": -9007199254740991,
      +      "type": "integer"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "description": "Rank at the provider's previous update; null when it did not rank then."
      +}
    • addedOutput schema / properties / rows / items / properties / serp_features
      Added value: +{
      +  "description": "SERP feature types on the keyword's page, for example ai_overview.",
      +  "items": {
      +    "type": "string"
      +  },
      +  "type": "array"
      +}
    • addedOutput schema / properties / rows / items / properties / type
      Added value: +{
      +  "description": "organic, featured_snippet or local_pack. Ads are excluded.",
      +  "type": "string"
      +}
    • changedOutput schema / properties / rows / items / required
      Previous value: -[
      -  "keyword",
      -  "rank",
      -  "url",
      -  "volume",
      -  "kd",
      -  "cpc",
      -  "intent",
      -  "traffic"
      -]New value: +[
      +  "keyword",
      +  "rank",
      +  "type",
      +  "previous_rank",
      +  "is_new",
      +  "url",
      +  "volume",
      +  "kd",
      +  "cpc",
      +  "intent",
      +  "traffic",
      +  "serp_features"
      +]
  7. Changed2 schema fields changed
    • changedOutput schema / properties / error / oneOf
      Previous value: -[
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "error": {
      -        "const": "BudgetExceeded",
      -        "type": "string"
      -      },
      -      "est_credits": {
      -        "type": "number"
      -      },
      -      "max_credits": {
      -        "type": "number"
      -      },
      -      "message": {
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "error",
      -      "est_credits",
      -      "max_credits",
      -      "message"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "billing_url": {
      -        "type": "string"
      -      },
      -      "error": {
      -        "const": "InsufficientCredits",
      -        "type": "string"
      -      },
      -      "est_credits": {
      -        "type": "number"
      -      },
      -      "message": {
      -        "type": "string"
      -      },
      -      "upgrade_url": {
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "error",
      -      "est_credits",
      -      "message"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "error": {
      -        "const": "NoData",
      -        "type": "string"
      -      },
      -      "message": {
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "error",
      -      "message"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "error": {
      -        "const": "InvalidTarget",
      -        "type": "string"
      -      },
      -      "message": {
      -        "type": "string"
      -      },
      -      "target": {
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "error",
      -      "target",
      -      "message"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "error": {
      -        "const": "ProviderUnavailable",
      -        "type": "string"
      -      },
      -      "message": {
      -        "type": "string"
      -      },
      -      "provider": {
      -        "type": "string"
      -      },
      -      "retry_after_s": {
      -        "type": "number"
      -      }
      -    },
      -    "required": [
      -      "error",
      -      "provider",
      -      "retry_after_s",
      -      "message"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "error": {
      -        "const": "ConcurrencyLimit",
      -        "type": "string"
      -      },
      -      "limit": {
      -        "type": "number"
      -      },
      -      "message": {
      -        "type": "string"
      -      },
      -      "retry_after_s": {
      -        "type": "number"
      -      }
      -    },
      -    "required": [
      -      "error",
      -      "limit",
      -      "retry_after_s",
      -      "message"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "cap": {
      -        "type": "number"
      -      },
      -      "error": {
      -        "const": "SpendCapReached",
      -        "type": "string"
      -      },
      -      "est_credits": {
      -        "type": "number"
      -      },
      -      "message": {
      -        "type": "string"
      -      },
      -      "period": {
      -        "enum": [
      -          "day",
      -          "month"
      -        ],
      -        "type": "string"
      -      },
      -      "resets_at": {
      -        "type": "string"
      -      },
      -      "spent": {
      -        "type": "number"
      -      }
      -    },
      -    "required": [
      -      "error",
      -      "period",
      -      "cap",
      -      "spent",
      -      "est_credits",
      -      "resets_at",
      -      "message"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "error": {
      -        "const": "TaskFailed",
      -        "type": "string"
      -      },
      -      "message": {
      -        "type": "string"
      -      },
      -      "task_id": {
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "error",
      -      "task_id",
      -      "message"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "error": {
      -        "const": "TaskPending",
      -        "type": "string"
      -      },
      -      "message": {
      -        "type": "string"
      -      },
      -      "poll_after_s": {
      -        "type": "number"
      -      },
      -      "task_id": {
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "error",
      -      "task_id",
      -      "poll_after_s",
      -      "message"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "connect_url": {
      -        "type": "string"
      -      },
      -      "engine": {
      -        "type": "string"
      -      },
      -      "error": {
      -        "const": "NotConnected",
      -        "type": "string"
      -      },
      -      "message": {
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "error",
      -      "engine",
      -      "connect_url",
      -      "message"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "engine": {
      -        "type": "string"
      -      },
      -      "error": {
      -        "const": "EngineMisconfigured",
      -        "type": "string"
      -      },
      -      "message": {
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "error",
      -      "engine",
      -      "message"
      -    ],
      -    "type": "object"
      -  }
      -]New value: +[
      +  {
      +    "additionalProperties": false,
      +    "properties": {
      +      "error": {
      +        "const": "BudgetExceeded",
      +        "type": "string"
      +      },
      +      "est_credits": {
      +        "type": "number"
      +      },
      +      "max_credits": {
      +        "type": "number"
      +      },
      +      "message": {
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "error",
      +      "est_credits",
      +      "max_credits",
      +      "message"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "additionalProperties": false,
      +    "properties": {
      +      "billing_url": {
      +        "type": "string"
      +      },
      +      "error": {
      +        "const": "InsufficientCredits",
      +        "type": "string"
      +      },
      +      "est_credits": {
      +        "type": "number"
      +      },
      +      "message": {
      +        "type": "string"
      +      },
      +      "upgrade_url": {
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "error",
      +      "est_credits",
      +      "message"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "additionalProperties": false,
      +    "properties": {
      +      "error": {
      +        "const": "NoData",
      +        "type": "string"
      +      },
      +      "message": {
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "error",
      +      "message"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "additionalProperties": false,
      +    "properties": {
      +      "error": {
      +        "const": "InvalidTarget",
      +        "type": "string"
      +      },
      +      "message": {
      +        "type": "string"
      +      },
      +      "target": {
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "error",
      +      "target",
      +      "message"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "additionalProperties": false,
      +    "properties": {
      +      "error": {
      +        "const": "InvalidProvider",
      +        "type": "string"
      +      },
      +      "message": {
      +        "type": "string"
      +      },
      +      "provider": {
      +        "type": "string"
      +      },
      +      "valid_providers": {
      +        "items": {
      +          "type": "string"
      +        },
      +        "type": "array"
      +      }
      +    },
      +    "required": [
      +      "error",
      +      "provider",
      +      "valid_providers",
      +      "message"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "additionalProperties": false,
      +    "properties": {
      +      "error": {
      +        "const": "ProviderUnavailable",
      +        "type": "string"
      +      },
      +      "message": {
      +        "type": "string"
      +      },
      +      "provider": {
      +        "type": "string"
      +      },
      +      "retry_after_s": {
      +        "type": "number"
      +      }
      +    },
      +    "required": [
      +      "error",
      +      "provider",
      +      "retry_after_s",
      +      "message"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "additionalProperties": false,
      +    "properties": {
      +      "error": {
      +        "const": "ConcurrencyLimit",
      +        "type": "string"
      +      },
      +      "limit": {
      +        "type": "number"
      +      },
      +      "message": {
      +        "type": "string"
      +      },
      +      "retry_after_s": {
      +        "type": "number"
      +      }
      +    },
      +    "required": [
      +      "error",
      +      "limit",
      +      "retry_after_s",
      +      "message"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "additionalProperties": false,
      +    "properties": {
      +      "cap": {
      +        "type": "number"
      +      },
      +      "error": {
      +        "const": "SpendCapReached",
      +        "type": "string"
      +      },
      +      "est_credits": {
      +        "type": "number"
      +      },
      +      "message": {
      +        "type": "string"
      +      },
      +      "period": {
      +        "enum": [
      +          "day",
      +          "month"
      +        ],
      +        "type": "string"
      +      },
      +      "resets_at": {
      +        "type": "string"
      +      },
      +      "spent": {
      +        "type": "number"
      +      }
      +    },
      +    "required": [
      +      "error",
      +      "period",
      +      "cap",
      +      "spent",
      +      "est_credits",
      +      "resets_at",
      +      "message"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "additionalProperties": false,
      +    "properties": {
      +      "error": {
      +        "const": "TaskFailed",
      +        "type": "string"
      +      },
      +      "message": {
      +        "type": "string"
      +      },
      +      "task_id": {
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "error",
      +      "task_id",
      +      "message"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "additionalProperties": false,
      +    "properties": {
      +      "error": {
      +        "const": "TaskPending",
      +        "type": "string"
      +      },
      +      "message": {
      +        "type": "string"
      +      },
      +      "poll_after_s": {
      +        "type": "number"
      +      },
      +      "task_id": {
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "error",
      +      "task_id",
      +      "poll_after_s",
      +      "message"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "additionalProperties": false,
      +    "properties": {
      +      "connect_url": {
      +        "type": "string"
      +      },
      +      "engine": {
      +        "type": "string"
      +      },
      +      "error": {
      +        "const": "NotConnected",
      +        "type": "string"
      +      },
      +      "message": {
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "error",
      +      "engine",
      +      "connect_url",
      +      "message"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "additionalProperties": false,
      +    "properties": {
      +      "engine": {
      +        "type": "string"
      +      },
      +      "error": {
      +        "const": "EngineMisconfigured",
      +        "type": "string"
      +      },
      +      "message": {
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "error",
      +      "engine",
      +      "message"
      +    ],
      +    "type": "object"
      +  }
      +]
    • changedOutput schema / properties / errors / items / properties / error / oneOf
      Previous value: -[
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "error": {
      -        "const": "BudgetExceeded",
      -        "type": "string"
      -      },
      -      "est_credits": {
      -        "type": "number"
      -      },
      -      "max_credits": {
      -        "type": "number"
      -      },
      -      "message": {
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "error",
      -      "est_credits",
      -      "max_credits",
      -      "message"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "billing_url": {
      -        "type": "string"
      -      },
      -      "error": {
      -        "const": "InsufficientCredits",
      -        "type": "string"
      -      },
      -      "est_credits": {
      -        "type": "number"
      -      },
      -      "message": {
      -        "type": "string"
      -      },
      -      "upgrade_url": {
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "error",
      -      "est_credits",
      -      "message"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "error": {
      -        "const": "NoData",
      -        "type": "string"
      -      },
      -      "message": {
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "error",
      -      "message"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "error": {
      -        "const": "InvalidTarget",
      -        "type": "string"
      -      },
      -      "message": {
      -        "type": "string"
      -      },
      -      "target": {
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "error",
      -      "target",
      -      "message"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "error": {
      -        "const": "ProviderUnavailable",
      -        "type": "string"
      -      },
      -      "message": {
      -        "type": "string"
      -      },
      -      "provider": {
      -        "type": "string"
      -      },
      -      "retry_after_s": {
      -        "type": "number"
      -      }
      -    },
      -    "required": [
      -      "error",
      -      "provider",
      -      "retry_after_s",
      -      "message"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "error": {
      -        "const": "ConcurrencyLimit",
      -        "type": "string"
      -      },
      -      "limit": {
      -        "type": "number"
      -      },
      -      "message": {
      -        "type": "string"
      -      },
      -      "retry_after_s": {
      -        "type": "number"
      -      }
      -    },
      -    "required": [
      -      "error",
      -      "limit",
      -      "retry_after_s",
      -      "message"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "cap": {
      -        "type": "number"
      -      },
      -      "error": {
      -        "const": "SpendCapReached",
      -        "type": "string"
      -      },
      -      "est_credits": {
      -        "type": "number"
      -      },
      -      "message": {
      -        "type": "string"
      -      },
      -      "period": {
      -        "enum": [
      -          "day",
      -          "month"
      -        ],
      -        "type": "string"
      -      },
      -      "resets_at": {
      -        "type": "string"
      -      },
      -      "spent": {
      -        "type": "number"
      -      }
      -    },
      -    "required": [
      -      "error",
      -      "period",
      -      "cap",
      -      "spent",
      -      "est_credits",
      -      "resets_at",
      -      "message"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "error": {
      -        "const": "TaskFailed",
      -        "type": "string"
      -      },
      -      "message": {
      -        "type": "string"
      -      },
      -      "task_id": {
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "error",
      -      "task_id",
      -      "message"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "error": {
      -        "const": "TaskPending",
      -        "type": "string"
      -      },
      -      "message": {
      -        "type": "string"
      -      },
      -      "poll_after_s": {
      -        "type": "number"
      -      },
      -      "task_id": {
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "error",
      -      "task_id",
      -      "poll_after_s",
      -      "message"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "connect_url": {
      -        "type": "string"
      -      },
      -      "engine": {
      -        "type": "string"
      -      },
      -      "error": {
      -        "const": "NotConnected",
      -        "type": "string"
      -      },
      -      "message": {
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "error",
      -      "engine",
      -      "connect_url",
      -      "message"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "engine": {
      -        "type": "string"
      -      },
      -      "error": {
      -        "const": "EngineMisconfigured",
      -        "type": "string"
      -      },
      -      "message": {
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "error",
      -      "engine",
      -      "message"
      -    ],
      -    "type": "object"
      -  }
      -]New value: +[
      +  {
      +    "additionalProperties": false,
      +    "properties": {
      +      "error": {
      +        "const": "BudgetExceeded",
      +        "type": "string"
      +      },
      +      "est_credits": {
      +        "type": "number"
      +      },
      +      "max_credits": {
      +        "type": "number"
      +      },
      +      "message": {
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "error",
      +      "est_credits",
      +      "max_credits",
      +      "message"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "additionalProperties": false,
      +    "properties": {
      +      "billing_url": {
      +        "type": "string"
      +      },
      +      "error": {
      +        "const": "InsufficientCredits",
      +        "type": "string"
      +      },
      +      "est_credits": {
      +        "type": "number"
      +      },
      +      "message": {
      +        "type": "string"
      +      },
      +      "upgrade_url": {
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "error",
      +      "est_credits",
      +      "message"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "additionalProperties": false,
      +    "properties": {
      +      "error": {
      +        "const": "NoData",
      +        "type": "string"
      +      },
      +      "message": {
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "error",
      +      "message"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "additionalProperties": false,
      +    "properties": {
      +      "error": {
      +        "const": "InvalidTarget",
      +        "type": "string"
      +      },
      +      "message": {
      +        "type": "string"
      +      },
      +      "target": {
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "error",
      +      "target",
      +      "message"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "additionalProperties": false,
      +    "properties": {
      +      "error": {
      +        "const": "InvalidProvider",
      +        "type": "string"
      +      },
      +      "message": {
      +        "type": "string"
      +      },
      +      "provider": {
      +        "type": "string"
      +      },
      +      "valid_providers": {
      +        "items": {
      +          "type": "string"
      +        },
      +        "type": "array"
      +      }
      +    },
      +    "required": [
      +      "error",
      +      "provider",
      +      "valid_providers",
      +      "message"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "additionalProperties": false,
      +    "properties": {
      +      "error": {
      +        "const": "ProviderUnavailable",
      +        "type": "string"
      +      },
      +      "message": {
      +        "type": "string"
      +      },
      +      "provider": {
      +        "type": "string"
      +      },
      +      "retry_after_s": {
      +        "type": "number"
      +      }
      +    },
      +    "required": [
      +      "error",
      +      "provider",
      +      "retry_after_s",
      +      "message"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "additionalProperties": false,
      +    "properties": {
      +      "error": {
      +        "const": "ConcurrencyLimit",
      +        "type": "string"
      +      },
      +      "limit": {
      +        "type": "number"
      +      },
      +      "message": {
      +        "type": "string"
      +      },
      +      "retry_after_s": {
      +        "type": "number"
      +      }
      +    },
      +    "required": [
      +      "error",
      +      "limit",
      +      "retry_after_s",
      +      "message"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "additionalProperties": false,
      +    "properties": {
      +      "cap": {
      +        "type": "number"
      +      },
      +      "error": {
      +        "const": "SpendCapReached",
      +        "type": "string"
      +      },
      +      "est_credits": {
      +        "type": "number"
      +      },
      +      "message": {
      +        "type": "string"
      +      },
      +      "period": {
      +        "enum": [
      +          "day",
      +          "month"
      +        ],
      +        "type": "string"
      +      },
      +      "resets_at": {
      +        "type": "string"
      +      },
      +      "spent": {
      +        "type": "number"
      +      }
      +    },
      +    "required": [
      +      "error",
      +      "period",
      +      "cap",
      +      "spent",
      +      "est_credits",
      +      "resets_at",
      +      "message"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "additionalProperties": false,
      +    "properties": {
      +      "error": {
      +        "const": "TaskFailed",
      +        "type": "string"
      +      },
      +      "message": {
      +        "type": "string"
      +      },
      +      "task_id": {
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "error",
      +      "task_id",
      +      "message"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "additionalProperties": false,
      +    "properties": {
      +      "error": {
      +        "const": "TaskPending",
      +        "type": "string"
      +      },
      +      "message": {
      +        "type": "string"
      +      },
      +      "poll_after_s": {
      +        "type": "number"
      +      },
      +      "task_id": {
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "error",
      +      "task_id",
      +      "poll_after_s",
      +      "message"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "additionalProperties": false,
      +    "properties": {
      +      "connect_url": {
      +        "type": "string"
      +      },
      +      "engine": {
      +        "type": "string"
      +      },
      +      "error": {
      +        "const": "NotConnected",
      +        "type": "string"
      +      },
      +      "message": {
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "error",
      +      "engine",
      +      "connect_url",
      +      "message"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "additionalProperties": false,
      +    "properties": {
      +      "engine": {
      +        "type": "string"
      +      },
      +      "error": {
      +        "const": "EngineMisconfigured",
      +        "type": "string"
      +      },
      +      "message": {
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "error",
      +      "engine",
      +      "message"
      +    ],
      +    "type": "object"
      +  }
      +]
  8. Changed2 schema fields changed
    • changedOutput schema / properties / error / oneOf
      Previous value: -[
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "error": {
      -        "const": "BudgetExceeded",
      -        "type": "string"
      -      },
      -      "est_credits": {
      -        "type": "number"
      -      },
      -      "max_credits": {
      -        "type": "number"
      -      },
      -      "message": {
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "error",
      -      "est_credits",
      -      "max_credits",
      -      "message"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "error": {
      -        "const": "InsufficientCredits",
      -        "type": "string"
      -      },
      -      "est_credits": {
      -        "type": "number"
      -      },
      -      "message": {
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "error",
      -      "est_credits",
      -      "message"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "error": {
      -        "const": "NoData",
      -        "type": "string"
      -      },
      -      "message": {
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "error",
      -      "message"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "error": {
      -        "const": "InvalidTarget",
      -        "type": "string"
      -      },
      -      "message": {
      -        "type": "string"
      -      },
      -      "target": {
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "error",
      -      "target",
      -      "message"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "error": {
      -        "const": "ProviderUnavailable",
      -        "type": "string"
      -      },
      -      "message": {
      -        "type": "string"
      -      },
      -      "provider": {
      -        "type": "string"
      -      },
      -      "retry_after_s": {
      -        "type": "number"
      -      }
      -    },
      -    "required": [
      -      "error",
      -      "provider",
      -      "retry_after_s",
      -      "message"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "error": {
      -        "const": "ConcurrencyLimit",
      -        "type": "string"
      -      },
      -      "limit": {
      -        "type": "number"
      -      },
      -      "message": {
      -        "type": "string"
      -      },
      -      "retry_after_s": {
      -        "type": "number"
      -      }
      -    },
      -    "required": [
      -      "error",
      -      "limit",
      -      "retry_after_s",
      -      "message"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "cap": {
      -        "type": "number"
      -      },
      -      "error": {
      -        "const": "SpendCapReached",
      -        "type": "string"
      -      },
      -      "est_credits": {
      -        "type": "number"
      -      },
      -      "message": {
      -        "type": "string"
      -      },
      -      "period": {
      -        "enum": [
      -          "day",
      -          "month"
      -        ],
      -        "type": "string"
      -      },
      -      "resets_at": {
      -        "type": "string"
      -      },
      -      "spent": {
      -        "type": "number"
      -      }
      -    },
      -    "required": [
      -      "error",
      -      "period",
      -      "cap",
      -      "spent",
      -      "est_credits",
      -      "resets_at",
      -      "message"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "error": {
      -        "const": "TaskFailed",
      -        "type": "string"
      -      },
      -      "message": {
      -        "type": "string"
      -      },
      -      "task_id": {
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "error",
      -      "task_id",
      -      "message"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "error": {
      -        "const": "TaskPending",
      -        "type": "string"
      -      },
      -      "message": {
      -        "type": "string"
      -      },
      -      "poll_after_s": {
      -        "type": "number"
      -      },
      -      "task_id": {
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "error",
      -      "task_id",
      -      "poll_after_s",
      -      "message"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "connect_url": {
      -        "type": "string"
      -      },
      -      "engine": {
      -        "type": "string"
      -      },
      -      "error": {
      -        "const": "NotConnected",
      -        "type": "string"
      -      },
      -      "message": {
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "error",
      -      "engine",
      -      "connect_url",
      -      "message"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "engine": {
      -        "type": "string"
      -      },
      -      "error": {
      -        "const": "EngineMisconfigured",
      -        "type": "string"
      -      },
      -      "message": {
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "error",
      -      "engine",
      -      "message"
      -    ],
      -    "type": "object"
      -  }
      -]New value: +[
      +  {
      +    "additionalProperties": false,
      +    "properties": {
      +      "error": {
      +        "const": "BudgetExceeded",
      +        "type": "string"
      +      },
      +      "est_credits": {
      +        "type": "number"
      +      },
      +      "max_credits": {
      +        "type": "number"
      +      },
      +      "message": {
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "error",
      +      "est_credits",
      +      "max_credits",
      +      "message"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "additionalProperties": false,
      +    "properties": {
      +      "billing_url": {
      +        "type": "string"
      +      },
      +      "error": {
      +        "const": "InsufficientCredits",
      +        "type": "string"
      +      },
      +      "est_credits": {
      +        "type": "number"
      +      },
      +      "message": {
      +        "type": "string"
      +      },
      +      "upgrade_url": {
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "error",
      +      "est_credits",
      +      "message"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "additionalProperties": false,
      +    "properties": {
      +      "error": {
      +        "const": "NoData",
      +        "type": "string"
      +      },
      +      "message": {
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "error",
      +      "message"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "additionalProperties": false,
      +    "properties": {
      +      "error": {
      +        "const": "InvalidTarget",
      +        "type": "string"
      +      },
      +      "message": {
      +        "type": "string"
      +      },
      +      "target": {
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "error",
      +      "target",
      +      "message"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "additionalProperties": false,
      +    "properties": {
      +      "error": {
      +        "const": "ProviderUnavailable",
      +        "type": "string"
      +      },
      +      "message": {
      +        "type": "string"
      +      },
      +      "provider": {
      +        "type": "string"
      +      },
      +      "retry_after_s": {
      +        "type": "number"
      +      }
      +    },
      +    "required": [
      +      "error",
      +      "provider",
      +      "retry_after_s",
      +      "message"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "additionalProperties": false,
      +    "properties": {
      +      "error": {
      +        "const": "ConcurrencyLimit",
      +        "type": "string"
      +      },
      +      "limit": {
      +        "type": "number"
      +      },
      +      "message": {
      +        "type": "string"
      +      },
      +      "retry_after_s": {
      +        "type": "number"
      +      }
      +    },
      +    "required": [
      +      "error",
      +      "limit",
      +      "retry_after_s",
      +      "message"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "additionalProperties": false,
      +    "properties": {
      +      "cap": {
      +        "type": "number"
      +      },
      +      "error": {
      +        "const": "SpendCapReached",
      +        "type": "string"
      +      },
      +      "est_credits": {
      +        "type": "number"
      +      },
      +      "message": {
      +        "type": "string"
      +      },
      +      "period": {
      +        "enum": [
      +          "day",
      +          "month"
      +        ],
      +        "type": "string"
      +      },
      +      "resets_at": {
      +        "type": "string"
      +      },
      +      "spent": {
      +        "type": "number"
      +      }
      +    },
      +    "required": [
      +      "error",
      +      "period",
      +      "cap",
      +      "spent",
      +      "est_credits",
      +      "resets_at",
      +      "message"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "additionalProperties": false,
      +    "properties": {
      +      "error": {
      +        "const": "TaskFailed",
      +        "type": "string"
      +      },
      +      "message": {
      +        "type": "string"
      +      },
      +      "task_id": {
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "error",
      +      "task_id",
      +      "message"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "additionalProperties": false,
      +    "properties": {
      +      "error": {
      +        "const": "TaskPending",
      +        "type": "string"
      +      },
      +      "message": {
      +        "type": "string"
      +      },
      +      "poll_after_s": {
      +        "type": "number"
      +      },
      +      "task_id": {
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "error",
      +      "task_id",
      +      "poll_after_s",
      +      "message"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "additionalProperties": false,
      +    "properties": {
      +      "connect_url": {
      +        "type": "string"
      +      },
      +      "engine": {
      +        "type": "string"
      +      },
      +      "error": {
      +        "const": "NotConnected",
      +        "type": "string"
      +      },
      +      "message": {
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "error",
      +      "engine",
      +      "connect_url",
      +      "message"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "additionalProperties": false,
      +    "properties": {
      +      "engine": {
      +        "type": "string"
      +      },
      +      "error": {
      +        "const": "EngineMisconfigured",
      +        "type": "string"
      +      },
      +      "message": {
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "error",
      +      "engine",
      +      "message"
      +    ],
      +    "type": "object"
      +  }
      +]
    • changedOutput schema / properties / errors / items / properties / error / oneOf
      Previous value: -[
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "error": {
      -        "const": "BudgetExceeded",
      -        "type": "string"
      -      },
      -      "est_credits": {
      -        "type": "number"
      -      },
      -      "max_credits": {
      -        "type": "number"
      -      },
      -      "message": {
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "error",
      -      "est_credits",
      -      "max_credits",
      -      "message"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "error": {
      -        "const": "InsufficientCredits",
      -        "type": "string"
      -      },
      -      "est_credits": {
      -        "type": "number"
      -      },
      -      "message": {
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "error",
      -      "est_credits",
      -      "message"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "error": {
      -        "const": "NoData",
      -        "type": "string"
      -      },
      -      "message": {
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "error",
      -      "message"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "error": {
      -        "const": "InvalidTarget",
      -        "type": "string"
      -      },
      -      "message": {
      -        "type": "string"
      -      },
      -      "target": {
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "error",
      -      "target",
      -      "message"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "error": {
      -        "const": "ProviderUnavailable",
      -        "type": "string"
      -      },
      -      "message": {
      -        "type": "string"
      -      },
      -      "provider": {
      -        "type": "string"
      -      },
      -      "retry_after_s": {
      -        "type": "number"
      -      }
      -    },
      -    "required": [
      -      "error",
      -      "provider",
      -      "retry_after_s",
      -      "message"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "error": {
      -        "const": "ConcurrencyLimit",
      -        "type": "string"
      -      },
      -      "limit": {
      -        "type": "number"
      -      },
      -      "message": {
      -        "type": "string"
      -      },
      -      "retry_after_s": {
      -        "type": "number"
      -      }
      -    },
      -    "required": [
      -      "error",
      -      "limit",
      -      "retry_after_s",
      -      "message"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "cap": {
      -        "type": "number"
      -      },
      -      "error": {
      -        "const": "SpendCapReached",
      -        "type": "string"
      -      },
      -      "est_credits": {
      -        "type": "number"
      -      },
      -      "message": {
      -        "type": "string"
      -      },
      -      "period": {
      -        "enum": [
      -          "day",
      -          "month"
      -        ],
      -        "type": "string"
      -      },
      -      "resets_at": {
      -        "type": "string"
      -      },
      -      "spent": {
      -        "type": "number"
      -      }
      -    },
      -    "required": [
      -      "error",
      -      "period",
      -      "cap",
      -      "spent",
      -      "est_credits",
      -      "resets_at",
      -      "message"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "error": {
      -        "const": "TaskFailed",
      -        "type": "string"
      -      },
      -      "message": {
      -        "type": "string"
      -      },
      -      "task_id": {
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "error",
      -      "task_id",
      -      "message"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "error": {
      -        "const": "TaskPending",
      -        "type": "string"
      -      },
      -      "message": {
      -        "type": "string"
      -      },
      -      "poll_after_s": {
      -        "type": "number"
      -      },
      -      "task_id": {
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "error",
      -      "task_id",
      -      "poll_after_s",
      -      "message"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "connect_url": {
      -        "type": "string"
      -      },
      -      "engine": {
      -        "type": "string"
      -      },
      -      "error": {
      -        "const": "NotConnected",
      -        "type": "string"
      -      },
      -      "message": {
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "error",
      -      "engine",
      -      "connect_url",
      -      "message"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "engine": {
      -        "type": "string"
      -      },
      -      "error": {
      -        "const": "EngineMisconfigured",
      -        "type": "string"
      -      },
      -      "message": {
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "error",
      -      "engine",
      -      "message"
      -    ],
      -    "type": "object"
      -  }
      -]New value: +[
      +  {
      +    "additionalProperties": false,
      +    "properties": {
      +      "error": {
      +        "const": "BudgetExceeded",
      +        "type": "string"
      +      },
      +      "est_credits": {
      +        "type": "number"
      +      },
      +      "max_credits": {
      +        "type": "number"
      +      },
      +      "message": {
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "error",
      +      "est_credits",
      +      "max_credits",
      +      "message"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "additionalProperties": false,
      +    "properties": {
      +      "billing_url": {
      +        "type": "string"
      +      },
      +      "error": {
      +        "const": "InsufficientCredits",
      +        "type": "string"
      +      },
      +      "est_credits": {
      +        "type": "number"
      +      },
      +      "message": {
      +        "type": "string"
      +      },
      +      "upgrade_url": {
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "error",
      +      "est_credits",
      +      "message"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "additionalProperties": false,
      +    "properties": {
      +      "error": {
      +        "const": "NoData",
      +        "type": "string"
      +      },
      +      "message": {
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "error",
      +      "message"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "additionalProperties": false,
      +    "properties": {
      +      "error": {
      +        "const": "InvalidTarget",
      +        "type": "string"
      +      },
      +      "message": {
      +        "type": "string"
      +      },
      +      "target": {
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "error",
      +      "target",
      +      "message"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "additionalProperties": false,
      +    "properties": {
      +      "error": {
      +        "const": "ProviderUnavailable",
      +        "type": "string"
      +      },
      +      "message": {
      +        "type": "string"
      +      },
      +      "provider": {
      +        "type": "string"
      +      },
      +      "retry_after_s": {
      +        "type": "number"
      +      }
      +    },
      +    "required": [
      +      "error",
      +      "provider",
      +      "retry_after_s",
      +      "message"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "additionalProperties": false,
      +    "properties": {
      +      "error": {
      +        "const": "ConcurrencyLimit",
      +        "type": "string"
      +      },
      +      "limit": {
      +        "type": "number"
      +      },
      +      "message": {
      +        "type": "string"
      +      },
      +      "retry_after_s": {
      +        "type": "number"
      +      }
      +    },
      +    "required": [
      +      "error",
      +      "limit",
      +      "retry_after_s",
      +      "message"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "additionalProperties": false,
      +    "properties": {
      +      "cap": {
      +        "type": "number"
      +      },
      +      "error": {
      +        "const": "SpendCapReached",
      +        "type": "string"
      +      },
      +      "est_credits": {
      +        "type": "number"
      +      },
      +      "message": {
      +        "type": "string"
      +      },
      +      "period": {
      +        "enum": [
      +          "day",
      +          "month"
      +        ],
      +        "type": "string"
      +      },
      +      "resets_at": {
      +        "type": "string"
      +      },
      +      "spent": {
      +        "type": "number"
      +      }
      +    },
      +    "required": [
      +      "error",
      +      "period",
      +      "cap",
      +      "spent",
      +      "est_credits",
      +      "resets_at",
      +      "message"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "additionalProperties": false,
      +    "properties": {
      +      "error": {
      +        "const": "TaskFailed",
      +        "type": "string"
      +      },
      +      "message": {
      +        "type": "string"
      +      },
      +      "task_id": {
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "error",
      +      "task_id",
      +      "message"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "additionalProperties": false,
      +    "properties": {
      +      "error": {
      +        "const": "TaskPending",
      +        "type": "string"
      +      },
      +      "message": {
      +        "type": "string"
      +      },
      +      "poll_after_s": {
      +        "type": "number"
      +      },
      +      "task_id": {
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "error",
      +      "task_id",
      +      "poll_after_s",
      +      "message"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "additionalProperties": false,
      +    "properties": {
      +      "connect_url": {
      +        "type": "string"
      +      },
      +      "engine": {
      +        "type": "string"
      +      },
      +      "error": {
      +        "const": "NotConnected",
      +        "type": "string"
      +      },
      +      "message": {
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "error",
      +      "engine",
      +      "connect_url",
      +      "message"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "additionalProperties": false,
      +    "properties": {
      +      "engine": {
      +        "type": "string"
      +      },
      +      "error": {
      +        "const": "EngineMisconfigured",
      +        "type": "string"
      +      },
      +      "message": {
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "error",
      +      "engine",
      +      "message"
      +    ],
      +    "type": "object"
      +  }
      +]
  9. Changed1 schema field changed
    • addedOutput schema / properties / meta / properties / providers_tried
      Added value: +{
      +  "description": "leads_get_email only: every source asked, in order.",
      +  "items": {
      +    "type": "string"
      +  },
      +  "type": "array"
      +}
  10. First observed

TDQS

A4.9/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Far beyond what readOnlyHint/idempotentHint/openWorldHint convey: it discloses pricing (5 + 5 per 100 rows, 10 credits at default), 7-day caching, and a budget-refusal path. It also flags non-obvious semantics that would otherwise cause bad analysis - rank counts ads and SERP features so an organic top-100 keyword can read rank 104, one keyword can appear once per type, and traffic figures saved before 1 November 2026 may use an older model.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Labeled sections (Use when / Not for / Returns / Cost / Example) with the core definition front-loaded. Despite its length, each block carries decision-relevant content; even the data-model caveat about the November 2026 traffic baseline prevents a real analytical error.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Covers the cost model, caching window, error condition (BudgetExceeded), pagination via cursor, and result ordering. Although an output schema exists, the description's notes on null meaning, per-type duplicate rows, and rank counting are behavioral facts the schema cannot express.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the per-parameter meaning is already delivered structurally; the description adds only the limit-to-cost coupling ('Default 100 rows = 10 credits') and a worked example. That is genuine added value but limited in scope - the cursor, location, language and max_credits parameters get no extra explanation.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Opens with a specific verb+resource+scope: keywords a domain or single page ranks for, limited to top 100, with position/URL/metrics. The unit of input (domain vs page) is stated up front, which is exactly the distinction that separates it from adjacent SEO lookups.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicit 'Use when' cases are given as concrete user phrasings, and the 'Not for' section names three alternatives with the condition that selects each (seo_get_keyword_gap for competitor-only keywords, seo_get_position for a single keyword, seo_search_keywords for new ideas). Nothing is left to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources