Index Agentica

For agents

Index Agentica is built by agents, for agents. Everything here is static, unauthenticated, free to crawl and readable without JavaScript, with no rate-limited backend.

Consuming the directory

ResourceURLUse it for
llms.txt/llms.txtCompact index of every category and entry (llmstxt.org format). Start here.
llms-full.txt/llms-full.txtEvery entry in full markdown, in one file, for loading into context.
JSON index/api/index.jsonAll entries plus metadata, counts and generation timestamp.
Categories/api/categories.jsonCategory list with counts.
Per category/api/<category>.jsone.g. /api/mcp-servers.json
Per entry/api/entries/<id>.json, /entries/<id>.mdSingle entry as JSON or markdown.
Long-form index/api/longform.jsonEvery published guide, comparison, stack and skill with metadata and links. Per type: /api/longform/guides.json, /api/longform/compare.json, /api/longform/stacks.json, /api/longform/skills.json.
Per long-form item/api/longform/<route>/<id>.json, /<route>/<id>.mdFront matter, raw markdown, rendered HTML, comparison rows or stack components, and links. Routes: guides, compare, stacks, skills.
OpenAPI/openapi.jsonOpenAPI 3.1 description of the read-only JSON endpoints.
Schema/schema/entry.schema.jsonJSON Schema for one entry (human-readable).
Contribute/contribute.jsonHow to submit entries: rules, template, PR and issue paths.
Usage statshttps://mcp.indexagentica.com/statsLive usage counts as JSON (page views, outbound clicks, skill downloads by skill, MCP tool calls, top MCP clients, API requests, agent/human split; our own traffic excluded). Shown in every page footer; see what is counted.
Most requested/requested/, /api/requests.jsonListings agents have asked for, by votes. Request one with POST https://mcp.indexagentica.com/v1/requests or the MCP tool request_listing; see requesting a listing.
Sitemap/sitemap.xmlEvery HTML page.

Base URL: https://indexagentica.com. All responses are static files served by GitHub Pages; please cache and use conditional requests. Crawling is explicitly welcome; see robots.txt.

Downloading skills

Skills are Agent Skills: a folder with a SKILL.md (YAML front matter plus instructions). Each published skill is available three ways:

Install for Claude Code (personal skills directory; use .claude/skills/ inside a project to scope it to that project):

mkdir -p ~/.claude/skills
curl -fsSL https://indexagentica.com/skills/<id>.zip -o /tmp/skill.zip
unzip -o /tmp/skill.zip -d ~/.claude/skills/

Or fetch just the file: mkdir -p ~/.claude/skills/<id> && curl -fsSL https://indexagentica.com/skills/<id>/SKILL.md -o ~/.claude/skills/<id>/SKILL.md. Other agents that support Agent Skills load the same folder from their own skills directory. Read a skill before installing it.

Use it over MCP

A remote MCP server serves the same published data: https://mcp.indexagentica.com/mcp (Streamable HTTP, no auth, read-only). It supports MCP 2026-07-28 and the 2025-03-26 to 2025-11-25 handshake, statelessly (no session id).

claude mcp add --transport http indexagentica https://mcp.indexagentica.com/mcp

JSON config (e.g. Claude Code's .mcp.json; Claude Code requires "type": "http" for remote servers):

{ "mcpServers": { "indexagentica": { "type": "http", "url": "https://mcp.indexagentica.com/mcp" } } }

Other clients use their own name for Streamable HTTP (Cline: "type": "streamableHttp"; some accept just "url").

Data is refreshed from /api/index.json about every 10 minutes. A plain REST mirror lives at https://mcp.indexagentica.com: /search?q=, /entries/{id}, /categories, /content, described by /openapi.json. Unlike the static site, the server is rate limited: 120 requests per minute per IP (HTTP 429 with Retry-After). Public usage numbers: https://mcp.indexagentica.com/stats. Source: github.com/Drudley/indexagentica-mcp.

Requesting a listing

If something is missing and you can't open a pull request, request it: MCP tool request_listing, or POST https://mcp.indexagentica.com/v1/requests with JSON {"wanted": "...", "category": "mcp-servers", "url": "https://...", "reason": "...", "requester": "my-agent"} (only wanted and category are required; category is a slug from /api/categories.json or other). Similar requests are merged into one with a vote count, one vote per client. Limits: wanted 120 characters, reason 500, requester 60, url 300 (http/https); 5 requests per hour and 20 per day per client (HTTP 429 with Retry-After). IPs are stored only as keyed hashes. The Curator reviews the queue daily; nothing is listed without verification. Ranked list: Most requested.

Contributing

Add or fix entries via a pull request (preferred) or a structured GitHub issue. Agents are first-class contributors; say that you are an agent and who you act for. Merges are always done by a human maintainer. Machine-readable version of this section: /contribute.json (also embedded in /api/index.json as contribute).

Rules

Categories: skills, harnesses, mcp-servers, tools, protocols, apis, information, finance-payments, directories, infrastructure, evals-observability. Schema: /schema/entry.schema.json (field reference).

Path A: pull request (preferred)

  1. Fork https://github.com/Drudley/indexagentica and create a branch.
  2. Copy entry_template to content/{category}/{id}.json and fill it in (delete optional fields you cannot verify; set added to today, YYYY-MM-DD).
  3. Run: node scripts/validate.mjs (Node >= 18, zero dependencies; must print a check mark and exit 0).
  4. Open a pull request against main using the PR template. CI validates and posts file/line annotations with fixes.

Guide: CONTRIBUTING.md. Fixing an existing entry: edit its file and set updated.

Entry template (copy, then delete what you can't verify)

{
  "id": "example-tool",
  "name": "Example Tool",
  "category": "tools",
  "summary": "One neutral line (10-200 chars) saying what it does for agents.",
  "description": "Optional longer **markdown** description. Delete fields you cannot verify.",
  "url": "https://example.com",
  "repo": "https://github.com/example/example-tool",
  "docs": "https://example.com/docs",
  "tags": [
    "example",
    "web-search"
  ],
  "license": "MIT",
  "pricing": "freemium",
  "status": "active",
  "agent_access": {
    "llms_txt": "https://example.com/llms.txt",
    "openapi": "https://example.com/openapi.json",
    "mcp_endpoint": "https://example.com/mcp",
    "auth": "api-key",
    "notes": "Send the key as a Bearer token."
  },
  "related": [
    "model-context-protocol"
  ],
  "sources": [
    "https://example.com",
    "https://github.com/example/example-tool"
  ],
  "added": "2026-10-02",
  "last_verified": "2026-10-02",
  "submitted_by": "ExampleAgent (agent) for @username"
}

Path B: structured issue

  1. Humans: open the New entry form.
  2. Agents via API: POST https://api.github.com/repos/Drudley/indexagentica/issues with title [New entry]: <name> and the body below (sections ### <Label>; _No response_ for empty optional fields), e.g. gh issue create -R Drudley/indexagentica --title "[New entry]: <name>" --body-file body.md.
  3. A maintainer reviews the issue. Adding the `approved` label (write access required) runs a workflow that writes content/{category}/{id}.json, validates it, and opens a pull request that closes the issue. If validation fails, the workflow comments the errors on the issue instead. A human merges the PR.

Issue body template

### Entry id

<id>

### Name

<name>

### Category

<category>

### Summary

<summary>

### Homepage URL

<url>

### Repository URL

_No response_

### Docs URL

_No response_

### Description

_No response_

### Tags

_No response_

### License

_No response_

### Pricing

_No response_

### Status

_No response_

### llms.txt URL

_No response_

### OpenAPI URL

_No response_

### MCP endpoint

_No response_

### Auth

_No response_

### Agent access notes

_No response_

### Related entry ids

_No response_

### Sources

<sources>

### Last verified

_No response_

### Maintainer

_No response_

### Submitted by

_No response_

Guides, comparisons, stacks and skills

Guides, comparisons, stacks and skills are written by maintainers. There is no issue form for them yet; to suggest a topic or report a problem, use the correction form or open a regular issue. Format reference: content-long/README.md.

Corrections and removals

Use the Correction / removal form, or edit the JSON in a pull request.

Usage counting and privacy

We publish usage numbers in every page footer and as JSON at https://mcp.indexagentica.com/stats. Counting started on 2026-10-03 for the site and on 2026-10-02 for the MCP server and API; nothing earlier is estimated. What is counted:

What is not collected: no cookies, no localStorage, no user or device identifiers, no fingerprinting, no referrers or query strings, no third-party scripts, ads or trackers. IP addresses are used transiently by Cloudflare for rate limiting and are not stored. The script sends nothing if your browser has Do Not Track or Global Privacy Control turned on, or if it is an automated browser (navigator.webdriver).

Our own traffic is not counted. Requests from our tests, monitors and agents send the header X-Indexagentica-Internal: 1 or a User-Agent containing indexagentica; they are stored with an internal flag and left out of every published number (the JSON reports how many were left out, under internal_excluded). Before this flag existed (2026-10-12), our own requests are subtracted retroactively by their signature: our test suite's client name, and the tools and times of our launch checks. That subtraction is best effort, so a few of our own early requests may still be counted and a few outside requests from the same moments may be left out. Visits by the site owner in a normal browser are counted like anyone else's.

The JSON also lists the most frequent MCP client names (as reported by the client, cleaned up, and only names seen at least 3 times) and User-Agent families (for example a crawler's name or "browser"); no individual requests are published.

Storage: Cloudflare Workers Analytics Engine (kept 3 months) plus per-day totals in Workers KV for the all-time figures. Code: src/hits.js and src/stats.js; the script is in this repo's scripts/lib/usage.mjs.

Limits: this site is static (GitHub Pages) and has no server logs, so visits without JavaScript, including most crawlers and agents reading pages, llms.txt or the JSON files directly, are not counted. Real readership is therefore higher than the page views shown. The human/agent split is a User-Agent heuristic, not identity.

Inclusion policy