FeatureJet
Measured conclusion: Deep-tested. L2 outcome: tools_ok.
The feedback board your AI agents work from: users vote, agents build over MCP. 22 tools.
| Author | com.featurejet |
|---|---|
| Access | remote |
| Publisher key required | No |
| Measured state | Deep-tested |
| L1 liveness | alive |
| L1 latency | 155 ms |
| Last measured | 2026-10-24 |
Add to your agent
Copy this into your MCP client config:
{
"mcpServers": {
"FeatureJet": {
"url": "https://mcp.featurejet.com/mcp",
"transport": "streamable-http"
}
}
}
Measured tools (22)
list_boardsList boards available to the caller's FeatureJet API key.
Hints: read-only not declared · destructive not declared · idempotent not declared · open-world not declared
get_boardGet one board by slug.
Parameters:
slug(required) — string
Hints: read-only not declared · destructive not declared · idempotent not declared · open-world not declared
create_boardCreate a new feedback board, as a DRAFT. `slug` is the board's URL path segment (lowercase, hyphenated, unique); `name` is the display name. The new board's public URL 404s until a human publishes it from the dashboard -- `publish_board` is off by default (403 `publish_disabled`).
Parameters:
name(required) — stringslug(required) — stringdescription
Hints: read-only not declared · destructive not declared · idempotent not declared · open-world not declared
publish_boardPublish a board so it is live at its public URL. OFF BY DEFAULT. Putting a board on the public internet is a human decision: unless the FeatureJet deployment has opted in, this returns 403 `publish_disabled` and the owner publishes from the dashboard. Where it is enabled it needs a `write` (or `admin`) scoped key and an active subscription -- an org without one gets 403 `subscription_required`.
Parameters:
slug(required) — string
Hints: read-only not declared · destructive not declared · idempotent not declared · open-world not declared
unpublish_boardReturn a board to draft so its public URL stops serving it. Nothing is deleted; publish it again to bring it back.
Parameters:
slug(required) — string
Hints: read-only not declared · destructive not declared · idempotent not declared · open-world not declared
list_postsList posts for a board, optionally filtered by status, search, or tag.
Parameters:
slug(required) — stringqtaglimitoffsetstatus
Hints: read-only not declared · destructive not declared · idempotent not declared · open-world not declared
get_postGet one post by board slug and post id.
Parameters:
slug(required) — stringpost_id(required) — integer
Hints: read-only not declared · destructive not declared · idempotent not declared · open-world not declared
create_postCreate a post on a board.
Parameters:
slug(required) — stringtitle(required) — stringbodytagsstatus
Hints: read-only not declared · destructive not declared · idempotent not declared · open-world not declared
update_postUpdate mutable post fields; null queue_rank explicitly un-ranks.
Parameters:
slug(required) — stringpost_id(required) — integerbodytagstitlepinnedstatusqueue_rank
Hints: read-only not declared · destructive not declared · idempotent not declared · open-world not declared
delete_postDelete a post by hiding it through the developer API.
Parameters:
slug(required) — stringpost_id(required) — integer
Hints: read-only not declared · destructive not declared · idempotent not declared · open-world not declared
list_votesList vote metadata for a post.
Parameters:
slug(required) — stringpost_id(required) — integer
Hints: read-only not declared · destructive not declared · idempotent not declared · open-world not declared
list_commentsList comments for a post.
Parameters:
slug(required) — stringpost_id(required) — integer
Hints: read-only not declared · destructive not declared · idempotent not declared · open-world not declared
create_commentComment on a post as the board team, optionally replying to a comment.
Parameters:
slug(required) — stringpost_id(required) — integerbody(required) — stringparent_comment_id
Hints: read-only not declared · destructive not declared · idempotent not declared · open-world not declared
get_queueTop UNCLAIMED posts in the owner's curated build order. Owner-ranked posts (queue_rank, lower = sooner) come first, then unranked planned posts by votes. Call this to find the next thing to build, then claim_post before starting work.
Parameters:
slug(required) — stringlimit
Hints: read-only not declared · destructive not declared · idempotent not declared · open-world not declared
claim_postAtomically claim a post before working on it (double-work guard). ttl_seconds defaults to 3600 (max 86400); re-claiming with the same key extends the lease. Returns 409 if another key holds a live claim.
Parameters:
slug(required) — stringpost_id(required) — integeragent_labelttl_seconds
Hints: read-only not declared · destructive not declared · idempotent not declared · open-world not declared
release_postRelease a post's claim so other agents can pick it up.
Parameters:
slug(required) — stringpost_id(required) — integer
Hints: read-only not declared · destructive not declared · idempotent not declared · open-world not declared
add_evidenceAttach implementation evidence to a post (shown publicly). kind is one of branch|commit|pr|transcript|url; ref is the branch name, commit sha, or URL. Voters see these in the post page's "Implementation" section.
Parameters:
slug(required) — stringpost_id(required) — integerkind(required) — stringref(required) — stringlabelaction_key
Hints: read-only not declared · destructive not declared · idempotent not declared · open-world not declared
propose_statusPropose a status change for the board owner to confirm. The agent-honest way to mark work done: nothing changes on the public board and no voter is notified until a human confirms the proposal from the dashboard. status is one of open|planned|in_progress|shipped|declined; a new proposal replaces any pending one. Prefer this over update_post's direct status flip.
Parameters:
slug(required) — stringpost_id(required) — integerstatus(required) — stringnoteaction_key
Hints: read-only not declared · destructive not declared · idempotent not declared · open-world not declared
get_changelogList shipped posts for a board.
Parameters:
slug(required) — string
Hints: read-only not declared · destructive not declared · idempotent not declared · open-world not declared
get_analyticsGet read-only analytics for a board.
Parameters:
slug(required) — stringperiod
Hints: read-only not declared · destructive not declared · idempotent not declared · open-world not declared
whoamiConfirm the caller's API key by listing accessible boards.
Hints: read-only not declared · destructive not declared · idempotent not declared · open-world not declared
pingCheck MCP and FeatureJet API reachability for the caller's key.
Hints: read-only not declared · destructive not declared · idempotent not declared · open-world not declared
Measured by MCPYP probing. Untested fields are omitted, never estimated. Listing is always free; MCPYP never proxies calls or stores user tokens.