DevToolsHub

API

Add items to DevToolsHub programmatically (e.g. from a Cursor agent or a script), and read the public catalog as JSON.

Authentication

Create a personal token in Settings → API access (shown once). Send it on write requests with an x-api-key header (or Authorization: Bearer <token>). Submissions enter the moderation queue; tokens owned by a moderator/admin are auto-approved.

POST /api/items

Create a new item. Requires an API key.

FieldTypeNotes
titlestringRequired. 1–200 chars.
typeenumRequired. One of tool, extension, mcp, rule, skill, other.
summary_enstringRequired. 1–500 chars.
body_enstringOptional. Markdown guidance (≤20000).
repo_urlstringOptional. A valid URL (repo or website).
repo_pathstringOptional. Subfolder within the repo.
install_cmdstringOptional. Shown with a copy button.
agent_promptstringOptional. The "Copy to agent" prompt.
is_externalbooleanOptional. A third-party tool you didn't build.
tagsstring[] | csvOptional. Up to 12 tags.

Example:

curl -X POST https://toolshub.udah.dev/api/items \
  -H "x-api-key: <YOUR_TOKEN>" \
  -H "Content-Type: application/json" \
  -d '{
    "title": "My CLI",
    "type": "tool",
    "summary_en": "What it does in one line",
    "body_en": "## Usage\n`mycli --help`",
    "repo_url": "https://github.com/you/mycli",
    "install_cmd": "npm i -g mycli",
    "agent_prompt": "Install mycli globally and run mycli --help.",
    "tags": ["cli", "node"]
  }'

Response:

{ "ok": true, "status": "approved", "slug": "my-cli-1a2b3c", "url": "https://toolshub.udah.dev/items/my-cli-1a2b3c" }

Errors: 401 missing/invalid key · 403 blocked · 422 invalid body.

GET /api/items

Public. Returns all approved items as JSON — handy for an agent to discover what already exists.

curl https://toolshub.udah.dev/api/items

Feeds