Honeypot MCP server
Commit Oct 21, 2026Provides a machine-readable index of skills for AI agents that can be searched and browsed via JSON API.
Also known as oidsdev/honeypot
- Stars
- 0
- Tools
- —
- Downloads, 30 days
- —
- Latest version
- 1.0.0
- Last commit
- Oct 21, 2026
- License
- MIT
What is Honeypot MCP?
Honeypot provides a machine-readable index of skills for AI agents that can be searched and browsed via JSON API.
Summary generated from the project's README
About Honeypot MCP server
Honeypot provides a machine-readable index of skills designed for AI agents to discover and use. It functions as a free, searchable directory that developers can access via a JSON API without needing to sign up for an account. The service organizes skills into categories like trading, data, identity, meta, and tooling, allowing for precise filtering through specific API endpoints.
Users can interact with the index by fetching the full skills list or specific subsets, such as skills within a single category. The system includes features for verifying skill freshness, marking entries as stale if they have not been re-verified within 180 days. Developers can also browse editor picks or subscribe to updates via an RSS feed. This tool is built for automation, providing direct install commands and structured data that includes names, descriptions, tags, and verification dates.
What you can do with it
- 1Automated skill discoveryAn AI agent can fetch the entire skills index via a JSON API to find new capabilities.
- 2Category-specific filteringA developer can request only the skills related to a specific domain like trading to save bandwidth.
Written from the project's README. Every use case is checked against a quote from it.
Automated checks
Ran Nov 14, 2026Full report →Not verified yet. A server needs a score of 80, no serious finding, and enough data for us to check. How checks work · What to fix for more points
- Source repository linked and reachableoidsdev/honeypot is public and reachablegithub.com/oidsdev/honeypot ↗Pass
- Package names this repository as its sourceNot checked
- Build provenance (Sigstore attestation)Not checked
- Open source license (OSI)MITspdx.org/licenses/MIT.html ↗Pass
- Commit or release in the last yearLast commit or release 2026-10-21github.com/oidsdev/honeypot ↗Pass
- OpenSSF ScorecardNot checked
- Package name not close to a popular packageNot checked
- No critical advisory in the package or its dependenciesNot checked
- No hidden instructions to the model0 tool descriptions and the README read; no override phrases, credential paths or hidden charactersPass
- Destructive tools are labelledNot checked
- Remote endpoint answers the MCP handshakeNot checked
README
View on GitHubHoneypot
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.
5. Open a pull request. We merge fast.
6. 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.
Honeypot MCP questions
How can I fetch the skill index programmatically?
You can fetch the entire index as a single JSON file or filter by category using the provided API endpoints.
How do I submit a new skill to the index?
To submit a skill, write a SKILL.md file using the provided template, fork the repository, add it to the skills directory, lint it, and open a pull request.
Does the index require a sign-up?
No, the Honeypot index is free and does not require any sign-up to use.