Honeypot
Search and browse the Honeypot index of skills for AI agents, with editor's picks.
Install
Add this to your client's MCP configuration (Claude Desktop: claude_desktop_config.json; Cursor: .cursor/mcp.json; VS Code and others use the same "mcpServers" shape).
https://github.com/oidsdev/honeypot/releases/download/v1.0.0/honeypot.mcpbDocumentation
From the project's README on GitHub, refreshed weekly. Links open on GitHub.
Honeypot
A free index of skills for AI agents. Machine-readable. No sign-up.
Live: https://honeypot-e6c.pages.dev
Fetch it by machine
The index is one JSON file. schema_version is "1"; entries live under .skills.
# everything
curl -sL https://honeypot-e6c.pages.dev/api/skills.json | jq '.skills[] | .name'
# one category only (cheaper than filtering client-side)
curl -sL https://honeypot-e6c.pages.dev/api/by-category/trading.json | jq '.skills[] | .name'
# install one skill
curl -sL https://honeypot-e6c.pages.dev/api/skills.json \
| jq -r '.skills[] | select(.name=="kalshi") | .install'
# then run the command it prints
Linkable searches
The site takes the same filters as URL params, so any view can be shared or bookmarked:
?q=— ranked match on name, description, and tags (a one-character typo still matches; hits are highlighted)?tag=— exact tag?category=— exact category
Params combine: https://honeypot-e6c.pages.dev/?category=trading&tag=prediction-markets.
Filtering happens in the browser, so curl on that URL returns the unfiltered page.
The page ranks matches and tolerates a one-character typo. A script can apply the
same category and tag filters, plus a plain substring check, to the JSON:
# substring stand-in for ?q= (the page ranks; this check does not)
curl -sL https://honeypot-e6c.pages.dev/api/skills.json | jq '.skills[]
| select(.category=="data")
| select(.tags | index("sports-data"))
| select((.name+" "+.description+" "+(.tags|join(" "))) | ascii_downcase | contains("odds"))
| .name'
Each entry has name, description, category, tags, last_verified (date),
skill_md_url, and install. New additions: /api/changelog.json and /feed.xml (RSS).
Editor's picks live at /api/editors-picks.json. There's no score: a skill is a pick
when it passes every check in PICK_CRITERIA in scripts/gen.py (description length,
tags, verified recently, SKILL.md link). The file carries the checklist itself as
criteria and criteria_text, and the site prints that text as-is.
Every card on the site shows its last_verified date. Anything not re-verified in
STALE_AFTER_DAYS (180, set in scripts/gen.py and published as stale_after_days
in /api/editors-picks.json) gets a "stale" badge and drops out of the picks.
Freshness is date-based only; nothing pings the skills.
The same JSON is mirrored at
https://raw.githubusercontent.com/oidsdev/honeypot/main/api/skills.json.
Submit a skill
- Write your skill as a
SKILL.md. Start from skill-template.md. - Fork this repo.
- Add it at
skills/<your-skill>/SKILL.md. - Lint it from the repo root:
python3 scripts/lint_skill.py skills/<your-skill>
pass is clean. fail prints file:line: reason for each problem: missing name or description, a description outside 20-300 characters, a banned phrase (the list is in scripts/lint_skill.py), or a relative link that does not resolve to a file.
- Open a pull request. We merge fast.
- Add the badge to your repo:
[](https://honeypot-e6c.pages.dev)
Per-skill badges live at /badge/<skill>.svg. The image shows the skill name, a version, and a check when the skill passes the linter in scripts/gen.py.
[](https://honeypot-e6c.pages.dev/skills/cron/)
Version is the optional version field in the SKILL.md frontmatter. With no version, the badge shows last_verified. The check means the frontmatter has name and description, name matches the directory, and the index entry has a category, tags, and a last_verified date. The SVG is static and cached for a day.
Requirements (learned the hard way — PRs missing these get bounced):
- Frontmatter must include
nameanddescription. Directory CLIs (e.g. skills.sh) silently skip files without them. - Pick one
category(trading, data, identity, meta, tooling, or propose a new one in the PR) and addtagsplus a currentlast_verifieddate — these feed the JSON index. - MIT-compatible license only. We can't index what we can't redistribute.
- Spam, duplicates, and anything malicious get closed. Every listing is PR-gated and read before it merges.
Layout
index.html— the siteja/index.html— Japanese homepagesearch.js— ranked search used by the site (no dependencies)categories/<name>/— landing page for each of the largest categories (generated)api/skills.json— the machine-readable indexscripts/gen.py— rebuilds everything derived fromskills.json(run after any change)scripts/lint_skill.py— checks a submitted skill (frontmatter, description length, banned phrases, relative links)scripts/lint-fixtures/— five sample skills the linter is checked against (--fixtures)llms.txt— agent-readable descriptionskill-template.md— blank SKILL.md templateskills/<name>/SKILL.md— the indexed skillstests/test_search.js—node tests/test_search.jstests/test_gen.py—python3 -m pytest tests/test_gen.pytests/test_mcp_server.py—python3 tests/test_mcp_server.pybadge/<name>.svg— per-skill badge, written byscripts/gen.py_headers— cache header for/badge/*(one day)
License
MIT — Orbital Desk LLC.
Frequently asked questions
What is Honeypot?
Search and browse the Honeypot index of skills for AI agents, with editor's picks.
How do I install Honeypot?
Follow the installation steps in its documentation, shown on this page and in its repository.
Does Honeypot need an API key?
Its registry entry lists no required key or secret. Some features may still need an account with the service it connects to.
Is Honeypot open source?
Yes. Its code is on GitHub under the MIT license.
Who maintains Honeypot?
It is published by oidsdev. AI.tn lists it but does not maintain or endorse it.
From the official MCP Registry. Listing is not an endorsement: review a server's code and permissions before giving it access to your data.