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.
| Field | Type | Notes |
|---|---|---|
title | string | Required. 1–200 chars. |
type | enum | Required. One of tool, extension, mcp, rule, skill, other. |
summary_en | string | Required. 1–500 chars. |
body_en | string | Optional. Markdown guidance (≤20000). |
repo_url | string | Optional. A valid URL (repo or website). |
repo_path | string | Optional. Subfolder within the repo. |
install_cmd | string | Optional. Shown with a copy button. |
agent_prompt | string | Optional. The "Copy to agent" prompt. |
is_external | boolean | Optional. A third-party tool you didn't build. |
tags | string[] | csv | Optional. 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
- https://toolshub.udah.dev/rss/trending — public Atom feed of the most active items (last 7 days).
- Personal "new items" feed — your tokenized URL in Settings.