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.
openapi: 3.2.0
info:
title: entityindex.ai MCP API
version: 1.0.0
summary: Read-only index of verified businesses for AI agents (today, hotels in Andorra).
description: 'Public, read-only JSON API of entityindex.ai, an index of verified businesses
built for AI agents. The first vertical is hotels and accommodation in Andorra;
more verticals (e.g. restaurants) will follow the same entity schema.
- Every verified fact comes from the business''s official website and carries
its source URL and check date.
- entityindex.ai does not book, sell or charge anything. `action_url` points to
the official website or booking engine with `src=entityindex`.
- No authentication, no API key, no cookies. CORS is open (`Access-Control-Allow-Origin: *`).
- Responses are static JSON files; data is regenerated periodically (see `generated`).
- A Model Context Protocol (MCP) server with the same data is available at `/mcp`.
Data license: CC BY 4.0. Attribution: "entityindex.ai — MERX TECHNOLOGIES, SLU".'
contact:
name: entityindex.ai
url: https://entityindex.ai/legal/en/
license:
name: CC BY 4.0
identifier: CC-BY-4.0
url: https://creativecommons.org/licenses/by/4.0/
x-logo:
url: https://entityindex.ai/badge/verified.svg
servers:
- url: https://entityindex.ai
description: Production
security: []
tags:
- name: MCP
description: Model Context Protocol endpoint (JSON-RPC 2.0 over Streamable HTTP).
paths:
/.well-known/mcp.json:
get:
tags:
- MCP
operationId: getMcpServerCard
summary: MCP server card
description: Discovery document of the MCP server (name, version, remote URL, transport, tools).
responses:
'200':
description: MCP server card.
content:
application/json:
schema:
type: object
additionalProperties: true
4XX:
$ref: '#/components/responses/ClientError'
/mcp:
post:
tags:
- MCP
operationId: callMcp
summary: MCP endpoint (JSON-RPC 2.0)
description: 'Stateless Model Context Protocol server (Streamable HTTP, protocol versions
2025-11-25, 2025-06-18, 2025-03-26 and 2024-11-05). Send JSON-RPC 2.0 messages
such as `initialize`, `tools/list`, `tools/call`, `prompts/list` or `resources/read`.
Tools: search_hotels, get_hotel, list_areas, search_entities, get_entity, list_verticals.
GET is not supported (no SSE stream) and returns 405.'
parameters:
- name: Accept
in: header
required: false
schema:
type: string
example: application/json, text/event-stream
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/JsonRpcRequest'
examples:
toolsList:
summary: List tools
value:
jsonrpc: '2.0'
id: 1
method: tools/list
searchHotels:
summary: Search hotels with spa in Soldeu
value:
jsonrpc: '2.0'
id: 2
method: tools/call
params:
name: search_hotels
arguments:
area: Soldeu
spa: true
responses:
'200':
description: JSON-RPC 2.0 response (result or error).
content:
application/json:
schema:
$ref: '#/components/schemas/JsonRpcResponse'
'202':
description: Notification accepted (no body).
4XX:
$ref: '#/components/responses/ClientError'
components:
schemas:
JsonRpcRequest:
type: object
required:
- jsonrpc
- method
properties:
jsonrpc:
type: string
const: '2.0'
id:
type:
- string
- integer
method:
type: string
example: tools/call
params:
type: object
additionalProperties: true
Error:
type: object
required:
- error
- status
- message
properties:
error:
type: string
description: Machine-readable error code
example: not_found
status:
type: integer
description: HTTP status code
example: 404
message:
type: string
description: Human-readable explanation
docs:
type: string
format: uri
description: Link to the documentation
JsonRpcResponse:
type: object
required:
- jsonrpc
properties:
jsonrpc:
type: string
const: '2.0'
id:
type:
- string
- integer
- 'null'
result:
type: object
additionalProperties: true
error:
type: object
properties:
code:
type: integer
message:
type: string
data: {}
responses:
ClientError:
description: Client error, e.g. 404 when the country, vertical or entity does not exist.
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
example:
error: not_found
status: 404
message: No resource at /api/entities/andorra/hotels/unknown.json
docs: https://entityindex.ai/openapi.yaml
externalDocs:
description: Guide for LLMs and agents (llms.txt)
url: https://entityindex.ai/en/llms.txt