# OpenAITools public API

Version: 1.1.0. Base URL: https://openaitools.app

## Audience and access
External AI agents and human developers may use the public, read-only directory API anonymously.
Registration: not required. Provisioning endpoint: none. Authentication method: none.
No API key, bearer token, OAuth grant, email verification or cookies are required.
Do not submit passwords, payment credentials or third-party API keys to this service.

## Public endpoints
- GET /api/tools: keyword search, filters and pagination.
- GET /api/md/tool/{handle}: a Markdown directory profile.
- GET or POST /api/ask: keyword-based directory search in a structured format.
- POST /api/mcp: MCP tools over stateless Streamable HTTP.
- POST /api/a2a: A2A 0.3 message/send with immediate Message responses.

## Limits and failures
These APIs read directory records; they do not log into or execute the listed third-party products.
No OAuth authorization server, protected private resource, paid API or credential issuance is offered.
Do not invent a registration flow. For invalid parameters, correct the request using the OpenAPI description.
If an edge rate limit returns 429, honor Retry-After when present and use exponential backoff.
For temporary 5xx failures, retry with backoff. No fixed per-minute quota is advertised.



## Requests and results
GET /api/tools accepts q, category, pricing (all/free/freemium/paid), sort (traffic/growth/saved/newest/rating), locale, page and per_page.
GET /api/md/tool/{handle}?locale=en returns text/markdown; use a handle from search results.
GET /api/ask?q=video&limit=5&locale=en or POST /api/ask with {"query":"video","limit":5,"locale":"en"} returns keyword-based SoftwareApplication results. This is not a claim of full NLWeb interoperability.

## MCP
POST /api/mcp implements stateless Streamable HTTP with the official MCP SDK.
Send Content-Type: application/json and Accept: application/json, text/event-stream.
Use initialize to negotiate a version (including 2025-06-18), then notifications/initialized and tools/list.
Subsequent requests carry MCP-Protocol-Version with the negotiated version.
tools/call returns JSON in content and structuredContent, with isError for execution failures.
GET/DELETE return 405 because this deployment has no persistent sessions or standalone event stream.

## A2A 0.3
POST /api/a2a accepts message/send and returns an immediate agent Message; no stored Tasks, streaming or push notifications.
Plain text parts are treated as search keywords. For exact operations use one data part:
```json
{"jsonrpc":"2.0","id":"example","method":"message/send","params":{"message":{"kind":"message","role":"user","messageId":"user-1","parts":[{"kind":"data","data":{"tool":"get_tool_details","arguments":{"handle":"chatgpt-4","locale":"en"}}}]}}}
```
Supported output modes: application/json and text/plain. This stateless directory agent does not execute third-party products.

## Sources of truth
- [OpenAPI schemas](https://openaitools.app/api/openapi.json)
- [Usage skill](https://openaitools.app/SKILL.md)
- [MCP server card](https://openaitools.app/.well-known/mcp/server-card.json)
- [A2A agent card](https://openaitools.app/.well-known/agent-card.json)
