PublicAPIs.io
Search 1,500+ public APIs with docs, code and auth/free-tier filters; list or sponsor your API.
Should I use this
Quality & Safety
Based on automated analysis of tool definitions and protocol compliance.
Context Cost
This is the approximate number of tokens consumed each time the server's tools are loaded into a model's context. Higher counts reduce the attention available for other tasks.
Install
One-Click Install
Add this to your `claude_desktop_config.json` file:
{
"mcpServers": {
"directory": {
"url": "https://publicapis.io/mcp"
}
}
}Remote endpoints
https://publicapis.io/mcpstreamable-httpWhat it can do
Tool inventory
Tools (8)
🟢search_apis(query, category, auth, free, https, ...)
Find a public API or data source for a task: use this whenever the user (or your code) needs an API, dataset or third-party service, e.g. weather, geocoding, payments, sports scores, crypto prices, jobs, LLMs. Searches 1,500+ APIs on PublicAPIs.io and returns name, description, category, link and signals (auth: none/api_key/oauth, free_tier, https). Filter with auth="none" for APIs that need no key, free=true, https=true.
Input Schema
{
"type": "object",
"properties": {
"query": {
"type": "string",
"description": "What the API should do, in plain words."
},
"category": {
"type": "string",
"description": "Optional category name or id, e.g. \"Weather\", \"finance\"."
},
"auth": {
"type": "string",
"enum": [
"none",
"api_key",
"oauth"
],
"description": "Only APIs with this authentication. \"none\" = no key needed."
},
"free": {
"type": "boolean",
"description": "Only APIs with a free tier."
},
"https": {
"type": "boolean",
"description": "Only APIs served over HTTPS."
},
"limit": {
"type": "integer",
"minimum": 1,
"maximum": 20
}
}
}🟢get_api(slug)
Everything about one API by slug (from search_apis): documentation summary, endpoints, auth, pricing and links. Use before writing integration code.
Input Schema
{
"type": "object",
"properties": {
"slug": {
"type": "string"
}
},
"required": [
"slug"
]
}🟢get_quickstart(slug, language)
Ready-to-run example code for calling an API, in javascript, python or curl. Use when you are about to integrate an API into code. Verified samples are marked verified=true.
Input Schema
{
"type": "object",
"properties": {
"slug": {
"type": "string"
},
"language": {
"type": "string",
"enum": [
"javascript",
"python",
"curl"
]
}
},
"required": [
"slug"
]
}🟢compare_apis(slugs)
Compare 2-5 APIs side by side (auth, free tier, HTTPS, pricing, docs summary) to choose one. Pass slugs from search_apis.
Input Schema
{
"type": "object",
"properties": {
"slugs": {
"type": "array",
"items": {
"type": "string"
},
"minItems": 2,
"maxItems": 5
}
},
"required": [
"slugs"
]
}🟢list_offerings
Ways to get an API listed or sponsored on PublicAPIs.io, with fixed prices, current sponsorship availability and the rules.
Input Schema
{
"type": "object",
"properties": {}
}🟢start_deal(message, contact_email, contact_name, company, api_name, ...)
Open a conversation with the PublicAPIs.io broker agent to list or sponsor an API. Say what you want in plain language and include the API name, website and a contact email if you have them. Returns deal_id and deal_key (keep both; they are needed to continue) and the broker's reply. Every deal is approved by a person before payment.
Input Schema
{
"type": "object",
"properties": {
"message": {
"type": "string"
},
"contact_email": {
"type": "string",
"description": "Where approval, payment link and go-live emails are sent."
},
"contact_name": {
"type": "string"
},
"company": {
"type": "string"
},
"api_name": {
"type": "string"
},
"website": {
"type": "string"
}
},
"required": [
"message",
"contact_email"
]
}🟡send_message(deal_id, deal_key, message)
Reply to the broker in an open deal. Returns the broker's answer and the deal status.
Input Schema
{
"type": "object",
"properties": {
"deal_id": {
"type": "string"
},
"deal_key": {
"type": "string"
},
"message": {
"type": "string"
}
},
"required": [
"deal_id",
"deal_key",
"message"
]
}🟢get_deal(deal_id, deal_key)
Status of a deal: negotiating, agreed, awaiting_approval, awaiting_payment (payment_url is included), publishing, live (live_url), rejected. Also returns the last messages.
Input Schema
{
"type": "object",
"properties": {
"deal_id": {
"type": "string"
},
"deal_key": {
"type": "string"
}
},
"required": [
"deal_id",
"deal_key"
]
}Community
Evidence