Every API here is available over the APIs.io API and to AI agents over MCP.
MCP server
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
Tools for apis
7 MCP tools reach this
find_apisBrowse and filter every API in the catalog.
get_api_artifactsOne API's artifacts, grouped by type.
get_openapiThe primary OpenAPI for this API.
find_similar_apisAPIs that look like this one.
apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
resolveTurn a domain, URL or GitHub org into the provider it belongs to.
find_cohortsEvery scored population of providers in the catalog.
All 92 tools →
Call it yourself
curl for this page
This API
curl "https://apis.io/api/v1/apis/anahana-com:anahana-com-mcp-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"
Calls without X-API-Key need no key. Calls with it need a paid plan — get a key.
Get an API key
Free tier, no form to fill in. Signing in shares your email address with us — we
store it to create your key and to recognise you if you sign in with another
provider. See our Privacy Policy and
Terms.
A second provider on the same verified email joins the account you already have.
openapi: 3.2.0
info:
title: Anahana agent-facing MCP API
version: 1.3.0
summary: The MCP endpoint, its OAuth 2.1 tier, and the static discovery surfaces on www.anahana.com.
description: 'Anahana (anahana.com) publishes wellness and spiritual-growth content in 24 languages. This document describes every machine-facing endpoint the site exposes. Everything is read-only and everything it returns is already public on the website — there is no private data, no write action, and no credential required to read anything. The MCP server covers all 24 languages, backed by a public build-time index under /content-index/ that the site regenerates on every deploy. The single dynamic endpoint is `POST /mcp`, a Model Context Protocol server over Streamable HTTP; the rest are static discovery documents. Human-readable companion: https://www.anahana.com/en/ai-agents/resources-for-ai-agents/'
termsOfService: https://www.anahana.com/en/terms/
contact:
name: Anahana
email: team@anahana.com
url: https://www.anahana.com/en/contact/
license:
name: 'Quote and summarize with attribution: yes. Full republication: no. AI training: yes.'
url: https://www.anahana.com/robots.txt
servers:
- url: https://www.anahana.com
description: Production
tags:
- name: MCP
description: Model Context Protocol server (Streamable HTTP, JSON-RPC 2.0).
paths:
/mcp:
post:
tags:
- MCP
operationId: mcpJsonRpc
summary: MCP JSON-RPC 2.0 endpoint (Streamable HTTP)
description: 'A single JSON-RPC 2.0 endpoint implementing MCP over Streamable HTTP. Two-step usage: (1) call `initialize` and read the `mcp-session-id` **response header**; (2) send that value back as an `mcp-session-id` request header on every later call. Responses are returned as a `text/event-stream` of `event: message` lines carrying JSON-RPC payloads. Negotiated protocol versions: 2025-11-25 (latest), 2025-06-18, 2025-03-26, 2024-11-05, 2024-10-07. Five tools. The three content tools (search_content, get_article, lookup_angel_number) take an optional `language`; omit it and you get English. It accepts one code, a comma-separated list, or "all". Supported codes: en, de, it, es, nl, fr, sv, pl, cs, fi, hu, ro, ru, da, no, pt, tr, el, id, uk, ja, ko, zh, th. Search is keyword/substring matching in every one of them, never semantic. The two product tools, list_products (optional `language`; omit it for every product on sale) and get_product (`sku`), return each product''s page url, list price, currency and language, never a payment link; checkout happens on the product page. Anonymous calls are rate limited to 30 requests/minute per IP; calls bearing an OAuth 2.1 access token get 120 requests/minute per client.'
externalDocs:
description: Model Context Protocol specification
url: https://modelcontextprotocol.io/
security:
- {}
- mcpOAuth:
- read:content
parameters:
- name: mcp-session-id
in: header
required: false
description: Session id returned in the `mcp-session-id` response header of `initialize`. Required on every request after `initialize`.
schema:
type: string
- name: mcp-protocol-version
in: header
required: false
description: Negotiated protocol version, echoed back on subsequent requests by spec-compliant clients.
schema:
type: string
examples:
- '2025-11-25'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/JsonRpcRequest'
examples:
initialize:
summary: Step 1 — initialize (read mcp-session-id from the response headers)
value:
jsonrpc: '2.0'
id: 1
method: initialize
params:
protocolVersion: '2025-11-25'
capabilities: {}
clientInfo:
name: your-agent
version: 1.0.0
toolsList:
summary: List the five tools
value:
jsonrpc: '2.0'
id: 2
method: tools/list
searchContent:
summary: tools/call — search_content
value:
jsonrpc: '2.0'
id: 3
method: tools/call
params:
name: search_content
arguments:
query: box breathing
getArticle:
summary: tools/call — get_article
value:
jsonrpc: '2.0'
id: 4
method: tools/call
params:
name: get_article
arguments:
url_or_slug: 111-angel-number
lookupAngelNumber:
summary: tools/call — lookup_angel_number
value:
jsonrpc: '2.0'
id: 5
method: tools/call
params:
name: lookup_angel_number
arguments:
number: '1111'
searchContentOneLanguage:
summary: tools/call — search_content in one language (omit `language` for English)
value:
jsonrpc: '2.0'
id: 6
method: tools/call
params:
name: search_content
arguments:
query: 呼吸
language: zh
searchContentManyLanguages:
summary: tools/call — search_content across a list, or across every indexed language with "all"
value:
jsonrpc: '2.0'
id: 7
method: tools/call
params:
name: search_content
arguments:
query: box breathing
language: de,fr,ja
getArticleLanguage:
summary: tools/call — get_article, bare slug resolved in another language
value:
jsonrpc: '2.0'
id: 8
method: tools/call
params:
name: get_article
arguments:
url_or_slug: 111-angel-number
language: ru
lookupAngelNumberLanguage:
summary: tools/call — lookup_angel_number in another language (coverage differs per language)
value:
jsonrpc: '2.0'
id: 9
method: tools/call
params:
name: lookup_angel_number
arguments:
number: '1008'
language: ja
listProducts:
summary: 'tools/call — list_products (every product on sale: page url, list price, currency, language; never a payment link)'
value:
jsonrpc: '2.0'
id: 10
method: tools/call
params:
name: list_products
arguments: {}
getProduct:
summary: tools/call — get_product by sku
value:
jsonrpc: '2.0'
id: 11
method: tools/call
params:
name: get_product
arguments:
sku: complete-guide-en
responses:
'200':
description: JSON-RPC response, delivered as a server-sent-events stream. The `initialize` response additionally carries the `mcp-session-id` header.
headers:
mcp-session-id:
description: Session identifier. Returned by `initialize`; send it back on every subsequent request.
schema:
type: string
content:
text/event-stream:
schema:
type: string
examples:
initializeResult:
summary: initialize result
value: 'event: message
data: {"result":{"protocolVersion":"2025-11-25","capabilities":{"tools":{"listChanged":true}},"serverInfo":{"name":"Anahana Content MCP","version":"1.1.0"}},"jsonrpc":"2.0","id":1}
'
application/json:
schema:
$ref: '#/components/schemas/JsonRpcResponse'
'400':
description: Malformed JSON-RPC, or a call made without the `mcp-session-id` header.
content:
application/json:
schema:
$ref: '#/components/schemas/JsonRpcResponse'
'429':
description: 'Rate limit exceeded. Anonymous: 30/min per IP. Registered: 120/min per client_id.'
headers:
Retry-After:
description: Seconds until the current one-minute window resets.
schema:
type: integer
content:
application/json:
schema:
$ref: '#/components/schemas/RateLimitError'
options:
tags:
- MCP
operationId: mcpPreflight
summary: CORS preflight (does not consume rate-limit budget)
responses:
'200':
description: 'CORS headers. `Access-Control-Allow-Origin: *`; `mcp-session-id` is exposed.'
components:
schemas:
JsonRpcResponse:
type: object
required:
- jsonrpc
properties:
jsonrpc:
type: string
const: '2.0'
id:
type:
- string
- integer
- 'null'
result:
type: object
error:
type: object
properties:
code:
type: integer
message:
type: string
data: {}
RateLimitError:
type: object
properties:
error:
type: string
const: rate_limited
message:
type: string
retry_after_seconds:
type: integer
JsonRpcRequest:
type: object
required:
- jsonrpc
- method
properties:
jsonrpc:
type: string
const: '2.0'
id:
type:
- string
- integer
method:
type: string
description: 'MCP method. Supported: `initialize`, `notifications/initialized`, `tools/list`, `tools/call`, `ping`.'
examples:
- initialize
- tools/list
- tools/call
params:
type: object
securitySchemes:
mcpOAuth:
type: oauth2
description: 'Optional. Anonymous access to /mcp is fully supported: the five tools published today — search_content, get_article, lookup_angel_number, list_products, get_product — are available on both tiers and return identical data on each. A token raises the rate limit from 30/min per IP to 120/min per client and gives a stable, revocable client identity. Registration is open (RFC 7591) at /mcp/register.'
flows:
authorizationCode:
authorizationUrl: https://www.anahana.com/mcp/authorize
tokenUrl: https://www.anahana.com/mcp/token
refreshUrl: https://www.anahana.com/mcp/token
scopes:
read:content: Read the public articles and calculators — the same data anonymous callers receive from the same tools.
externalDocs:
description: Resources for AI Agents — every agent-facing surface with example calls
url: https://www.anahana.com/en/ai-agents/resources-for-ai-agents/