ToolPin Curated Registry
ToolPin hosts a first-party curated registry without running any custom infrastructure. The registry is versioned JSON in GitHub, reviewed through pull requests, fetched from raw GitHub at runtime, and bundled in the npm package as an offline fallback snapshot.
Use it for servers ToolPin maintainers are willing to recommend because the metadata is installable, reviewable, lockable, and documented. Do not use it as a broad directory.
The registry is deliberately small. Broad directories are useful for discovery; the curated registry is for entries ToolPin can safely turn into install plans.
URLs
Raw GitHub source of truth, no site deploy required:
https://raw.githubusercontent.com/proofofwork-agency/toolpin/main/registry/v0/servers
GitHub Pages / Docusaurus static mirror:
https://proofofwork-agency.github.io/toolpin/registry/v0/servers
For custom official-compatible registries, ToolPin appends /servers
automatically when configured with a base URL.
How the Registry Is Maintained
The source of truth is committed in this repository:
registry/v0/servers
The same payload is copied to the Docusaurus static directory:
website/static/registry/v0/servers
That second copy makes the registry available on the published documentation
site at https://proofofwork-agency.github.io/toolpin/registry/v0/servers. CI rejects
the change if the two files drift.
Maintainers review registry changes like code:
- every addition or update goes through a pull request;
npm run registry:checkvalidates schema, curation metadata, and install targets;- normal CI runs the full test suite and Docusaurus build;
- reviewers check whether the entry is actually installable and useful enough to recommend;
- entries can be removed or demoted when they become stale, duplicated, source-missing, or platform-only.
ToolPin does not automatically promote scraped directory results into this registry. A server belongs here only after a maintainer can explain why it is worth recommending.
Built-In Source
ToolPin ships this registry as the built-in toolpin source: a hosted curated
registry with bundled fallback. It is first in the source list, enabled by
default, and pinned. Users can filter to another source, but toolpin cannot be
disabled through .toolpin/registries.json, toolpin registry disable, or the
TUI source selector.
Then:
toolpin registry list
toolpin ingest --source toolpin
toolpin search github --source toolpin
Add Your Server by PR
Open a pull request that edits both files:
registry/v0/servers
website/static/registry/v0/servers
They must stay identical. Run this locally before opening the PR:
npm run registry:check
npm test
Each entry must be installable and include curation metadata. Use this shape as a starting point:
{
"server": {
"name": "io.github.example/server",
"title": "Example MCP Server",
"description": "What this server does and why it is useful.",
"version": "1.0.0",
"repository": {
"url": "https://github.com/example/server",
"source": "github"
},
"packages": [
{
"registryType": "npm",
"identifier": "@example/server",
"version": "1.0.0",
"transport": {
"type": "stdio"
}
}
]
},
"_meta": {
"dev.toolpin/curation": {
"status": "reviewed",
"reviewedAt": "2026-06-25",
"reviewedBy": "toolpin-maintainers",
"reason": "Why ToolPin recommends this server.",
"evidenceTier": "metadata-only",
"riskNotes": [],
"testedClients": ["claude"],
"toolpinEnforcement": {
"status": "not-verified",
"notes": "Branch protection and ToolPin CI enforcement have not been verified."
}
},
"dev.toolpin/clientSupport": {
"default": "unsupported",
"clients": {
"codex": {
"status": "toolpin-installable",
"installMode": "mcp-config",
"requirements": ["node>=22"],
"setupCommands": [],
"notes": "ToolPin can write this as a normal Codex MCP server."
},
"claude": {
"status": "toolpin-installable",
"installMode": "mcp-config",
"requirements": ["node>=22"],
"setupCommands": [],
"notes": "ToolPin can write this as a project MCP server."
}
}
}
}
}
Use metadata-only for reviewed registry metadata. Reserve digest-pinned,
byte-verified, and provenance-attested for entries where those checks really
exist. Use toolpinEnforcement.status: "enforced" only when branch protection or
rulesets require the ToolPin check; otherwise use not-verified with notes.
The container file (registry/v0/servers) wraps entries in a servers array plus
a metadata block. If metadata.count or metadata.total is present, it must
equal servers.length, or npm run registry:check fails. Package targets
require registryType, identifier, and transport.type; remote targets
require an https:// URL.
dev.toolpin/clientSupport is ToolPin-owned metadata:
toolpin-installable: ToolPin can generate the client MCP config directly.external-setup: the client is supported, but setup needs documented steps outside ToolPin, such as plugins, daemons, project initialization, or instruction-file writes.unsupported: ToolPin must not offer that client as an install target.
Use requirements for runtimes, CLIs, API-key prerequisites, OAuth support, or
other normal setup constraints. Use setupCommands only for documented external
steps; ToolPin does not run external setup commands from registry metadata.
For ContextRelay specifically, Codex is toolpin-installable through a normal
MCP config that runs package arguments equivalent to contextrelay codex-mcp server. Claude is external-setup: install ContextRelay globally, run
ctxrelay init --instructions project, and use the generated Claude
plugin/setup. ToolPin must not run ctxrelay init until an explicit external
setup flow exists because it writes project files and plugin state.
The PR description should include:
- what the server does;
- why it belongs in the curated registry;
- upstream repository or package URL;
- how you tested it;
- required environment variables or secrets;
- supported clients, if known;
- the required ToolPin status check name and protected branch;
- risk notes such as network access, filesystem access, write operations, or hosted-service dependency.
Reviewers should reject entries that are hosted-only, source-missing,
non-installable, stale, duplicate, or not useful enough to recommend. Use
evidenceTier and toolpinEnforcement.status honestly: metadata-only and
not-verified are valid for seed entries; reserve stronger labels for checks
ToolPin can actually verify.
Curation Gates
An entry is eligible for the curated registry when ToolPin can normalize it into a reviewable install plan. In practice that means:
- it has a stable
server.name,title,description, andversion; - it has a package target or HTTPS remote target;
- package entries include registry type, identifier, version, and transport;
- remote entries use HTTPS;
- it has a repository URL when source is available;
- required secrets are represented as metadata, not committed plaintext values;
- it includes
_meta["dev.toolpin/curation"]; - the curation status is
reviewed; evidenceTierrecords the strongest evidence ToolPin can honestly support;toolpinEnforcement.statusis eithernot-verifiedwith notes orenforcedwith workflow path, required status-check name, protected branch, and lockfile path recorded;- risk notes and tested clients are explicit, even when the arrays are empty.
Running ToolPin CI is not enough for the enforced label. The ToolPin check
must be required by branch protection or repository rulesets, so a failing
lockfile check can block merges. Until that is verified, use not-verified.
These are not popularity gates. A small server can be accepted if it is useful, maintained, and installable. A popular server can still be rejected if the metadata is not enough for ToolPin to review, lock, and enforce.
What Happens After Merge
After the PR lands, users can add the registry URL to .toolpin/registries.json
and ingest it:
toolpin ingest --source toolpin --live
toolpin search postgres --source toolpin
The lockfile records the resolved source metadata, so CI can later re-resolve against the same source and detect drift.
What This Registry Is Not
The curated registry is not a marketplace, gateway, hosted connector platform, or scrape of every MCP-related GitHub repository. It is a small list of servers ToolPin maintainers are comfortable helping users install through ToolPin.
Use Custom Registries when you want to add broader directories, company registries, private GitHub-hosted lists, or discovery-only indexes.