API Reference

The IndexMCP API is free and open. No authentication required for read endpoints.

Base URL

https://indexmcp.com

All endpoints return JSON. Dates are in ISO 8601 format (UTC).

Rate Limits

Read endpoints
60 req/min
Search endpoint
30 req/min
Submit endpoint
5 req/hour

Rate limit headers are included in all responses: X-RateLimit-Limit, X-RateLimit-Remaining.

Endpoints

GET/api/tools

List all approved tools with optional filters and pagination.

Parameters

NameTypeDescription
categorystringFilter by category (e.g. "Web Search", "Databases")
statusstringFilter by status: passing | failing | untested
compatibilitystringFilter by compatible client: "Claude Desktop" | "Cursor" | "Windsurf"
sortstringSort order: newest | stars | recently_tested | name
limitnumberResults per page (default: 20, max: 100)
offsetnumberPagination offset (default: 0)

Example

GET /api/tools?category=Databases&status=passing&limit=10

{
  "tools": [
    {
      "id": "uuid",
      "slug": "postgresql-mcp",
      "name": "PostgreSQL MCP",
      "description": "Query PostgreSQL databases...",
      "github_url": "https://github.com/...",
      "author": "modelcontextprotocol",
      "category": "Databases",
      "stars": 14500,
      "compatibility": ["Claude Desktop", "Cursor"],
      "status": "passing",
      "last_tested_at": "2026-04-01T12:00:00Z"
    }
  ],
  "total": 41,
  "limit": 10,
  "offset": 0
}
GET/api/tools/[slug]

Get full details for a single tool including the last 12 test results.

Parameters

NameTypeDescription
slugstringURL slug of the tool (path parameter)

Example

GET /api/tools/playwright-mcp

{
  "tool": {
    "id": "uuid",
    "slug": "playwright-mcp",
    "name": "Playwright MCP",
    "status": "passing",
    "stars": 8200,
    ...
  },
  "test_logs": [
    {
      "id": "uuid",
      "tested_at": "2026-04-13T08:00:00Z",
      "result": "passing",
      "latency_ms": 142,
      "error_message": null
    }
  ]
}
GET/api/search

Full-text search across tool names and descriptions.

Parameters

NameTypeDescription
qstringSearch query (required)
limitnumberMax results (default: 20)

Example

GET /api/search?q=web+search

{
  "results": [
    {
      "slug": "brave-search-mcp",
      "name": "Brave Search MCP",
      "description": "Web and local search...",
      "status": "passing",
      "stars": 14500
    }
  ],
  "query": "web search",
  "count": 3
}
GET/api/categories

List all tool categories with their respective tool counts.

Example

GET /api/categories

{
  "categories": [
    { "name": "Code & Dev", "count": 52 },
    { "name": "Databases", "count": 41 },
    { "name": "Web Search", "count": 34 },
    { "name": "Productivity", "count": 31 }
  ]
}
POST/api/submit

Submit a new MCP tool for review and indexing.

Request Body (JSON)

{
  "name": "My MCP Server",           // required
  "github_url": "https://github.com/...", // required
  "description": "What it does...",  // required, max 200 chars
  "category": "Web Search",          // required
  "compatibility": ["Claude Desktop"], // optional
  "submitter_email": "[email protected]" // optional
}

Response

// 200 OK
{ "success": true, "message": "Tool submitted for review" }

// 400 Bad Request
{ "error": "Missing required field: github_url" }

// 422 Unprocessable Entity
{ "error": "Invalid GitHub URL format" }

Open Source

IndexMCP is open source and built on Supabase + Next.js. The full API source is available on GitHub. Questions or feature requests? Open an issue or contribute a PR.

Submit a tool →