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: BotFriendly Verify API
description: A directory of services AI agents can actually use. Query, filter, and discover bot-friendly APIs, tools, and merchants by category, interface (MCP, OpenAPI, llms.txt) and agent payment/commerce protocol.
version: 1.0.0
contact:
url: https://botfriendly.xyz
servers:
- url: https://botfriendly.xyz/api/v1
tags:
- name: Verify
paths:
/verify:
post:
operationId: verifyService
summary: Check whether a service really exposes the interfaces it claims
description: Fetches each claimed endpoint and reports what it found. Nothing is written and no auth is required. This is the same check applied to owner-submitted updates and to automated discovery, exposed so an external workflow doesn't have to reimplement it.
requestBody:
required: true
content:
application/json:
schema:
type: object
required:
- url
properties:
url:
type: string
format: uri
has_mcp_server:
type: boolean
mcp_server_url:
type: string
has_openapi_spec:
type: boolean
openapi_spec_url:
type: string
has_api:
type: boolean
api_url:
type: string
description: A live API base URL (api.example.com, or a path under /api or /v1) that answers in JSON
has_skill_file:
type: boolean
skill_file_url:
type: string
has_llms_txt:
type: boolean
llms_txt_url:
type: string
has_structured_feed:
type: boolean
structured_feed_url:
type: string
responses:
'200':
description: Probe verdicts per claimed interface, plus `listable` (true when an MCP server, OpenAPI spec or API completed a handshake and the URL is a product rather than an article; `not_listable_reason` says why when false). Per-domain limits are only applied at submission.
'400':
description: Validation error
'429':
description: Rate limit exceeded
tags:
- Verify