Build against your feedback loop.
The Hollahoop API is exposed through a hosted MCP JSON-RPC endpoint. Use one org-scoped token to let Cursor, Claude, Codex, internal scripts, or backend jobs read feedback, move roadmap work, publish Updates, and maintain docs.
Token auth
Send Authorization: Bearer hh_live_… with every request. Tokens are created from your project workspace and scoped to that organisation.
MCP-native
Use the same endpoint from agents and code. Tool schemas are discoverable through tools/list, and execution happens through tools/call.
Read / write scopes
Each tool declares the permission it needs. Revoked tokens stop working immediately, and REST calls include rate-limit headers.
Endpoint
POST JSON-RPC 2.0 requests to the MCP endpoint. Browser GET requests redirect to the public MCP overview, while API clients should send JSON.
- Base URL
- https://hollahoop.app/mcp
- Auth header
- Authorization: Bearer hh_live_…
- Content type
- application/json
curl https://hollahoop.app/mcp \
-H "Authorization: Bearer hh_live_..." \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/list",
"params": {}
}'REST mirror
Prefer plain HTTP? The same Bearer token works against the REST endpoints below. Bodies and responses match the MCP tool schemas one-to-one, so you can pick whichever surface fits your stack.
Rate limits are per API key: 120 read requests/minute and 30 write requests/minute. Responses include x-ratelimit-limit, x-ratelimit-remaining, and x-ratelimit-reset; 429 responses also include retry-after.
/api/v1/healthNo authLiveness probe used by /status and external monitors.
/api/v1/projectsBearer (read)List projects under this token's organisation. Mirrors list_projects.
/api/v1/projectsBearer (write)Create a project (boards, statuses, tags auto-seeded). Mirrors create_project.
/api/v1/projects/:project/postsBearer (read)List feedback posts with board/status/sort pagination. Mirrors list_posts.
/api/v1/projects/:project/changelogBearer (read)List Updates/changelog entries, including drafts unless filtered. Mirrors list_changelog.
curl -X POST https://hollahoop.app/api/v1/projects \
-H "Authorization: Bearer hh_live_..." \
-H "Content-Type: application/json" \
-d '{
"slug": "acme-feedback",
"name": "Acme Feedback",
"tagline": "What customers want next",
"is_public": true
}'curl "https://hollahoop.app/api/v1/projects/hollahoop/posts?status=planned&sort=top&limit=10" \
-H "Authorization: Bearer hh_live_..."curl "https://hollahoop.app/api/v1/projects/hollahoop/changelog?status=published&limit=10" \
-H "Authorization: Bearer hh_live_..."Tool calls
Call a tool by name with a JSON object that matches its schema. Agents do this automatically; scripts can call the same endpoint directly.
{
"jsonrpc": "2.0",
"id": 2,
"method": "tools/call",
"params": {
"name": "list_projects",
"arguments": {}
}
}{
"jsonrpc": "2.0",
"id": 3,
"method": "tools/call",
"params": {
"name": "publish_changelog",
"arguments": {
"project": "hollahoop",
"title": "New API docs",
"body_md": "We added a public API reference.",
"tag": "announcement"
}
}
}Available tools
14 tools are currently exposed. Read tools can inspect data; write tools can create or mutate feedback, roadmap, Updates, and docs.
Read
List every project the API key can see (scoped to a single Hollahoop organisation).
List feedback boards on a project (e.g. feature-requests, bugs, general).
List the post-status workflow for a project (Open / Planned / In progress / Shipped / Declined and any custom ones).
List feedback posts on a project, optionally filtered by board and/or status. Default sort is by vote count.
Fetch a single post by id, including its comments.
List changelog / Updates entries for a project (drafts and published).
List documentation pages for a project, grouped by section. Use the `visibility` filter to scope to public or internal pages.
Free-text search across posts, changelog entries, and docs for a project. ILIKE-based for now; pgvector semantic search is on the roadmap.
Write
Create a new project under this API key’s organisation. Returns the project plus the URL of its public board. Default boards, statuses, changelog tags, and docs section are auto-seeded.
Create a new feedback / roadmap post. Defaults to the feature-requests board and the project default status (Open).
Move a post on the roadmap by changing its status. Use this to accept feedback (open → planned), start work (planned → in_progress), or ship (in_progress → shipped).
Add a comment (or reply, via parent_id) to a post. The author is the user who created this API key.
Create a changelog / Updates entry. Set publish=false to leave it as a draft. Auto-derives a slug from the title if none is given. The optional `tag` becomes the pill on the public Updates feed.
Create or update a documentation page (uniquely identified by project + slug). Body is Markdown. Pass visibility=internal to keep the page hidden from the public site.