Sixteen years of API research as MCP tools — stories, areas, governance blocks & services
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
Measure how much of an API description your governance actually inspects — coverage by section, each rule's reach, and the rules that match nothing. Like test coverage, one altitude up.
The API description to operate on — OpenAPI, AsyncAPI, Arazzo or JSON Schema. A YAML/JSON string or an already-parsed object; both are accepted.
Optional: why you are asking. One sentence — the task you are trying to complete, or what you expect to get back. Never included in the answer and never used to rank; it is read only when a result turns out to be wrong, which is when knowing the intent is what makes the report actionable.
Measure how much of an API description your governance actually inspects — coverage by section, each rule's reach, and the rules that match nothing. Like test coverage, one altitude up.
| Argument | Type | Description |
|---|---|---|
| context | string | Optional: why you are asking. One sentence — the task you are trying to complete, or what you expect to get back. Never included in the answer and never used to rank; it is read only when a result turns out to be wrong, which is when knowing the intent is what makes the report actionable. |
| document* | string | object | The API description to operate on — OpenAPI, AsyncAPI, Arazzo or JSON Schema. A YAML/JSON string or an already-parsed object; both are accepted. |
{
"type": "object",
"required": [
"document"
],
"properties": {
"context": {
"type": "string",
"description": "Optional: why you are asking. One sentence — the task you are trying to complete, or what you expect to get back. Never included in the answer and never used to rank; it is read only when a result turns out to be wrong, which is when knowing the intent is what makes the report actionable."
},
"document": {
"type": [
"string",
"object"
],
"description": "The API description to operate on — OpenAPI, AsyncAPI, Arazzo or JSON Schema. A YAML/JSON string or an already-parsed object; both are accepted."
}
},
"additionalProperties": true
}Score an API's maturity 0-100 with a letter grade across design, governance coverage, documentation, and (from an apis.json) discoverability, agent-readiness, and operations. Pass your own `ruleset` — a score against rules you never adopted means little.
| Argument | Type | Description |
|---|---|---|
| context | string | Optional: why you are asking. One sentence — the task you are trying to complete, or what you expect to get back. Never included in the answer and never used to rank; it is read only when a result turns out to be wrong, which is when knowing the intent is what makes the report actionable. |
| document* | string | object | The API description to operate on — OpenAPI, AsyncAPI, Arazzo or JSON Schema. A YAML/JSON string or an already-parsed object; both are accepted. |
{
"type": "object",
"required": [
"document"
],
"properties": {
"context": {
"type": "string",
"description": "Optional: why you are asking. One sentence — the task you are trying to complete, or what you expect to get back. Never included in the answer and never used to rank; it is read only when a result turns out to be wrong, which is when knowing the intent is what makes the report actionable."
},
"document": {
"type": [
"string",
"object"
],
"description": "The API description to operate on — OpenAPI, AsyncAPI, Arazzo or JSON Schema. A YAML/JSON string or an already-parsed object; both are accepted."
}
},
"additionalProperties": true
}Apply an OpenAPI Overlay to a document and report what each action matched. Use it for deprecation and migration choreography without forking the contract.
| Argument | Type | Description |
|---|---|---|
| context | string | Optional: why you are asking. One sentence — the task you are trying to complete, or what you expect to get back. Never included in the answer and never used to rank; it is read only when a result turns out to be wrong, which is when knowing the intent is what makes the report actionable. |
| overlay* | string | object | An OpenAPI Overlay document whose actions are applied to `document`. |
| document* | string | object | The API description to operate on — OpenAPI, AsyncAPI, Arazzo or JSON Schema. A YAML/JSON string or an already-parsed object; both are accepted. |
{
"type": "object",
"required": [
"document",
"overlay"
],
"properties": {
"context": {
"type": "string",
"description": "Optional: why you are asking. One sentence — the task you are trying to complete, or what you expect to get back. Never included in the answer and never used to rank; it is read only when a result turns out to be wrong, which is when knowing the intent is what makes the report actionable."
},
"overlay": {
"type": [
"string",
"object"
],
"description": "An OpenAPI Overlay document whose actions are applied to `document`."
},
"document": {
"type": [
"string",
"object"
],
"description": "The API description to operate on — OpenAPI, AsyncAPI, Arazzo or JSON Schema. A YAML/JSON string or an already-parsed object; both are accepted."
}
},
"additionalProperties": true
}Score a repository's Spectral CI setup against an 8-point maturity rubric and return a prioritized punch-list. Pass a public `repo` ("owner/name") or `files`.
| Argument | Type | Description |
|---|---|---|
| context | string | Optional: why you are asking. One sentence — the task you are trying to complete, or what you expect to get back. Never included in the answer and never used to rank; it is read only when a result turns out to be wrong, which is when knowing the intent is what makes the report actionable. |
{
"type": "object",
"properties": {
"context": {
"type": "string",
"description": "Optional: why you are asking. One sentence — the task you are trying to complete, or what you expect to get back. Never included in the answer and never used to rank; it is read only when a result turns out to be wrong, which is when knowing the intent is what makes the report actionable."
}
},
"additionalProperties": true
}Issue a tamper-evident governance certificate attesting an API passed a named ruleset at a profile threshold. A SHA-256 fingerprint lets anyone re-verify it.
| Argument | Type | Description |
|---|---|---|
| api* | string | object | The API description being attested or verified. String or parsed object. |
| context | string | Optional: why you are asking. One sentence — the task you are trying to complete, or what you expect to get back. Never included in the answer and never used to rank; it is read only when a result turns out to be wrong, which is when knowing the intent is what makes the report actionable. |
{
"type": "object",
"required": [
"api"
],
"properties": {
"api": {
"type": [
"string",
"object"
],
"description": "The API description being attested or verified. String or parsed object."
},
"context": {
"type": "string",
"description": "Optional: why you are asking. One sentence — the task you are trying to complete, or what you expect to get back. Never included in the answer and never used to rank; it is read only when a result turns out to be wrong, which is when knowing the intent is what makes the report actionable."
}
},
"additionalProperties": true
}Inventory the PII, secret, and sensitive fields an OpenAPI exposes, across parameters and request/response schemas. Run this before exposing an API to agents.
| Argument | Type | Description |
|---|---|---|
| context | string | Optional: why you are asking. One sentence — the task you are trying to complete, or what you expect to get back. Never included in the answer and never used to rank; it is read only when a result turns out to be wrong, which is when knowing the intent is what makes the report actionable. |
| document* | string | object | The API description to operate on — OpenAPI, AsyncAPI, Arazzo or JSON Schema. A YAML/JSON string or an already-parsed object; both are accepted. |
{
"type": "object",
"required": [
"document"
],
"properties": {
"context": {
"type": "string",
"description": "Optional: why you are asking. One sentence — the task you are trying to complete, or what you expect to get back. Never included in the answer and never used to rank; it is read only when a result turns out to be wrong, which is when knowing the intent is what makes the report actionable."
},
"document": {
"type": [
"string",
"object"
],
"description": "The API description to operate on — OpenAPI, AsyncAPI, Arazzo or JSON Schema. A YAML/JSON string or an already-parsed object; both are accepted."
}
},
"additionalProperties": true
}Generate runnable curl, JavaScript, and Python samples for every operation, with path params filled in and a realistic body.
| Argument | Type | Description |
|---|---|---|
| context | string | Optional: why you are asking. One sentence — the task you are trying to complete, or what you expect to get back. Never included in the answer and never used to rank; it is read only when a result turns out to be wrong, which is when knowing the intent is what makes the report actionable. |
| document* | string | object | The API description to operate on — OpenAPI, AsyncAPI, Arazzo or JSON Schema. A YAML/JSON string or an already-parsed object; both are accepted. |
{
"type": "object",
"required": [
"document"
],
"properties": {
"context": {
"type": "string",
"description": "Optional: why you are asking. One sentence — the task you are trying to complete, or what you expect to get back. Never included in the answer and never used to rank; it is read only when a result turns out to be wrong, which is when knowing the intent is what makes the report actionable."
},
"document": {
"type": [
"string",
"object"
],
"description": "The API description to operate on — OpenAPI, AsyncAPI, Arazzo or JSON Schema. A YAML/JSON string or an already-parsed object; both are accepted."
}
},
"additionalProperties": true
}PRO — a company's investment dimensions, each read AGAINST the measured cohort: the cohort median, mean and max, this company's rank and percentile, and an index where 1.0 is exactly typical. A raw dimension score is unreadable on its own; these are the columns that make it mean something.
| Argument | Type | Description |
|---|---|---|
| slug* | string | Company slug, as find_company_insights returns it, e.g. "jp-morgan-chase". |
| context | string | Optional: why you are asking. One sentence — the task you are trying to complete, or what you expect to get back. Never included in the answer and never used to rank; it is read only when a result turns out to be wrong, which is when knowing the intent is what makes the report actionable. |
{
"type": "object",
"required": [
"slug"
],
"properties": {
"slug": {
"type": "string",
"description": "Company slug, as find_company_insights returns it, e.g. \"jp-morgan-chase\"."
},
"context": {
"type": "string",
"description": "Optional: why you are asking. One sentence — the task you are trying to complete, or what you expect to get back. Never included in the answer and never used to rank; it is read only when a result turns out to be wrong, which is when knowing the intent is what makes the report actionable."
}
}
}A company's weakest investment dimensions — where it is thin. Pro.
| Argument | Type | Description |
|---|---|---|
| slug* | string | Company slug, as find_company_insights returns it, e.g. "jp-morgan-chase". |
| context | string | Optional: why you are asking. One sentence — the task you are trying to complete, or what you expect to get back. Never included in the answer and never used to rank; it is read only when a result turns out to be wrong, which is when knowing the intent is what makes the report actionable. |
{
"type": "object",
"required": [
"slug"
],
"properties": {
"slug": {
"type": "string",
"description": "Company slug, as find_company_insights returns it, e.g. \"jp-morgan-chase\"."
},
"context": {
"type": "string",
"description": "Optional: why you are asking. One sentence — the task you are trying to complete, or what you expect to get back. Never included in the answer and never used to rank; it is read only when a result turns out to be wrong, which is when knowing the intent is what makes the report actionable."
}
}
}PRO — the companies most comparable to this one (same sub-sector where the data supports it, same industry otherwise), each with signal totals and top dimensions. The response says which basis it used.
| Argument | Type | Description |
|---|---|---|
| slug* | string | Company slug, as find_company_insights returns it, e.g. "jp-morgan-chase". |
| limit | integer | How many peers to return, 1-100. |
| context | string | Optional: why you are asking. One sentence — the task you are trying to complete, or what you expect to get back. Never included in the answer and never used to rank; it is read only when a result turns out to be wrong, which is when knowing the intent is what makes the report actionable. |
{
"type": "object",
"required": [
"slug"
],
"properties": {
"slug": {
"type": "string",
"description": "Company slug, as find_company_insights returns it, e.g. \"jp-morgan-chase\"."
},
"limit": {
"type": "integer",
"maximum": 100,
"minimum": 1,
"description": "How many peers to return, 1-100."
},
"context": {
"type": "string",
"description": "Optional: why you are asking. One sentence — the task you are trying to complete, or what you expect to get back. Never included in the answer and never used to rank; it is read only when a result turns out to be wrong, which is when knowing the intent is what makes the report actionable."
}
}
}PRO — the company's adopted stack entity by entity (services, tools, standards), each with how many companies across the cohort carry it and its radar ring.
| Argument | Type | Description |
|---|---|---|
| slug* | string | Company slug, as find_company_insights returns it, e.g. "jp-morgan-chase". |
| context | string | Optional: why you are asking. One sentence — the task you are trying to complete, or what you expect to get back. Never included in the answer and never used to rank; it is read only when a result turns out to be wrong, which is when knowing the intent is what makes the report actionable. |
{
"type": "object",
"required": [
"slug"
],
"properties": {
"slug": {
"type": "string",
"description": "Company slug, as find_company_insights returns it, e.g. \"jp-morgan-chase\"."
},
"context": {
"type": "string",
"description": "Optional: why you are asking. One sentence — the task you are trying to complete, or what you expect to get back. Never included in the answer and never used to rank; it is read only when a result turns out to be wrong, which is when knowing the intent is what makes the report actionable."
}
}
}PRO — what this company's peers run that it does not, ranked by how many peers carry it. The opening list for a vendor selling into the account.
| Argument | Type | Description |
|---|---|---|
| slug* | string | Company slug, as find_company_insights returns it, e.g. "jp-morgan-chase". |
| limit | integer | How many whitespace rows to return, 1-200. |
| context | string | Optional: why you are asking. One sentence — the task you are trying to complete, or what you expect to get back. Never included in the answer and never used to rank; it is read only when a result turns out to be wrong, which is when knowing the intent is what makes the report actionable. |
{
"type": "object",
"required": [
"slug"
],
"properties": {
"slug": {
"type": "string",
"description": "Company slug, as find_company_insights returns it, e.g. \"jp-morgan-chase\"."
},
"limit": {
"type": "integer",
"maximum": 200,
"minimum": 1,
"description": "How many whitespace rows to return, 1-200."
},
"context": {
"type": "string",
"description": "Optional: why you are asking. One sentence — the task you are trying to complete, or what you expect to get back. Never included in the answer and never used to rank; it is read only when a result turns out to be wrong, which is when knowing the intent is what makes the report actionable."
}
}
}Report every deprecated operation and whether it actually announces a sunset. The ones that go quiet are the ones that break consumers.
| Argument | Type | Description |
|---|---|---|
| context | string | Optional: why you are asking. One sentence — the task you are trying to complete, or what you expect to get back. Never included in the answer and never used to rank; it is read only when a result turns out to be wrong, which is when knowing the intent is what makes the report actionable. |
| document* | string | object | The API description to operate on — OpenAPI, AsyncAPI, Arazzo or JSON Schema. A YAML/JSON string or an already-parsed object; both are accepted. |
{
"type": "object",
"required": [
"document"
],
"properties": {
"context": {
"type": "string",
"description": "Optional: why you are asking. One sentence — the task you are trying to complete, or what you expect to get back. Never included in the answer and never used to rank; it is read only when a result turns out to be wrong, which is when knowing the intent is what makes the report actionable."
},
"document": {
"type": [
"string",
"object"
],
"description": "The API description to operate on — OpenAPI, AsyncAPI, Arazzo or JSON Schema. A YAML/JSON string or an already-parsed object; both are accepted."
}
},
"additionalProperties": true
}Compare two OpenAPI versions and classify every change as breaking, non-breaking, or an addition — at path, operation, parameter, request-body, and response granularity.
| Argument | Type | Description |
|---|---|---|
| new* | string | object | The CANDIDATE version to compare against the baseline. Aliases: `to`, `revision`. |
| old* | string | object | The BASELINE version of the document. Aliases: `from`, `base`. |
| context | string | Optional: why you are asking. One sentence — the task you are trying to complete, or what you expect to get back. Never included in the answer and never used to rank; it is read only when a result turns out to be wrong, which is when knowing the intent is what makes the report actionable. |
{
"type": "object",
"required": [
"old",
"new"
],
"properties": {
"new": {
"type": [
"string",
"object"
],
"description": "The CANDIDATE version to compare against the baseline. Aliases: `to`, `revision`."
},
"old": {
"type": [
"string",
"object"
],
"description": "The BASELINE version of the document. Aliases: `from`, `base`."
},
"context": {
"type": "string",
"description": "Optional: why you are asking. One sentence — the task you are trying to complete, or what you expect to get back. Never included in the answer and never used to rank; it is read only when a result turns out to be wrong, which is when knowing the intent is what makes the report actionable."
}
},
"additionalProperties": true
}PRO — THE INVERSION. Every other insights tool runs company -> stack; this one runs stack -> companies: which companies show demand for a given service, tool or standard, broken down by industry. This is the prospecting query — "who should I be selling this to" — and it exists in no report, bundle or page. Returns BOTH the authoritative company count and the companies it can actually name, with the basis difference explained.
| Argument | Type | Description |
|---|---|---|
| kind* | string | Entity kind: "service", "tool" or "standard". |
| slug* | string | Entity slug or display name — either resolves ("spark" and "Apache Spark" both work). |
| limit | integer | How many named companies to return, 1-500. |
| context | string | Optional: why you are asking. One sentence — the task you are trying to complete, or what you expect to get back. Never included in the answer and never used to rank; it is read only when a result turns out to be wrong, which is when knowing the intent is what makes the report actionable. |
| industry | string | Restrict the named companies to one industry. |
{
"type": "object",
"required": [
"kind",
"slug"
],
"properties": {
"kind": {
"enum": [
"service",
"tool",
"standard"
],
"type": "string",
"description": "Entity kind: \"service\", \"tool\" or \"standard\"."
},
"slug": {
"type": "string",
"description": "Entity slug or display name — either resolves (\"spark\" and \"Apache Spark\" both work)."
},
"limit": {
"type": "integer",
"maximum": 500,
"minimum": 1,
"description": "How many named companies to return, 1-500."
},
"context": {
"type": "string",
"description": "Optional: why you are asking. One sentence — the task you are trying to complete, or what you expect to get back. Never included in the answer and never used to rank; it is read only when a result turns out to be wrong, which is when knowing the intent is what makes the report actionable."
},
"industry": {
"type": "string",
"description": "Restrict the named companies to one industry."
}
}
}Turn a governance ruleset into agent-native guidance — an AGENTS.md block, a system-prompt set, a per-rule remediation pack, and a digest — so agents follow the rules while authoring, not after linting.
| Argument | Type | Description |
|---|---|---|
| context | string | Optional: why you are asking. One sentence — the task you are trying to complete, or what you expect to get back. Never included in the answer and never used to rank; it is read only when a result turns out to be wrong, which is when knowing the intent is what makes the report actionable. |
| ruleset* | object | A Spectral ruleset to run instead of the catalog default. Score against rules you never adopted means little — pass your own. |
{
"type": "object",
"required": [
"ruleset"
],
"properties": {
"context": {
"type": "string",
"description": "Optional: why you are asking. One sentence — the task you are trying to complete, or what you expect to get back. Never included in the answer and never used to rank; it is read only when a result turns out to be wrong, which is when knowing the intent is what makes the report actionable."
},
"ruleset": {
"type": "object",
"description": "A Spectral ruleset to run instead of the catalog default. Score against rules you never adopted means little — pass your own."
}
},
"additionalProperties": true
}The 77 focused topic areas of the network (agents, gateways, security, …), each a subsite with its own catalog.
| Argument | Type | Description |
|---|---|---|
| q | string | Free text over title, summary, tags, and body. |
| page | integer | Page number, 1-based (default 1). Use with `limit` to walk a long list. |
| sort | string | Order when there is no `q`: "default" (dated content newest first, the rest A-Z), "title" (A-Z) or "date" (newest first). A `q` always orders by relevance. |
| tags | array | Tag slugs; match any by default. |
| limit | integer | Results per page, 1-100 (default 25). |
| match | string | How multiple `tags` combine: "any" (default, at least one) or "all" (every tag). |
| fields | array | Return only these keys on each record, e.g. ["slug","title","url"]. |
| context | string | Optional: why you are asking. One sentence — the task you are trying to complete, or what you expect to get back. Never included in the answer and never used to rank; it is read only when a result turns out to be wrong, which is when knowing the intent is what makes the report actionable. |
Search the governance building blocks by type: guidance (177), rules (617), policies (283), standards (432), strategies (75), schema (11), properties (790), experiences (46), lifecycle (29).
| Argument | Type | Description |
|---|---|---|
| q | string | Free text over title, summary, tags, and body. |
| page | integer | Page number, 1-based (default 1). Use with `limit` to walk a long list. |
| sort | string | Order when there is no `q`: "default" (dated content newest first, the rest A-Z), "title" (A-Z) or "date" (newest first). A `q` always orders by relevance. |
| tags | array | Tag slugs; match any by default. |
| type* | string | Building-block type: guidance, rules, policies, standards, strategies, schema, properties, experiences or lifecycle. |
| limit | integer | Results per page, 1-100 (default 25). |
| match | string | How multiple `tags` combine: "any" (default, at least one) or "all" (every tag). |
| fields | array | Return only these keys on each record, e.g. ["slug","title","url"]. |
Browse profiled companies (Fortune 1000 + API providers) by name; ranked by technology-readiness signal. Free.
| Argument | Type | Description |
|---|---|---|
| q | string | Free text matched against company name, e.g. "chase". |
| page | integer | Page number, 1-based (default 1). Use with `limit` to walk a long list. |
| limit | integer | Results per page, 1-100 (default 25). |
| context | string | Optional: why you are asking. One sentence — the task you are trying to complete, or what you expect to get back. Never included in the answer and never used to rank; it is read only when a result turns out to be wrong, which is when knowing the intent is what makes the report actionable. |
{
"type": "object",
"properties": {
"q": {
"type": "string",
"description": "Free text matched against company name, e.g. \"chase\"."
},
"page": {
"type": "integer",
"default": 1,
"minimum": 1,
"description": "Page number, 1-based (default 1). Use with `limit` to walk a long list."
},
"limit": {
"type": "integer",
"default": 25,
"maximum": 100,
"minimum": 1,
"description": "Results per page, 1-100 (default 25)."
},
"context": {
"type": "string",
"description": "Optional: why you are asking. One sentence — the task you are trying to complete, or what you expect to get back. Never included in the answer and never used to rank; it is read only when a result turns out to be wrong, which is when knowing the intent is what makes the report actionable."
}
}
}API Evangelist Conversations — recorded discussions with API practitioners (guest, company, YouTube/SoundCloud links).
| Argument | Type | Description |
|---|---|---|
| q | string | Free text over title, summary, tags, and body. |
| page | integer | Page number, 1-based (default 1). Use with `limit` to walk a long list. |
| sort | string | Order when there is no `q`: "default" (dated content newest first, the rest A-Z), "title" (A-Z) or "date" (newest first). A `q` always orders by relevance. |
| tags | array | Tag slugs; match any by default. |
| limit | integer | Results per page, 1-100 (default 25). |
| match | string | How multiple `tags` combine: "any" (default, at least one) or "all" (every tag). |
| fields | array | Return only these keys on each record, e.g. ["slug","title","url"]. |
| context | string | Optional: why you are asking. One sentence — the task you are trying to complete, or what you expect to get back. Never included in the answer and never used to rank; it is read only when a result turns out to be wrong, which is when knowing the intent is what makes the report actionable. |
Browse the demand-side entity catalog — every service, tool and standard companies are measured against, ranked by how many carry it. Free. This is the left-hand side of the inversion: pick an entity here, then call entity_demand to see WHO.
| Argument | Type | Description |
|---|---|---|
| q | string | Substring match on the entity name. |
| kind | string | Entity kind: "service", "tool" or "standard". |
| page | integer | Page number, 1-based (default 1). Use with `limit` to walk a long list. |
| limit | integer | Results per page, 1-100 (default 25). |
| context | string | Optional: why you are asking. One sentence — the task you are trying to complete, or what you expect to get back. Never included in the answer and never used to rank; it is read only when a result turns out to be wrong, which is when knowing the intent is what makes the report actionable. |
| min_companies | integer | Only entities carried by at least this many companies. |
{
"type": "object",
"properties": {
"q": {
"type": "string",
"description": "Substring match on the entity name."
},
"kind": {
"enum": [
"service",
"tool",
"standard"
],
"type": "string",
"description": "Entity kind: \"service\", \"tool\" or \"standard\"."
},
"page": {
"type": "integer",
"description": "Page number, 1-based (default 1). Use with `limit` to walk a long list."
},
"limit": {
"type": "integer",
"maximum": 100,
"minimum": 1,
"description": "Results per page, 1-100 (default 25)."
},
"context": {
"type": "string",
"description": "Optional: why you are asking. One sentence — the task you are trying to complete, or what you expect to get back. Never included in the answer and never used to rank; it is read only when a result turns out to be wrong, which is when knowing the intent is what makes the report actionable."
},
"min_companies": {
"type": "integer",
"description": "Only entities carried by at least this many companies."
}
}
}The standards bodies API Evangelist has actually MEASURED — repositories, maturity, governance, coalition. Distinct from find_standards, which searches 613 catalog entries describing what a standard IS. Free.
| Argument | Type | Description |
|---|---|---|
| page | integer | Page number, 1-based (default 1). Use with `limit` to walk a long list. |
| limit | integer | Results per page, 1-100 (default 25). |
| context | string | Optional: why you are asking. One sentence — the task you are trying to complete, or what you expect to get back. Never included in the answer and never used to rank; it is read only when a result turns out to be wrong, which is when knowing the intent is what makes the report actionable. |
{
"type": "object",
"properties": {
"page": {
"type": "integer",
"description": "Page number, 1-based (default 1). Use with `limit` to walk a long list."
},
"limit": {
"type": "integer",
"maximum": 100,
"minimum": 1,
"description": "Results per page, 1-100 (default 25)."
},
"context": {
"type": "string",
"description": "Optional: why you are asking. One sentence — the task you are trying to complete, or what you expect to get back. Never included in the answer and never used to rank; it is read only when a result turns out to be wrong, which is when knowing the intent is what makes the report actionable."
}
}
}API Evangelist papers — single-PDF deep dives on one practice or topic, with outlines.
| Argument | Type | Description |
|---|---|---|
| q | string | Free text over title, summary, tags, and body. |
| page | integer | Page number, 1-based (default 1). Use with `limit` to walk a long list. |
| sort | string | Order when there is no `q`: "default" (dated content newest first, the rest A-Z), "title" (A-Z) or "date" (newest first). A `q` always orders by relevance. |
| tags | array | Tag slugs; match any by default. |
| limit | integer | Results per page, 1-100 (default 25). |
| match | string | How multiple `tags` combine: "any" (default, at least one) or "all" (every tag). |
| fields | array | Return only these keys on each record, e.g. ["slug","title","url"]. |
| context | string | Optional: why you are asking. One sentence — the task you are trying to complete, or what you expect to get back. Never included in the answer and never used to rank; it is read only when a result turns out to be wrong, which is when knowing the intent is what makes the report actionable. |
Search or browse 5,100+ API Evangelist stories (2010–present); filter by year or tags.
| Argument | Type | Description |
|---|---|---|
| q | string | Free text over title, summary, tags, and body. |
| page | integer | Page number, 1-based (default 1). Use with `limit` to walk a long list. |
| sort | string | Order when there is no `q`: "default" (dated content newest first, the rest A-Z), "title" (A-Z) or "date" (newest first). A `q` always orders by relevance. |
| tags | array | Tag slugs; match any by default. |
| year | string | Four-digit year; only posts whose date starts with it, e.g. "2024". |
| limit | integer | Results per page, 1-100 (default 25). |
| match | string | How multiple `tags` combine: "any" (default, at least one) or "all" (every tag). |
| fields | array | Return only these keys on each record, e.g. ["slug","title","url"]. |
| context | string |
Given any doc (type + slug), the most related content across the whole network, ranked by shared-tag relevance (rare, specific tags weigh most). "More like this," across stories, areas, guidance, papers, conversations, and more.
| Argument | Type | Description |
|---|---|---|
| slug* | string | Slug of the item to find related content for, within `type`, e.g. "2026-09-29-you-cannot-see-your-own-api-from-the-outside". |
| type* | string | Content type of the item `slug` names — the plural path name: posts, services, solutions, tools, areas, papers, videos, conversations, guidance…, e.g. "posts". |
| limit | integer | Results per page, 1-100 (default 25). |
| types | array | Only return related items of these types, e.g. ["papers","posts"]. |
| context | string | Optional: why you are asking. One sentence — the task you are trying to complete, or what you expect to get back. Never included in the answer and never used to rank; it is read only when a result turns out to be wrong, which is when knowing the intent is what makes the report actionable. |
{
"type": "object",
"required": [
"type",
"slug"
],
"properties": {
"slug": {
"type": "string",
"description": "Slug of the item to find related content for, within `type`, e.g. \"2026-09-29-you-cannot-see-your-own-api-from-the-outside\"."
},
"type": {
"type": "string",
"description": "Content type of the item `slug` names — the plural path name: posts, services, solutions, tools, areas, papers, videos, conversations, guidance…, e.g. \"posts\"."
},
"limit": {
"type": "integer",
"default": 25,
"maximum": 100,
"minimum": 1,
"description": "Results per page, 1-100 (default 25)."
},
"types": {
"type": "array",
"items": {
"type": "string"
},
"description": "Only return related items of these types, e.g. [\"papers\",\"posts\"]."
},
"context": {
"type": "string",
"description": "Optional: why you are asking. One sentence — the task you are trying to complete, or what you expect to get back. Never included in the answer and never used to rank; it is read only when a result turns out to be wrong, which is when knowing the intent is what makes the report actionable."
}
}
}The services API Evangelist offers teams and customers — API strategy, governance, discovery, and evangelism engagements by Kin Lane. The front door to working with API Evangelist. (For the third-party vendor registry, use find_solutions.)
| Argument | Type | Description |
|---|---|---|
| q | string | Free text over title, summary, tags, and body. |
| page | integer | Page number, 1-based (default 1). Use with `limit` to walk a long list. |
| sort | string | Order when there is no `q`: "default" (dated content newest first, the rest A-Z), "title" (A-Z) or "date" (newest first). A `q` always orders by relevance. |
| tags | array | Tag slugs; match any by default. |
| limit | integer | Results per page, 1-100 (default 25). |
| match | string | How multiple `tags` combine: "any" (default, at least one) or "all" (every tag). |
| fields | array | Return only these keys on each record, e.g. ["slug","title","url"]. |
| context | string | Optional: why you are asking. One sentence — the task you are trying to complete, or what you expect to get back. Never included in the answer and never used to rank; it is read only when a result turns out to be wrong, which is when knowing the intent is what makes the report actionable. |
The solutions registry — 740+ third-party API services and tools (gateways, portals, testing, monitoring, …) ranked by adoption across the companies API Evangelist tracks.
| Argument | Type | Description |
|---|---|---|
| q | string | Free text over title, summary, tags, and body. |
| page | integer | Page number, 1-based (default 1). Use with `limit` to walk a long list. |
| sort | string | Order when there is no `q`: "default" (dated content newest first, the rest A-Z), "title" (A-Z) or "date" (newest first). A `q` always orders by relevance. |
| tags | array | Tag slugs; match any by default. |
| limit | integer | Results per page, 1-100 (default 25). |
| match | string | How multiple `tags` combine: "any" (default, at least one) or "all" (every tag). |
| fields | array | Return only these keys on each record, e.g. ["slug","title","url"]. |
| context | string | Optional: why you are asking. One sentence — the task you are trying to complete, or what you expect to get back. Never included in the answer and never used to rank; it is read only when a result turns out to be wrong, which is when knowing the intent is what makes the report actionable. |
Browse and rank the network tag taxonomy — every subject tag across 16k+ docs, by frequency or breadth (how many content types use it). Search with q. The map of what API Evangelist covers.
| Argument | Type | Description |
|---|---|---|
| q | string | Free text matched against tag labels, e.g. "governance". |
| page | integer | Page number, 1-based (default 1). Use with `limit` to walk a long list. |
| sort | string | "count" (default, most-used first) or "breadth" (spread across the most content types). |
| limit | integer | Results per page, 1-100 (default 25). |
| context | string | Optional: why you are asking. One sentence — the task you are trying to complete, or what you expect to get back. Never included in the answer and never used to rank; it is read only when a result turns out to be wrong, which is when knowing the intent is what makes the report actionable. |
{
"type": "object",
"properties": {
"q": {
"type": "string",
"description": "Free text matched against tag labels, e.g. \"governance\"."
},
"page": {
"type": "integer",
"default": 1,
"minimum": 1,
"description": "Page number, 1-based (default 1). Use with `limit` to walk a long list."
},
"sort": {
"enum": [
"count",
"breadth"
],
"type": "string",
"description": "\"count\" (default, most-used first) or \"breadth\" (spread across the most content types)."
},
"limit": {
"type": "integer",
"default": 25,
"maximum": 100,
"minimum": 1,
"description": "Results per page, 1-100 (default 25)."
},
"context": {
"type": "string",
"description": "Optional: why you are asking. One sentence — the task you are trying to complete, or what you expect to get back. Never included in the answer and never used to rank; it is read only when a result turns out to be wrong, which is when knowing the intent is what makes the report actionable."
}
}
}The open-source tooling registry — 400+ tools in use across the companies API Evangelist tracks, each with adoption counts and technology-radar placement.
| Argument | Type | Description |
|---|---|---|
| q | string | Free text over title, summary, tags, and body. |
| page | integer | Page number, 1-based (default 1). Use with `limit` to walk a long list. |
| sort | string | Order when there is no `q`: "default" (dated content newest first, the rest A-Z), "title" (A-Z) or "date" (newest first). A `q` always orders by relevance. |
| tags | array | Tag slugs; match any by default. |
| limit | integer | Results per page, 1-100 (default 25). |
| match | string | How multiple `tags` combine: "any" (default, at least one) or "all" (every tag). |
| fields | array | Return only these keys on each record, e.g. ["slug","title","url"]. |
| context | string | Optional: why you are asking. One sentence — the task you are trying to complete, or what you expect to get back. Never included in the answer and never used to rank; it is read only when a result turns out to be wrong, which is when knowing the intent is what makes the report actionable. |
The API Evangelist video library — interviews and discussions from across the API space, searchable by transcript.
| Argument | Type | Description |
|---|---|---|
| q | string | Free text over title, summary, tags, and body. |
| page | integer | Page number, 1-based (default 1). Use with `limit` to walk a long list. |
| sort | string | Order when there is no `q`: "default" (dated content newest first, the rest A-Z), "title" (A-Z) or "date" (newest first). A `q` always orders by relevance. |
| tags | array | Tag slugs; match any by default. |
| limit | integer | Results per page, 1-100 (default 25). |
| match | string | How multiple `tags` combine: "any" (default, at least one) or "all" (every tag). |
| fields | array | Return only these keys on each record, e.g. ["slug","title","url"]. |
| context | string | Optional: why you are asking. One sentence — the task you are trying to complete, or what you expect to get back. Never included in the answer and never used to rank; it is read only when a result turns out to be wrong, which is when knowing the intent is what makes the report actionable. |
The API vocabulary — thousands of resources, actions, personas, domains, schemas, and tags extracted from the API landscape. Filter by category.
| Argument | Type | Description |
|---|---|---|
| q | string | Free text over title, summary, tags, and body. |
| page | integer | Page number, 1-based (default 1). Use with `limit` to walk a long list. |
| sort | string | Order when there is no `q`: "default" (dated content newest first, the rest A-Z), "title" (A-Z) or "date" (newest first). A `q` always orders by relevance. |
| tags | array | Tag slugs; match any by default. |
| limit | integer | Results per page, 1-100 (default 25). |
| match | string | How multiple `tags` combine: "any" (default, at least one) or "all" (every tag). |
| fields | array | Return only these keys on each record, e.g. ["slug","title","url"]. |
| context | string | Optional: why you are asking. One sentence — the task you are trying to complete, or what you expect to get back. Never included in the answer and never used to rank; it is read only when a result turns out to be wrong, which is when knowing the intent is what makes the report actionable. |
From an OpenAPI, forge an MCP server design, per-operation tools, Agent Skills, an enriched OpenAPI, a server.json, and apis.json properties.
| Argument | Type | Description |
|---|---|---|
| context | string | Optional: why you are asking. One sentence — the task you are trying to complete, or what you expect to get back. Never included in the answer and never used to rank; it is read only when a result turns out to be wrong, which is when knowing the intent is what makes the report actionable. |
| document* | string | object | The API description to operate on — OpenAPI, AsyncAPI, Arazzo or JSON Schema. A YAML/JSON string or an already-parsed object; both are accepted. |
{
"type": "object",
"required": [
"document"
],
"properties": {
"context": {
"type": "string",
"description": "Optional: why you are asking. One sentence — the task you are trying to complete, or what you expect to get back. Never included in the answer and never used to rank; it is read only when a result turns out to be wrong, which is when knowing the intent is what makes the report actionable."
},
"document": {
"type": [
"string",
"object"
],
"description": "The API description to operate on — OpenAPI, AsyncAPI, Arazzo or JSON Schema. A YAML/JSON string or an already-parsed object; both are accepted."
}
},
"additionalProperties": true
}Choose which operations and fields an API exposes to agents and emit a governed Tyk OpenAPI, an MCP tool manifest, and a Spectral ruleset with PII and secret checks.
| Argument | Type | Description |
|---|---|---|
| context | string | Optional: why you are asking. One sentence — the task you are trying to complete, or what you expect to get back. Never included in the answer and never used to rank; it is read only when a result turns out to be wrong, which is when knowing the intent is what makes the report actionable. |
{
"type": "object",
"properties": {
"context": {
"type": "string",
"description": "Optional: why you are asking. One sentence — the task you are trying to complete, or what you expect to get back. Never included in the answer and never used to rank; it is read only when a result turns out to be wrong, which is when knowing the intent is what makes the report actionable."
}
},
"additionalProperties": true
}Generate an API's llms.txt and an AGENTS.md consumption contract — base URL, auth, the operation table, deprecated operations to avoid, and usage rules.
| Argument | Type | Description |
|---|---|---|
| context | string | Optional: why you are asking. One sentence — the task you are trying to complete, or what you expect to get back. Never included in the answer and never used to rank; it is read only when a result turns out to be wrong, which is when knowing the intent is what makes the report actionable. |
{
"type": "object",
"properties": {
"context": {
"type": "string",
"description": "Optional: why you are asking. One sentence — the task you are trying to complete, or what you expect to get back. Never included in the answer and never used to rank; it is read only when a result turns out to be wrong, which is when knowing the intent is what makes the report actionable."
}
},
"additionalProperties": true
}One topic area with its related-area graph resolved — walk the network from here.
| Argument | Type | Description |
|---|---|---|
| slug* | string | Area slug, as find_areas returns it, e.g. "agents". |
| context | string | Optional: why you are asking. One sentence — the task you are trying to complete, or what you expect to get back. Never included in the answer and never used to rank; it is read only when a result turns out to be wrong, which is when knowing the intent is what makes the report actionable. |
{
"type": "object",
"required": [
"slug"
],
"properties": {
"slug": {
"type": "string",
"description": "Area slug, as find_areas returns it, e.g. \"agents\"."
},
"context": {
"type": "string",
"description": "Optional: why you are asking. One sentence — the task you are trying to complete, or what you expect to get back. Never included in the answer and never used to rank; it is read only when a result turns out to be wrong, which is when knowing the intent is what makes the report actionable."
}
}
}One building block by type + slug; include=["content"] returns the full body.
| Argument | Type | Description |
|---|---|---|
| slug* | string | Building-block slug within `type`, as find_building_blocks returns it, e.g. "access" with type "guidance". |
| type* | string | Building-block type: guidance, rules, policies, standards, strategies, schema, properties, experiences or lifecycle. |
| context | string | Optional: why you are asking. One sentence — the task you are trying to complete, or what you expect to get back. Never included in the answer and never used to rank; it is read only when a result turns out to be wrong, which is when knowing the intent is what makes the report actionable. |
| include | array | Pass ["content"] to inline the full body (Pro). Omitted, you get the summary. |
{
"type": "object",
"required": [
"type",
"slug"
],
"properties": {
"slug": {
"type": "string",
"description": "Building-block slug within `type`, as find_building_blocks returns it, e.g. \"access\" with type \"guidance\"."
},
"type": {
"enum": [
"guidance",
"rules",
"policies",
"standards",
"strategies",
"schema",
"properties",
"experiences",
"lifecycle"
],
"type": "string",
"description": "Building-block type: guidance, rules, policies, standards, strategies, schema, properties, experiences or lifecycle."
},
"context": {
"type": "string",
"description": "Optional: why you are asking. One sentence — the task you are trying to complete, or what you expect to get back. Never included in the answer and never used to rank; it is read only when a result turns out to be wrong, which is when knowing the intent is what makes the report actionable."
},
"include": {
"type": "array",
"items": {
"enum": [
"content"
]
},
"description": "Pass [\"content\"] to inline the full body (Pro). Omitted, you get the summary."
}
}
}Full demand-side profile for one company: 40-dimension readiness, adopted stack, per-quarter history. Pro.
| Argument | Type | Description |
|---|---|---|
| slug* | string | Company slug, as find_company_insights returns it, e.g. "jp-morgan-chase". |
| context | string | Optional: why you are asking. One sentence — the task you are trying to complete, or what you expect to get back. Never included in the answer and never used to rank; it is read only when a result turns out to be wrong, which is when knowing the intent is what makes the report actionable. |
{
"type": "object",
"required": [
"slug"
],
"properties": {
"slug": {
"type": "string",
"description": "Company slug, as find_company_insights returns it, e.g. \"jp-morgan-chase\"."
},
"context": {
"type": "string",
"description": "Optional: why you are asking. One sentence — the task you are trying to complete, or what you expect to get back. Never included in the answer and never used to rank; it is read only when a result turns out to be wrong, which is when knowing the intent is what makes the report actionable."
}
}
}Every way to reach API Evangelist — email, contact form, newsletter, GitHub, social channels, and postal mail.
| Argument | Type | Description |
|---|---|---|
| context | string | Optional: why you are asking. One sentence — the task you are trying to complete, or what you expect to get back. Never included in the answer and never used to rank; it is read only when a result turns out to be wrong, which is when knowing the intent is what makes the report actionable. |
{
"type": "object",
"properties": {
"context": {
"type": "string",
"description": "Optional: why you are asking. One sentence — the task you are trying to complete, or what you expect to get back. Never included in the answer and never used to rank; it is read only when a result turns out to be wrong, which is when knowing the intent is what makes the report actionable."
}
}
}One conversation with guest detail and media links; include=["content"] returns the writeup.
| Argument | Type | Description |
|---|---|---|
| slug* | string | Conversation slug — date-prefixed, as find_conversations returns it, e.g. "2026-09-01-lukasz-gornicki". |
| context | string | Optional: why you are asking. One sentence — the task you are trying to complete, or what you expect to get back. Never included in the answer and never used to rank; it is read only when a result turns out to be wrong, which is when knowing the intent is what makes the report actionable. |
| include | array | Pass ["content"] to inline the full body (Pro). Omitted, you get the summary. |
{
"type": "object",
"required": [
"slug"
],
"properties": {
"slug": {
"type": "string",
"description": "Conversation slug — date-prefixed, as find_conversations returns it, e.g. \"2026-09-01-lukasz-gornicki\"."
},
"context": {
"type": "string",
"description": "Optional: why you are asking. One sentence — the task you are trying to complete, or what you expect to get back. Never included in the answer and never used to rank; it is read only when a result turns out to be wrong, which is when knowing the intent is what makes the report actionable."
},
"include": {
"type": "array",
"items": {
"enum": [
"content"
]
},
"description": "Pass [\"content\"] to inline the full body (Pro). Omitted, you get the summary."
}
}
}The static machine-readable feeds every network site publishes (JSON, APIs.json, zero-auth) — the no-key alternative to this API.
| Argument | Type | Description |
|---|---|---|
| context | string | Optional: why you are asking. One sentence — the task you are trying to complete, or what you expect to get back. Never included in the answer and never used to rank; it is read only when a result turns out to be wrong, which is when knowing the intent is what makes the report actionable. |
{
"type": "object",
"properties": {
"context": {
"type": "string",
"description": "Optional: why you are asking. One sentence — the task you are trying to complete, or what you expect to get back. Never included in the answer and never used to rank; it is read only when a result turns out to be wrong, which is when knowing the intent is what makes the report actionable."
}
}
}One editorial guidance section as a list: history, technology, business, politics, governance, or evangelism — the six lenses API Evangelist organizes guidance through.
| Argument | Type | Description |
|---|---|---|
| page | integer | Page number, 1-based (default 1). Use with `limit` to walk a long list. |
| limit | integer | Results per page, 1-100 (default 25). |
| context | string | Optional: why you are asking. One sentence — the task you are trying to complete, or what you expect to get back. Never included in the answer and never used to rank; it is read only when a result turns out to be wrong, which is when knowing the intent is what makes the report actionable. |
| section* | string | Guidance section: history, technology, business, politics, governance or evangelism. |
{
"type": "object",
"required": [
"section"
],
"properties": {
"page": {
"type": "integer",
"default": 1,
"minimum": 1,
"description": "Page number, 1-based (default 1). Use with `limit` to walk a long list."
},
"limit": {
"type": "integer",
"default": 25,
"maximum": 100,
"minimum": 1,
"description": "Results per page, 1-100 (default 25)."
},
"context": {
"type": "string",
"description": "Optional: why you are asking. One sentence — the task you are trying to complete, or what you expect to get back. Never included in the answer and never used to rank; it is read only when a result turns out to be wrong, which is when knowing the intent is what makes the report actionable."
},
"section": {
"enum": [
"history",
"technology",
"business",
"politics",
"governance",
"evangelism"
],
"type": "string",
"description": "Guidance section: history, technology, business, politics, governance or evangelism."
}
}
}START HERE. What the API Evangelist network offers: sixteen years of API research as searchable stories, 77 topic areas, governance building blocks (guidance, rules, policies, standards, strategies), papers, conversations, and the consulting services Kin Lane offers teams. Returns counts, entry points, and how to engage.
| Argument | Type | Description |
|---|---|---|
| context | string | Optional: why you are asking. One sentence — the task you are trying to complete, or what you expect to get back. Never included in the answer and never used to rank; it is read only when a result turns out to be wrong, which is when knowing the intent is what makes the report actionable. |
{
"type": "object",
"properties": {
"context": {
"type": "string",
"description": "Optional: why you are asking. One sentence — the task you are trying to complete, or what you expect to get back. Never included in the answer and never used to rank; it is read only when a result turns out to be wrong, which is when knowing the intent is what makes the report actionable."
}
}
}One paper with its full outline and purchase/landing URL.
| Argument | Type | Description |
|---|---|---|
| slug* | string | Paper slug, as find_papers returns it, e.g. "change-on-the-agent-surface". |
| context | string | Optional: why you are asking. One sentence — the task you are trying to complete, or what you expect to get back. Never included in the answer and never used to rank; it is read only when a result turns out to be wrong, which is when knowing the intent is what makes the report actionable. |
{
"type": "object",
"required": [
"slug"
],
"properties": {
"slug": {
"type": "string",
"description": "Paper slug, as find_papers returns it, e.g. \"change-on-the-agent-surface\"."
},
"context": {
"type": "string",
"description": "Optional: why you are asking. One sentence — the task you are trying to complete, or what you expect to get back. Never included in the answer and never used to rank; it is read only when a result turns out to be wrong, which is when knowing the intent is what makes the report actionable."
}
}
}One story by slug (YYYY-MM-DD-slug); include=["content"] returns the full markdown body.
| Argument | Type | Description |
|---|---|---|
| slug* | string | Post slug — date-prefixed, as find_posts returns it, e.g. "2026-09-29-you-cannot-see-your-own-api-from-the-outside". |
| context | string | Optional: why you are asking. One sentence — the task you are trying to complete, or what you expect to get back. Never included in the answer and never used to rank; it is read only when a result turns out to be wrong, which is when knowing the intent is what makes the report actionable. |
| include | array | Pass ["content"] to inline the full body (Pro). Omitted, you get the summary. |
{
"type": "object",
"required": [
"slug"
],
"properties": {
"slug": {
"type": "string",
"description": "Post slug — date-prefixed, as find_posts returns it, e.g. \"2026-09-29-you-cannot-see-your-own-api-from-the-outside\"."
},
"context": {
"type": "string",
"description": "Optional: why you are asking. One sentence — the task you are trying to complete, or what you expect to get back. Never included in the answer and never used to rank; it is read only when a result turns out to be wrong, which is when knowing the intent is what makes the report actionable."
},
"include": {
"type": "array",
"items": {
"enum": [
"content"
]
},
"description": "Pass [\"content\"] to inline the full body (Pro). Omitted, you get the summary."
}
}
}Full detail for one service offering by slug; include=["content"] inlines the full pitch.
| Argument | Type | Description |
|---|---|---|
| slug* | string | Service slug, as find_services returns it, e.g. "governance-agent-readiness". |
| context | string | Optional: why you are asking. One sentence — the task you are trying to complete, or what you expect to get back. Never included in the answer and never used to rank; it is read only when a result turns out to be wrong, which is when knowing the intent is what makes the report actionable. |
| include | array | Pass ["content"] to inline the full body (Pro). Omitted, you get the summary. |
{
"type": "object",
"required": [
"slug"
],
"properties": {
"slug": {
"type": "string",
"description": "Service slug, as find_services returns it, e.g. \"governance-agent-readiness\"."
},
"context": {
"type": "string",
"description": "Optional: why you are asking. One sentence — the task you are trying to complete, or what you expect to get back. Never included in the answer and never used to rank; it is read only when a result turns out to be wrong, which is when knowing the intent is what makes the report actionable."
},
"include": {
"type": "array",
"items": {
"enum": [
"content"
]
},
"description": "Pass [\"content\"] to inline the full body (Pro). Omitted, you get the summary."
}
}
}One solution from the vendor registry by slug, with its website and adoption count.
| Argument | Type | Description |
|---|---|---|
| slug* | string | Solution (vendor) slug, as find_solutions returns it, e.g. "adobe". |
| context | string | Optional: why you are asking. One sentence — the task you are trying to complete, or what you expect to get back. Never included in the answer and never used to rank; it is read only when a result turns out to be wrong, which is when knowing the intent is what makes the report actionable. |
{
"type": "object",
"required": [
"slug"
],
"properties": {
"slug": {
"type": "string",
"description": "Solution (vendor) slug, as find_solutions returns it, e.g. \"adobe\"."
},
"context": {
"type": "string",
"description": "Optional: why you are asking. One sentence — the task you are trying to complete, or what you expect to get back. Never included in the answer and never used to rank; it is read only when a result turns out to be wrong, which is when knowing the intent is what makes the report actionable."
}
}
}PRO — catalog intelligence: per-type counts, stories-per-year, and the top tags by reach across the network.
| Argument | Type | Description |
|---|---|---|
| context | string | Optional: why you are asking. One sentence — the task you are trying to complete, or what you expect to get back. Never included in the answer and never used to rank; it is read only when a result turns out to be wrong, which is when knowing the intent is what makes the report actionable. |
{
"type": "object",
"properties": {
"context": {
"type": "string",
"description": "Optional: why you are asking. One sentence — the task you are trying to complete, or what you expect to get back. Never included in the answer and never used to rank; it is read only when a result turns out to be wrong, which is when knowing the intent is what makes the report actionable."
}
}
}One tag with its per-type counts and everything it labels across the whole network (stories, areas, guidance, papers, …). Filter with types.
| Argument | Type | Description |
|---|---|---|
| page | integer | Page number, 1-based (default 1). Use with `limit` to walk a long list. |
| slug* | string | Tag slug, as find_tags returns it, e.g. "apis". |
| limit | integer | Results per page, 1-100 (default 25). |
| types | array | Only return tagged items of these types, e.g. ["posts"]. |
| context | string | Optional: why you are asking. One sentence — the task you are trying to complete, or what you expect to get back. Never included in the answer and never used to rank; it is read only when a result turns out to be wrong, which is when knowing the intent is what makes the report actionable. |
{
"type": "object",
"required": [
"slug"
],
"properties": {
"page": {
"type": "integer",
"default": 1,
"minimum": 1,
"description": "Page number, 1-based (default 1). Use with `limit` to walk a long list."
},
"slug": {
"type": "string",
"description": "Tag slug, as find_tags returns it, e.g. \"apis\"."
},
"limit": {
"type": "integer",
"default": 25,
"maximum": 100,
"minimum": 1,
"description": "Results per page, 1-100 (default 25)."
},
"types": {
"type": "array",
"items": {
"type": "string"
},
"description": "Only return tagged items of these types, e.g. [\"posts\"]."
},
"context": {
"type": "string",
"description": "Optional: why you are asking. One sentence — the task you are trying to complete, or what you expect to get back. Never included in the answer and never used to rank; it is read only when a result turns out to be wrong, which is when knowing the intent is what makes the report actionable."
}
}
}One of the four research timelines in chronological order: api (the moments that shaped web APIs), resources (which digital resources became APIs and when), industries (the industrial history framing API infrastructure), people (the people who made compute and APIs possible).
| Argument | Type | Description |
|---|---|---|
| page | integer | Page number, 1-based (default 1). Use with `limit` to walk a long list. |
| limit | integer | Results per page, 1-100 (default 25). |
| context | string | Optional: why you are asking. One sentence — the task you are trying to complete, or what you expect to get back. Never included in the answer and never used to rank; it is read only when a result turns out to be wrong, which is when knowing the intent is what makes the report actionable. |
| timeline* | string | Which timeline: api, resources, industries or people. |
{
"type": "object",
"required": [
"timeline"
],
"properties": {
"page": {
"type": "integer",
"default": 1,
"minimum": 1,
"description": "Page number, 1-based (default 1). Use with `limit` to walk a long list."
},
"limit": {
"type": "integer",
"default": 25,
"maximum": 100,
"minimum": 1,
"description": "Results per page, 1-100 (default 25)."
},
"context": {
"type": "string",
"description": "Optional: why you are asking. One sentence — the task you are trying to complete, or what you expect to get back. Never included in the answer and never used to rank; it is read only when a result turns out to be wrong, which is when knowing the intent is what makes the report actionable."
},
"timeline": {
"enum": [
"api",
"resources",
"industries",
"people"
],
"type": "string",
"description": "Which timeline: api, resources, industries or people."
}
}
}One tool from the tooling registry by slug, with its website, adoption count, and radar ring.
| Argument | Type | Description |
|---|---|---|
| slug* | string | Tool slug, as find_tools returns it, e.g. "ajv". |
| context | string | Optional: why you are asking. One sentence — the task you are trying to complete, or what you expect to get back. Never included in the answer and never used to rank; it is read only when a result turns out to be wrong, which is when knowing the intent is what makes the report actionable. |
{
"type": "object",
"required": [
"slug"
],
"properties": {
"slug": {
"type": "string",
"description": "Tool slug, as find_tools returns it, e.g. \"ajv\"."
},
"context": {
"type": "string",
"description": "Optional: why you are asking. One sentence — the task you are trying to complete, or what you expect to get back. Never included in the answer and never used to rank; it is read only when a result turns out to be wrong, which is when knowing the intent is what makes the report actionable."
}
}
}One video by slug with its YouTube id; include=["content"] returns the full transcript.
| Argument | Type | Description |
|---|---|---|
| slug* | string | Video slug, as find_videos returns it, e.g. "adam-duvander". |
| context | string | Optional: why you are asking. One sentence — the task you are trying to complete, or what you expect to get back. Never included in the answer and never used to rank; it is read only when a result turns out to be wrong, which is when knowing the intent is what makes the report actionable. |
| include | array | Pass ["content"] to inline the full body (Pro). Omitted, you get the summary. |
{
"type": "object",
"required": [
"slug"
],
"properties": {
"slug": {
"type": "string",
"description": "Video slug, as find_videos returns it, e.g. \"adam-duvander\"."
},
"context": {
"type": "string",
"description": "Optional: why you are asking. One sentence — the task you are trying to complete, or what you expect to get back. Never included in the answer and never used to rank; it is read only when a result turns out to be wrong, which is when knowing the intent is what makes the report actionable."
},
"include": {
"type": "array",
"items": {
"enum": [
"content"
]
},
"description": "Pass [\"content\"] to inline the full body (Pro). Omitted, you get the summary."
}
}
}PRO — Run the core governance checks across a WHOLE SET of internal APIs and roll them up: per-API score/grade/errors/PII, plus estate aggregates (avg score, grade distribution, APIs with PII/secrets) and a worst-first punch-list of what to fix. Pass `apis` ([{id, document}]) and your own `ruleset`. detail:true adds per-API dimensions.
| Argument | Type | Description |
|---|---|---|
| apis* | array | The estate: one entry per API, [{ id, document }]. `document` alone is accepted for a single API. |
| context | string | Optional: why you are asking. One sentence — the task you are trying to complete, or what you expect to get back. Never included in the answer and never used to rank; it is read only when a result turns out to be wrong, which is when knowing the intent is what makes the report actionable. |
{
"type": "object",
"required": [
"apis"
],
"properties": {
"apis": {
"type": "array",
"items": {
"type": "object"
},
"description": "The estate: one entry per API, [{ id, document }]. `document` alone is accepted for a single API."
},
"context": {
"type": "string",
"description": "Optional: why you are asking. One sentence — the task you are trying to complete, or what you expect to get back. Never included in the answer and never used to rank; it is read only when a result turns out to be wrong, which is when knowing the intent is what makes the report actionable."
}
},
"additionalProperties": true
}Turn Spectral findings into a self-contained HTML governance report — severity summary, grouped by rule, framed toward progress.
| Argument | Type | Description |
|---|---|---|
| context | string | Optional: why you are asking. One sentence — the task you are trying to complete, or what you expect to get back. Never included in the answer and never used to rank; it is read only when a result turns out to be wrong, which is when knowing the intent is what makes the report actionable. |
| results* | array | object | Spectral findings to render. An array, or the `{ results: [...] }` object a run returned. |
{
"type": "object",
"required": [
"results"
],
"properties": {
"context": {
"type": "string",
"description": "Optional: why you are asking. One sentence — the task you are trying to complete, or what you expect to get back. Never included in the answer and never used to rank; it is read only when a result turns out to be wrong, which is when knowing the intent is what makes the report actionable."
},
"results": {
"type": [
"array",
"object"
],
"description": "Spectral findings to render. An array, or the `{ results: [...] }` object a run returned."
}
},
"additionalProperties": true
}PRO — Curated guide to one API topic (e.g. "gateways", "api governance", "discovery", "agents"). Bundles the matching topic area (with related areas), top guidance, rules, policies, and standards, relevant papers and recent stories, plus the API Evangelist services that can help a team with this topic.
| Argument | Type | Description |
|---|---|---|
| topic* | string | The topic to build a guide for. |
| context | string | Optional: why you are asking. One sentence — the task you are trying to complete, or what you expect to get back. Never included in the answer and never used to rank; it is read only when a result turns out to be wrong, which is when knowing the intent is what makes the report actionable. |
{
"type": "object",
"required": [
"topic"
],
"properties": {
"topic": {
"type": "string",
"description": "The topic to build a guide for."
},
"context": {
"type": "string",
"description": "Optional: why you are asking. One sentence — the task you are trying to complete, or what you expect to get back. Never included in the answer and never used to rank; it is read only when a result turns out to be wrong, which is when knowing the intent is what makes the report actionable."
}
}
}Services, tools, or standards ranked by how many companies adopt them. Free.
| Argument | Type | Description |
|---|---|---|
| page | integer | Page number, 1-based (default 1). Use with `limit` to walk a long list. |
| type | string | What to rank by adoption across the companies: "service" (default), "tool" or "standard". |
| limit | integer | Results per page, 1-100 (default 25). |
| context | string | Optional: why you are asking. One sentence — the task you are trying to complete, or what you expect to get back. Never included in the answer and never used to rank; it is read only when a result turns out to be wrong, which is when knowing the intent is what makes the report actionable. |
{
"type": "object",
"properties": {
"page": {
"type": "integer",
"default": 1,
"minimum": 1,
"description": "Page number, 1-based (default 1). Use with `limit` to walk a long list."
},
"type": {
"enum": [
"service",
"tool",
"standard"
],
"type": "string",
"default": "service",
"description": "What to rank by adoption across the companies: \"service\" (default), \"tool\" or \"standard\"."
},
"limit": {
"type": "integer",
"default": 25,
"maximum": 100,
"minimum": 1,
"description": "Results per page, 1-100 (default 25)."
},
"context": {
"type": "string",
"description": "Optional: why you are asking. One sentence — the task you are trying to complete, or what you expect to get back. Never included in the answer and never used to rank; it is read only when a result turns out to be wrong, which is when knowing the intent is what makes the report actionable."
}
}
}Cross-section ranking of the 40 tracked investment dimensions (AI, cloud, governance, …) by company signal. Free.
| Argument | Type | Description |
|---|---|---|
| page | integer | Page number, 1-based (default 1). Use with `limit` to walk a long list. |
| limit | integer | Results per page, 1-100 (default 25). |
| context | string | Optional: why you are asking. One sentence — the task you are trying to complete, or what you expect to get back. Never included in the answer and never used to rank; it is read only when a result turns out to be wrong, which is when knowing the intent is what makes the report actionable. |
{
"type": "object",
"properties": {
"page": {
"type": "integer",
"default": 1,
"minimum": 1,
"description": "Page number, 1-based (default 1). Use with `limit` to walk a long list."
},
"limit": {
"type": "integer",
"default": 25,
"maximum": 100,
"minimum": 1,
"description": "Results per page, 1-100 (default 25)."
},
"context": {
"type": "string",
"description": "Optional: why you are asking. One sentence — the task you are trying to complete, or what you expect to get back. Never included in the answer and never used to rank; it is read only when a result turns out to be wrong, which is when knowing the intent is what makes the report actionable."
}
}
}Map each REST operation to its MCP tool and Agent Skill — the API -> MCP -> Agent-Skill chain — from an APIs.json, with a free/paid coverage scorecard and a flow map.
| Argument | Type | Description |
|---|---|---|
| context | string | Optional: why you are asking. One sentence — the task you are trying to complete, or what you expect to get back. Never included in the answer and never used to rank; it is read only when a result turns out to be wrong, which is when knowing the intent is what makes the report actionable. |
{
"type": "object",
"properties": {
"context": {
"type": "string",
"description": "Optional: why you are asking. One sentence — the task you are trying to complete, or what you expect to get back. Never included in the answer and never used to rank; it is read only when a result turns out to be wrong, which is when knowing the intent is what makes the report actionable."
}
},
"additionalProperties": true
}Generate an example request and success-response payload for every operation from its schema.
| Argument | Type | Description |
|---|---|---|
| context | string | Optional: why you are asking. One sentence — the task you are trying to complete, or what you expect to get back. Never included in the answer and never used to rank; it is read only when a result turns out to be wrong, which is when knowing the intent is what makes the report actionable. |
| document* | string | object | The API description to operate on — OpenAPI, AsyncAPI, Arazzo or JSON Schema. A YAML/JSON string or an already-parsed object; both are accepted. |
{
"type": "object",
"required": [
"document"
],
"properties": {
"context": {
"type": "string",
"description": "Optional: why you are asking. One sentence — the task you are trying to complete, or what you expect to get back. Never included in the answer and never used to rank; it is read only when a result turns out to be wrong, which is when knowing the intent is what makes the report actionable."
},
"document": {
"type": [
"string",
"object"
],
"description": "The API description to operate on — OpenAPI, AsyncAPI, Arazzo or JSON Schema. A YAML/JSON string or an already-parsed object; both are accepted."
}
},
"additionalProperties": true
}Reconcile a waivers file against lint output: suppress sanctioned violations and surface the expired, stale, and expiring ones. Returns the effective failing set a build should gate on.
| Argument | Type | Description |
|---|---|---|
| context | string | Optional: why you are asking. One sentence — the task you are trying to complete, or what you expect to get back. Never included in the answer and never used to rank; it is read only when a result turns out to be wrong, which is when knowing the intent is what makes the report actionable. |
| waivers* | string | object | The waivers file to reconcile — sanctioned violations, with expiry. |
| violations* | array | object | string | Lint output to reconcile against the waivers. An array of findings, or the object a linter returned. |
{
"type": "object",
"required": [
"waivers",
"violations"
],
"properties": {
"context": {
"type": "string",
"description": "Optional: why you are asking. One sentence — the task you are trying to complete, or what you expect to get back. Never included in the answer and never used to rank; it is read only when a result turns out to be wrong, which is when knowing the intent is what makes the report actionable."
},
"waivers": {
"type": [
"string",
"object"
],
"description": "The waivers file to reconcile — sanctioned violations, with expiry."
},
"violations": {
"type": [
"array",
"object",
"string"
],
"description": "Lint output to reconcile against the waivers. An array of findings, or the object a linter returned."
}
},
"additionalProperties": true
}Score how reusable a set of APIs is and detect duplication across them — the anti-sprawl view of an estate.
| Argument | Type | Description |
|---|---|---|
| context | string | Optional: why you are asking. One sentence — the task you are trying to complete, or what you expect to get back. Never included in the answer and never used to rank; it is read only when a result turns out to be wrong, which is when knowing the intent is what makes the report actionable. |
{
"type": "object",
"properties": {
"context": {
"type": "string",
"description": "Optional: why you are asking. One sentence — the task you are trying to complete, or what you expect to get back. Never included in the answer and never used to rank; it is read only when a result turns out to be wrong, which is when knowing the intent is what makes the report actionable."
}
},
"additionalProperties": true
}Unified search across the whole network: 5k+ stories, 77 topic areas, 2.5k governance building blocks, papers, conversations, videos, tools, timelines, services, and vocabulary. Filter with types (posts, areas, guidance, rules, policies, standards, strategies, schema, properties, experiences, lifecycle, conversations, videos, papers, services, solutions, tools, timelines, vocabulary).
| Argument | Type | Description |
|---|---|---|
| q | string | Free text over title, summary, tags, and body. |
| page | integer | Page number, 1-based (default 1). Use with `limit` to walk a long list. |
| sort | string | Order when there is no `q`: "default" (dated content newest first, the rest A-Z), "title" (A-Z) or "date" (newest first). A `q` always orders by relevance. |
| tags | array | Tag slugs; match any by default. |
| limit | integer | Results per page, 1-100 (default 25). |
| match | string | How multiple `tags` combine: "any" (default, at least one) or "all" (every tag). |
| types | array | Content types to include — plural resource names: posts, services, solutions, tools, areas, papers, videos, conversations, guidance, rules, policies, standards, strategies…, e.g. ["posts","papers"]. |
How far a standards body actually got: repositories published, how many graduated past unclassified and the resulting share, release cadence, contributor count — with the provenance of every figure and an explicit list of what is NOT measured. Free, because a specification is a public good.
| Argument | Type | Description |
|---|---|---|
| slug* | string | Standards body slug, as find_measured_standards returns it, e.g. "asyncapi". |
| context | string | Optional: why you are asking. One sentence — the task you are trying to complete, or what you expect to get back. Never included in the answer and never used to rank; it is read only when a result turns out to be wrong, which is when knowing the intent is what makes the report actionable. |
{
"type": "object",
"required": [
"slug"
],
"properties": {
"slug": {
"type": "string",
"description": "Standards body slug, as find_measured_standards returns it, e.g. \"asyncapi\"."
},
"context": {
"type": "string",
"description": "Optional: why you are asking. One sentence — the task you are trying to complete, or what you expect to get back. Never included in the answer and never used to rank; it is read only when a result turns out to be wrong, which is when knowing the intent is what makes the report actionable."
}
}
}Who is actually behind a standard: the governing bodies and their membership, the working groups, the member companies, and the named people. Carries the caveats where our machine-readable source disagrees with the body's own published roster. Free.
| Argument | Type | Description |
|---|---|---|
| slug* | string | Standards body slug, as find_measured_standards returns it, e.g. "asyncapi". |
| context | string | Optional: why you are asking. One sentence — the task you are trying to complete, or what you expect to get back. Never included in the answer and never used to rank; it is read only when a result turns out to be wrong, which is when knowing the intent is what makes the report actionable. |
{
"type": "object",
"required": [
"slug"
],
"properties": {
"slug": {
"type": "string",
"description": "Standards body slug, as find_measured_standards returns it, e.g. \"asyncapi\"."
},
"context": {
"type": "string",
"description": "Optional: why you are asking. One sentence — the task you are trying to complete, or what you expect to get back. Never included in the answer and never used to rank; it is read only when a result turns out to be wrong, which is when knowing the intent is what makes the report actionable."
}
}
}Every repository a standards body publishes, with maturity, stars, forks, open issues and archived status. Free.
| Argument | Type | Description |
|---|---|---|
| page | integer | Page number, 1-based (default 1). Use with `limit` to walk a long list. |
| slug* | string | Standards body slug, as find_measured_standards returns it, e.g. "asyncapi". |
| limit | integer | Results per page, 1-100 (default 25). |
| context | string | Optional: why you are asking. One sentence — the task you are trying to complete, or what you expect to get back. Never included in the answer and never used to rank; it is read only when a result turns out to be wrong, which is when knowing the intent is what makes the report actionable. |
{
"type": "object",
"required": [
"slug"
],
"properties": {
"page": {
"type": "integer",
"description": "Page number, 1-based (default 1). Use with `limit` to walk a long list."
},
"slug": {
"type": "string",
"description": "Standards body slug, as find_measured_standards returns it, e.g. \"asyncapi\"."
},
"limit": {
"type": "integer",
"maximum": 100,
"minimum": 1,
"description": "Results per page, 1-100 (default 25)."
},
"context": {
"type": "string",
"description": "Optional: why you are asking. One sentence — the task you are trying to complete, or what you expect to get back. Never included in the answer and never used to rank; it is read only when a result turns out to be wrong, which is when knowing the intent is what makes the report actionable."
}
}
}Report something wrong with a result: wrong data, a filter that did not filter, a ranking that put off-topic results first, a number you could not reproduce, or an answer that was useless for your task. Free, and the fastest way to get a defect fixed — the support sweep reads the log this lands in. Say what you expected as well as what you got.
| Argument | Type | Description |
|---|---|---|
| tool | string | Optional name of the tool that produced it. |
| about | string | Optional slug, area, paper or story the report concerns. |
| context | string | Optional: why you are asking. One sentence — the task you are trying to complete, or what you expect to get back. Never included in the answer and never used to rank; it is read only when a result turns out to be wrong, which is when knowing the intent is what makes the report actionable. |
| problem* | string | What was wrong. Be specific — the tool you called, the arguments, and what came back. |
| expected | string | What you expected instead. |
| severity | string | wrong = factually incorrect; misleading = correct but reads as something else; unhelpful = right and useless. |
{
"type": "object",
"required": [
"problem"
],
"properties": {
"tool": {
"type": "string",
"description": "Optional name of the tool that produced it."
},
"about": {
"type": "string",
"description": "Optional slug, area, paper or story the report concerns."
},
"context": {
"type": "string",
"description": "Optional: why you are asking. One sentence — the task you are trying to complete, or what you expect to get back. Never included in the answer and never used to rank; it is read only when a result turns out to be wrong, which is when knowing the intent is what makes the report actionable."
},
"problem": {
"type": "string",
"description": "What was wrong. Be specific — the tool you called, the arguments, and what came back."
},
"expected": {
"type": "string",
"description": "What you expected instead."
},
"severity": {
"enum": [
"wrong",
"misleading",
"unhelpful"
],
"type": "string",
"description": "wrong = factually incorrect; misleading = correct but reads as something else; unhelpful = right and useless."
}
}
}Lint an OpenAPI, AsyncAPI, Arazzo, or JSON Schema document against the curated best-of-breed ruleset (Spectral) and return the findings. Pass your own `ruleset` to run rules you own instead of the catalog — which is what you should do before gating on anything.
| Argument | Type | Description |
|---|---|---|
| context | string | Optional: why you are asking. One sentence — the task you are trying to complete, or what you expect to get back. Never included in the answer and never used to rank; it is read only when a result turns out to be wrong, which is when knowing the intent is what makes the report actionable. |
| document* | string | object | The API description to operate on — OpenAPI, AsyncAPI, Arazzo or JSON Schema. A YAML/JSON string or an already-parsed object; both are accepted. |
{
"type": "object",
"required": [
"document"
],
"properties": {
"context": {
"type": "string",
"description": "Optional: why you are asking. One sentence — the task you are trying to complete, or what you expect to get back. Never included in the answer and never used to rank; it is read only when a result turns out to be wrong, which is when knowing the intent is what makes the report actionable."
},
"document": {
"type": [
"string",
"object"
],
"description": "The API description to operate on — OpenAPI, AsyncAPI, Arazzo or JSON Schema. A YAML/JSON string or an already-parsed object; both are accepted."
}
},
"additionalProperties": true
}Validate an API Onboarding Descriptor (AID) against the api-commons schema and report which optional sections it fills in.
| Argument | Type | Description |
|---|---|---|
| context | string | Optional: why you are asking. One sentence — the task you are trying to complete, or what you expect to get back. Never included in the answer and never used to rank; it is read only when a result turns out to be wrong, which is when knowing the intent is what makes the report actionable. |
| descriptor* | string | object | An API Onboarding Descriptor (AID) to validate. Aliases: `aid`, `document`. |
{
"type": "object",
"required": [
"descriptor"
],
"properties": {
"context": {
"type": "string",
"description": "Optional: why you are asking. One sentence — the task you are trying to complete, or what you expect to get back. Never included in the answer and never used to rank; it is read only when a result turns out to be wrong, which is when knowing the intent is what makes the report actionable."
},
"descriptor": {
"type": [
"string",
"object"
],
"description": "An API Onboarding Descriptor (AID) to validate. Aliases: `aid`, `document`."
}
},
"additionalProperties": true
}Re-verify a governance certificate against the API it attests to. If the API drifted or the certificate was forged, verification fails.
| Argument | Type | Description |
|---|---|---|
| api* | string | object | The API description being attested or verified. String or parsed object. |
| context | string | Optional: why you are asking. One sentence — the task you are trying to complete, or what you expect to get back. Never included in the answer and never used to rank; it is read only when a result turns out to be wrong, which is when knowing the intent is what makes the report actionable. |
| certificate* | string | object | The governance certificate to re-verify. Alias: `cert`. |
{
"type": "object",
"required": [
"certificate",
"api"
],
"properties": {
"api": {
"type": [
"string",
"object"
],
"description": "The API description being attested or verified. String or parsed object."
},
"context": {
"type": "string",
"description": "Optional: why you are asking. One sentence — the task you are trying to complete, or what you expect to get back. Never included in the answer and never used to rank; it is read only when a result turns out to be wrong, which is when knowing the intent is what makes the report actionable."
},
"certificate": {
"type": [
"string",
"object"
],
"description": "The governance certificate to re-verify. Alias: `cert`."
}
},
"additionalProperties": true
}{
"type": "object",
"properties": {
"q": {
"type": "string",
"description": "Free text over title, summary, tags, and body."
},
"page": {
"type": "integer",
"default": 1,
"minimum": 1,
"description": "Page number, 1-based (default 1). Use with `limit` to walk a long list."
},
"sort": {
"enum": [
"default",
"title",
"date"
],
"type": "string",
"description": "Order when there is no `q`: \"default\" (dated content newest first, the rest A-Z), \"title\" (A-Z) or \"date\" (newest first). A `q` always orders by relevance."
},
"tags": {
"type": "array",
"items": {
"type": "string"
},
"description": "Tag slugs; match any by default."
},
"limit": {
"type": "integer",
"default": 25,
"maximum": 100,
"minimum": 1,
"description": "Results per page, 1-100 (default 25)."
},
"match": {
"enum": [
"any",
"all"
],
"type": "string",
"default": "any",
"description": "How multiple `tags` combine: \"any\" (default, at least one) or \"all\" (every tag)."
},
"fields": {
"type": "array",
"items": {
"type": "string"
},
"description": "Return only these keys on each record, e.g. [\"slug\",\"title\",\"url\"]."
},
"context": {
"type": "string",
"description": "Optional: why you are asking. One sentence — the task you are trying to complete, or what you expect to get back. Never included in the answer and never used to rank; it is read only when a result turns out to be wrong, which is when knowing the intent is what makes the report actionable."
}
}
}| context | string | Optional: why you are asking. One sentence — the task you are trying to complete, or what you expect to get back. Never included in the answer and never used to rank; it is read only when a result turns out to be wrong, which is when knowing the intent is what makes the report actionable. |
{
"type": "object",
"required": [
"type"
],
"properties": {
"q": {
"type": "string",
"description": "Free text over title, summary, tags, and body."
},
"page": {
"type": "integer",
"default": 1,
"minimum": 1,
"description": "Page number, 1-based (default 1). Use with `limit` to walk a long list."
},
"sort": {
"enum": [
"default",
"title",
"date"
],
"type": "string",
"description": "Order when there is no `q`: \"default\" (dated content newest first, the rest A-Z), \"title\" (A-Z) or \"date\" (newest first). A `q` always orders by relevance."
},
"tags": {
"type": "array",
"items": {
"type": "string"
},
"description": "Tag slugs; match any by default."
},
"type": {
"enum": [
"guidance",
"rules",
"policies",
"standards",
"strategies",
"schema",
"properties",
"experiences",
"lifecycle"
],
"type": "string",
"description": "Building-block type: guidance, rules, policies, standards, strategies, schema, properties, experiences or lifecycle."
},
"limit": {
"type": "integer",
"default": 25,
"maximum": 100,
"minimum": 1,
"description": "Results per page, 1-100 (default 25)."
},
"match": {
"enum": [
"any",
"all"
],
"type": "string",
"default": "any",
"description": "How multiple `tags` combine: \"any\" (default, at least one) or \"all\" (every tag)."
},
"fields": {
"type": "array",
"items": {
"type": "string"
},
"description": "Return only these keys on each record, e.g. [\"slug\",\"title\",\"url\"]."
},
"context": {
"type": "string",
"description": "Optional: why you are asking. One sentence — the task you are trying to complete, or what you expect to get back. Never included in the answer and never used to rank; it is read only when a result turns out to be wrong, which is when knowing the intent is what makes the report actionable."
}
}
}{
"type": "object",
"properties": {
"q": {
"type": "string",
"description": "Free text over title, summary, tags, and body."
},
"page": {
"type": "integer",
"default": 1,
"minimum": 1,
"description": "Page number, 1-based (default 1). Use with `limit` to walk a long list."
},
"sort": {
"enum": [
"default",
"title",
"date"
],
"type": "string",
"description": "Order when there is no `q`: \"default\" (dated content newest first, the rest A-Z), \"title\" (A-Z) or \"date\" (newest first). A `q` always orders by relevance."
},
"tags": {
"type": "array",
"items": {
"type": "string"
},
"description": "Tag slugs; match any by default."
},
"limit": {
"type": "integer",
"default": 25,
"maximum": 100,
"minimum": 1,
"description": "Results per page, 1-100 (default 25)."
},
"match": {
"enum": [
"any",
"all"
],
"type": "string",
"default": "any",
"description": "How multiple `tags` combine: \"any\" (default, at least one) or \"all\" (every tag)."
},
"fields": {
"type": "array",
"items": {
"type": "string"
},
"description": "Return only these keys on each record, e.g. [\"slug\",\"title\",\"url\"]."
},
"context": {
"type": "string",
"description": "Optional: why you are asking. One sentence — the task you are trying to complete, or what you expect to get back. Never included in the answer and never used to rank; it is read only when a result turns out to be wrong, which is when knowing the intent is what makes the report actionable."
}
}
}{
"type": "object",
"properties": {
"q": {
"type": "string",
"description": "Free text over title, summary, tags, and body."
},
"page": {
"type": "integer",
"default": 1,
"minimum": 1,
"description": "Page number, 1-based (default 1). Use with `limit` to walk a long list."
},
"sort": {
"enum": [
"default",
"title",
"date"
],
"type": "string",
"description": "Order when there is no `q`: \"default\" (dated content newest first, the rest A-Z), \"title\" (A-Z) or \"date\" (newest first). A `q` always orders by relevance."
},
"tags": {
"type": "array",
"items": {
"type": "string"
},
"description": "Tag slugs; match any by default."
},
"limit": {
"type": "integer",
"default": 25,
"maximum": 100,
"minimum": 1,
"description": "Results per page, 1-100 (default 25)."
},
"match": {
"enum": [
"any",
"all"
],
"type": "string",
"default": "any",
"description": "How multiple `tags` combine: \"any\" (default, at least one) or \"all\" (every tag)."
},
"fields": {
"type": "array",
"items": {
"type": "string"
},
"description": "Return only these keys on each record, e.g. [\"slug\",\"title\",\"url\"]."
},
"context": {
"type": "string",
"description": "Optional: why you are asking. One sentence — the task you are trying to complete, or what you expect to get back. Never included in the answer and never used to rank; it is read only when a result turns out to be wrong, which is when knowing the intent is what makes the report actionable."
}
}
}| Optional: why you are asking. One sentence — the task you are trying to complete, or what you expect to get back. Never included in the answer and never used to rank; it is read only when a result turns out to be wrong, which is when knowing the intent is what makes the report actionable. |
{
"type": "object",
"properties": {
"q": {
"type": "string",
"description": "Free text over title, summary, tags, and body."
},
"page": {
"type": "integer",
"default": 1,
"minimum": 1,
"description": "Page number, 1-based (default 1). Use with `limit` to walk a long list."
},
"sort": {
"enum": [
"default",
"title",
"date"
],
"type": "string",
"description": "Order when there is no `q`: \"default\" (dated content newest first, the rest A-Z), \"title\" (A-Z) or \"date\" (newest first). A `q` always orders by relevance."
},
"tags": {
"type": "array",
"items": {
"type": "string"
},
"description": "Tag slugs; match any by default."
},
"year": {
"type": "string",
"description": "Four-digit year; only posts whose date starts with it, e.g. \"2024\"."
},
"limit": {
"type": "integer",
"default": 25,
"maximum": 100,
"minimum": 1,
"description": "Results per page, 1-100 (default 25)."
},
"match": {
"enum": [
"any",
"all"
],
"type": "string",
"default": "any",
"description": "How multiple `tags` combine: \"any\" (default, at least one) or \"all\" (every tag)."
},
"fields": {
"type": "array",
"items": {
"type": "string"
},
"description": "Return only these keys on each record, e.g. [\"slug\",\"title\",\"url\"]."
},
"context": {
"type": "string",
"description": "Optional: why you are asking. One sentence — the task you are trying to complete, or what you expect to get back. Never included in the answer and never used to rank; it is read only when a result turns out to be wrong, which is when knowing the intent is what makes the report actionable."
}
}
}{
"type": "object",
"properties": {
"q": {
"type": "string",
"description": "Free text over title, summary, tags, and body."
},
"page": {
"type": "integer",
"default": 1,
"minimum": 1,
"description": "Page number, 1-based (default 1). Use with `limit` to walk a long list."
},
"sort": {
"enum": [
"default",
"title",
"date"
],
"type": "string",
"description": "Order when there is no `q`: \"default\" (dated content newest first, the rest A-Z), \"title\" (A-Z) or \"date\" (newest first). A `q` always orders by relevance."
},
"tags": {
"type": "array",
"items": {
"type": "string"
},
"description": "Tag slugs; match any by default."
},
"limit": {
"type": "integer",
"default": 25,
"maximum": 100,
"minimum": 1,
"description": "Results per page, 1-100 (default 25)."
},
"match": {
"enum": [
"any",
"all"
],
"type": "string",
"default": "any",
"description": "How multiple `tags` combine: \"any\" (default, at least one) or \"all\" (every tag)."
},
"fields": {
"type": "array",
"items": {
"type": "string"
},
"description": "Return only these keys on each record, e.g. [\"slug\",\"title\",\"url\"]."
},
"context": {
"type": "string",
"description": "Optional: why you are asking. One sentence — the task you are trying to complete, or what you expect to get back. Never included in the answer and never used to rank; it is read only when a result turns out to be wrong, which is when knowing the intent is what makes the report actionable."
}
}
}{
"type": "object",
"properties": {
"q": {
"type": "string",
"description": "Free text over title, summary, tags, and body."
},
"page": {
"type": "integer",
"default": 1,
"minimum": 1,
"description": "Page number, 1-based (default 1). Use with `limit` to walk a long list."
},
"sort": {
"enum": [
"default",
"title",
"date"
],
"type": "string",
"description": "Order when there is no `q`: \"default\" (dated content newest first, the rest A-Z), \"title\" (A-Z) or \"date\" (newest first). A `q` always orders by relevance."
},
"tags": {
"type": "array",
"items": {
"type": "string"
},
"description": "Tag slugs; match any by default."
},
"limit": {
"type": "integer",
"default": 25,
"maximum": 100,
"minimum": 1,
"description": "Results per page, 1-100 (default 25)."
},
"match": {
"enum": [
"any",
"all"
],
"type": "string",
"default": "any",
"description": "How multiple `tags` combine: \"any\" (default, at least one) or \"all\" (every tag)."
},
"fields": {
"type": "array",
"items": {
"type": "string"
},
"description": "Return only these keys on each record, e.g. [\"slug\",\"title\",\"url\"]."
},
"context": {
"type": "string",
"description": "Optional: why you are asking. One sentence — the task you are trying to complete, or what you expect to get back. Never included in the answer and never used to rank; it is read only when a result turns out to be wrong, which is when knowing the intent is what makes the report actionable."
}
}
}{
"type": "object",
"properties": {
"q": {
"type": "string",
"description": "Free text over title, summary, tags, and body."
},
"page": {
"type": "integer",
"default": 1,
"minimum": 1,
"description": "Page number, 1-based (default 1). Use with `limit` to walk a long list."
},
"sort": {
"enum": [
"default",
"title",
"date"
],
"type": "string",
"description": "Order when there is no `q`: \"default\" (dated content newest first, the rest A-Z), \"title\" (A-Z) or \"date\" (newest first). A `q` always orders by relevance."
},
"tags": {
"type": "array",
"items": {
"type": "string"
},
"description": "Tag slugs; match any by default."
},
"limit": {
"type": "integer",
"default": 25,
"maximum": 100,
"minimum": 1,
"description": "Results per page, 1-100 (default 25)."
},
"match": {
"enum": [
"any",
"all"
],
"type": "string",
"default": "any",
"description": "How multiple `tags` combine: \"any\" (default, at least one) or \"all\" (every tag)."
},
"fields": {
"type": "array",
"items": {
"type": "string"
},
"description": "Return only these keys on each record, e.g. [\"slug\",\"title\",\"url\"]."
},
"context": {
"type": "string",
"description": "Optional: why you are asking. One sentence — the task you are trying to complete, or what you expect to get back. Never included in the answer and never used to rank; it is read only when a result turns out to be wrong, which is when knowing the intent is what makes the report actionable."
}
}
}{
"type": "object",
"properties": {
"q": {
"type": "string",
"description": "Free text over title, summary, tags, and body."
},
"page": {
"type": "integer",
"default": 1,
"minimum": 1,
"description": "Page number, 1-based (default 1). Use with `limit` to walk a long list."
},
"sort": {
"enum": [
"default",
"title",
"date"
],
"type": "string",
"description": "Order when there is no `q`: \"default\" (dated content newest first, the rest A-Z), \"title\" (A-Z) or \"date\" (newest first). A `q` always orders by relevance."
},
"tags": {
"type": "array",
"items": {
"type": "string"
},
"description": "Tag slugs; match any by default."
},
"limit": {
"type": "integer",
"default": 25,
"maximum": 100,
"minimum": 1,
"description": "Results per page, 1-100 (default 25)."
},
"match": {
"enum": [
"any",
"all"
],
"type": "string",
"default": "any",
"description": "How multiple `tags` combine: \"any\" (default, at least one) or \"all\" (every tag)."
},
"fields": {
"type": "array",
"items": {
"type": "string"
},
"description": "Return only these keys on each record, e.g. [\"slug\",\"title\",\"url\"]."
},
"context": {
"type": "string",
"description": "Optional: why you are asking. One sentence — the task you are trying to complete, or what you expect to get back. Never included in the answer and never used to rank; it is read only when a result turns out to be wrong, which is when knowing the intent is what makes the report actionable."
}
}
}| category | string | Vocabulary category: resources, actions, personas, domains, schemas or tags. |
{
"type": "object",
"properties": {
"q": {
"type": "string",
"description": "Free text over title, summary, tags, and body."
},
"page": {
"type": "integer",
"default": 1,
"minimum": 1,
"description": "Page number, 1-based (default 1). Use with `limit` to walk a long list."
},
"sort": {
"enum": [
"default",
"title",
"date"
],
"type": "string",
"description": "Order when there is no `q`: \"default\" (dated content newest first, the rest A-Z), \"title\" (A-Z) or \"date\" (newest first). A `q` always orders by relevance."
},
"tags": {
"type": "array",
"items": {
"type": "string"
},
"description": "Tag slugs; match any by default."
},
"limit": {
"type": "integer",
"default": 25,
"maximum": 100,
"minimum": 1,
"description": "Results per page, 1-100 (default 25)."
},
"match": {
"enum": [
"any",
"all"
],
"type": "string",
"default": "any",
"description": "How multiple `tags` combine: \"any\" (default, at least one) or \"all\" (every tag)."
},
"fields": {
"type": "array",
"items": {
"type": "string"
},
"description": "Return only these keys on each record, e.g. [\"slug\",\"title\",\"url\"]."
},
"context": {
"type": "string",
"description": "Optional: why you are asking. One sentence — the task you are trying to complete, or what you expect to get back. Never included in the answer and never used to rank; it is read only when a result turns out to be wrong, which is when knowing the intent is what makes the report actionable."
},
"category": {
"enum": [
"resources",
"actions",
"personas",
"domains",
"schemas",
"tags"
],
"type": "string",
"description": "Vocabulary category: resources, actions, personas, domains, schemas or tags."
}
}
}| fields | array | Return only these keys on each record, e.g. ["slug","title","url"]. |
| context | string | Optional: why you are asking. One sentence — the task you are trying to complete, or what you expect to get back. Never included in the answer and never used to rank; it is read only when a result turns out to be wrong, which is when knowing the intent is what makes the report actionable. |
{
"type": "object",
"properties": {
"q": {
"type": "string",
"description": "Free text over title, summary, tags, and body."
},
"page": {
"type": "integer",
"default": 1,
"minimum": 1,
"description": "Page number, 1-based (default 1). Use with `limit` to walk a long list."
},
"sort": {
"enum": [
"default",
"title",
"date"
],
"type": "string",
"description": "Order when there is no `q`: \"default\" (dated content newest first, the rest A-Z), \"title\" (A-Z) or \"date\" (newest first). A `q` always orders by relevance."
},
"tags": {
"type": "array",
"items": {
"type": "string"
},
"description": "Tag slugs; match any by default."
},
"limit": {
"type": "integer",
"default": 25,
"maximum": 100,
"minimum": 1,
"description": "Results per page, 1-100 (default 25)."
},
"match": {
"enum": [
"any",
"all"
],
"type": "string",
"default": "any",
"description": "How multiple `tags` combine: \"any\" (default, at least one) or \"all\" (every tag)."
},
"types": {
"type": "array",
"items": {
"type": "string"
},
"description": "Content types to include — plural resource names: posts, services, solutions, tools, areas, papers, videos, conversations, guidance, rules, policies, standards, strategies…, e.g. [\"posts\",\"papers\"]."
},
"fields": {
"type": "array",
"items": {
"type": "string"
},
"description": "Return only these keys on each record, e.g. [\"slug\",\"title\",\"url\"]."
},
"context": {
"type": "string",
"description": "Optional: why you are asking. One sentence — the task you are trying to complete, or what you expect to get back. Never included in the answer and never used to rank; it is read only when a result turns out to be wrong, which is when knowing the intent is what makes the report actionable."
}
}
}