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

A
Description quality
100%
Schema completeness
75%
Naming quality
98%
Poisoning risk
100%
Permission match
100%
Protocol compliance
100%

Based on automated analysis of tool definitions and protocol compliance.

Context Cost

~901Tokens (tool definitions)
~579 BTypical response size
Moderate attention impact (0.70% of 128k context)

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-http

What it can do

Tool inventory

Tools (8)

🟢 Read-only🟡 Write🔴 Delete⚪ Unknown
🟢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

Rate this Server

Evidence

Recent observations

verifiedversion not recorded8 tools