FeatureJet
The feedback board your AI agents work from: users vote, agents build over MCP. 22 tools.
我该使用它吗
质量与安全性
发现(2)
- LOW在 create_comment 中
- LOW在 release_post 中
基于对工具定义和协议合规性的自动分析。
上下文开销
这是每次将服务器的工具加载到模型上下文窗口时所消耗的大致 token 数。数值越高,可用于其他任务的注意力就越少。
安装
一键安装
将以下内容添加到你的 `claude_desktop_config.json` 文件中:
{
"mcpServers": {
"feedback-board": {
"url": "https://mcp.featurejet.com/mcp"
}
}
}远程端点
https://mcp.featurejet.com/mcpstreamable-http它能做什么
工具清单
工具(22)
🟢list_boards
List boards available to the caller's FeatureJet API key.
输入模式
{
"type": "object",
"properties": {},
"title": "list_boardsArguments"
}输出模式
{
"type": "object",
"properties": {
"result": {
"$ref": "#/$defs/JSONValue"
}
},
"required": [
"result"
],
"$defs": {
"JSONValue": {
"anyOf": [
{
"type": "string"
},
{
"type": "integer"
},
{
"type": "number"
},
{
"type": "boolean"
},
{
"items": {
"$ref": "#/$defs/JSONValue"
},
"type": "array"
},
{
"additionalProperties": {
"$ref": "#/$defs/JSONValue"
},
"type": "object"
},
{
"type": "null"
}
]
}
},
"title": "list_boardsOutput"
}🟢get_board(slug)
Get one board by slug.
输入模式
{
"type": "object",
"properties": {
"slug": {
"title": "Slug",
"type": "string"
}
},
"required": [
"slug"
],
"title": "get_boardArguments"
}输出模式
{
"type": "object",
"properties": {
"result": {
"$ref": "#/$defs/JSONValue"
}
},
"required": [
"result"
],
"$defs": {
"JSONValue": {
"anyOf": [
{
"type": "string"
},
{
"type": "integer"
},
{
"type": "number"
},
{
"type": "boolean"
},
{
"items": {
"$ref": "#/$defs/JSONValue"
},
"type": "array"
},
{
"additionalProperties": {
"$ref": "#/$defs/JSONValue"
},
"type": "object"
},
{
"type": "null"
}
]
}
},
"title": "get_boardOutput"
}🟡create_board(name, slug, description)
Create 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`).
输入模式
{
"type": "object",
"properties": {
"name": {
"title": "Name",
"type": "string"
},
"slug": {
"title": "Slug",
"type": "string"
},
"description": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Description"
}
},
"required": [
"name",
"slug"
],
"title": "create_boardArguments"
}输出模式
{
"type": "object",
"properties": {
"result": {
"$ref": "#/$defs/JSONValue"
}
},
"required": [
"result"
],
"$defs": {
"JSONValue": {
"anyOf": [
{
"type": "string"
},
{
"type": "integer"
},
{
"type": "number"
},
{
"type": "boolean"
},
{
"items": {
"$ref": "#/$defs/JSONValue"
},
"type": "array"
},
{
"additionalProperties": {
"$ref": "#/$defs/JSONValue"
},
"type": "object"
},
{
"type": "null"
}
]
}
},
"title": "create_boardOutput"
}🟡publish_board(slug)
Publish 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`.
输入模式
{
"type": "object",
"properties": {
"slug": {
"title": "Slug",
"type": "string"
}
},
"required": [
"slug"
],
"title": "publish_boardArguments"
}输出模式
{
"type": "object",
"properties": {
"result": {
"$ref": "#/$defs/JSONValue"
}
},
"required": [
"result"
],
"$defs": {
"JSONValue": {
"anyOf": [
{
"type": "string"
},
{
"type": "integer"
},
{
"type": "number"
},
{
"type": "boolean"
},
{
"items": {
"$ref": "#/$defs/JSONValue"
},
"type": "array"
},
{
"additionalProperties": {
"$ref": "#/$defs/JSONValue"
},
"type": "object"
},
{
"type": "null"
}
]
}
},
"title": "publish_boardOutput"
}🟡unpublish_board(slug)
Return a board to draft so its public URL stops serving it. Nothing is deleted; publish it again to bring it back.
输入模式
{
"type": "object",
"properties": {
"slug": {
"title": "Slug",
"type": "string"
}
},
"required": [
"slug"
],
"title": "unpublish_boardArguments"
}输出模式
{
"type": "object",
"properties": {
"result": {
"$ref": "#/$defs/JSONValue"
}
},
"required": [
"result"
],
"$defs": {
"JSONValue": {
"anyOf": [
{
"type": "string"
},
{
"type": "integer"
},
{
"type": "number"
},
{
"type": "boolean"
},
{
"items": {
"$ref": "#/$defs/JSONValue"
},
"type": "array"
},
{
"additionalProperties": {
"$ref": "#/$defs/JSONValue"
},
"type": "object"
},
{
"type": "null"
}
]
}
},
"title": "unpublish_boardOutput"
}🟢list_posts(slug, status, q, tag, limit, ...)
List posts for a board, optionally filtered by status, search, or tag.
输入模式
{
"type": "object",
"properties": {
"slug": {
"title": "Slug",
"type": "string"
},
"status": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Status"
},
"q": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Q"
},
"tag": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Tag"
},
"limit": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"title": "Limit"
},
"offset": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"title": "Offset"
}
},
"required": [
"slug"
],
"title": "list_postsArguments"
}输出模式
{
"type": "object",
"properties": {
"result": {
"$ref": "#/$defs/JSONValue"
}
},
"required": [
"result"
],
"$defs": {
"JSONValue": {
"anyOf": [
{
"type": "string"
},
{
"type": "integer"
},
{
"type": "number"
},
{
"type": "boolean"
},
{
"items": {
"$ref": "#/$defs/JSONValue"
},
"type": "array"
},
{
"additionalProperties": {
"$ref": "#/$defs/JSONValue"
},
"type": "object"
},
{
"type": "null"
}
]
}
},
"title": "list_postsOutput"
}🟡get_post(slug, post_id)
Get one post by board slug and post id.
输入模式
{
"type": "object",
"properties": {
"slug": {
"title": "Slug",
"type": "string"
},
"post_id": {
"title": "Post Id",
"type": "integer"
}
},
"required": [
"slug",
"post_id"
],
"title": "get_postArguments"
}输出模式
{
"type": "object",
"properties": {
"result": {
"$ref": "#/$defs/JSONValue"
}
},
"required": [
"result"
],
"$defs": {
"JSONValue": {
"anyOf": [
{
"type": "string"
},
{
"type": "integer"
},
{
"type": "number"
},
{
"type": "boolean"
},
{
"items": {
"$ref": "#/$defs/JSONValue"
},
"type": "array"
},
{
"additionalProperties": {
"$ref": "#/$defs/JSONValue"
},
"type": "object"
},
{
"type": "null"
}
]
}
},
"title": "get_postOutput"
}🟡create_post(slug, title, body, status, tags)
Create a post on a board.
输入模式
{
"type": "object",
"properties": {
"slug": {
"title": "Slug",
"type": "string"
},
"title": {
"title": "Title",
"type": "string"
},
"body": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Body"
},
"status": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Status"
},
"tags": {
"anyOf": [
{
"items": {
"type": "string"
},
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"title": "Tags"
}
},
"required": [
"slug",
"title"
],
"title": "create_postArguments"
}输出模式
{
"type": "object",
"properties": {
"result": {
"$ref": "#/$defs/JSONValue"
}
},
"required": [
"result"
],
"$defs": {
"JSONValue": {
"anyOf": [
{
"type": "string"
},
{
"type": "integer"
},
{
"type": "number"
},
{
"type": "boolean"
},
{
"items": {
"$ref": "#/$defs/JSONValue"
},
"type": "array"
},
{
"additionalProperties": {
"$ref": "#/$defs/JSONValue"
},
"type": "object"
},
{
"type": "null"
}
]
}
},
"title": "create_postOutput"
}🟡update_post(slug, post_id, title, body, status, ...)
Update mutable post fields; null queue_rank explicitly un-ranks.
输入模式
{
"type": "object",
"properties": {
"slug": {
"title": "Slug",
"type": "string"
},
"post_id": {
"title": "Post Id",
"type": "integer"
},
"title": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Title"
},
"body": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Body"
},
"status": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Status"
},
"tags": {
"anyOf": [
{
"items": {
"type": "string"
},
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"title": "Tags"
},
"pinned": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"default": null,
"title": "Pinned"
},
"queue_rank": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"title": "Queue Rank"
}
},
"required": [
"slug",
"post_id"
],
"title": "update_postArguments"
}输出模式
{
"type": "object",
"properties": {
"result": {
"$ref": "#/$defs/JSONValue"
}
},
"required": [
"result"
],
"$defs": {
"JSONValue": {
"anyOf": [
{
"type": "string"
},
{
"type": "integer"
},
{
"type": "number"
},
{
"type": "boolean"
},
{
"items": {
"$ref": "#/$defs/JSONValue"
},
"type": "array"
},
{
"additionalProperties": {
"$ref": "#/$defs/JSONValue"
},
"type": "object"
},
{
"type": "null"
}
]
}
},
"title": "update_postOutput"
}🔴delete_post(slug, post_id)
Delete a post by hiding it through the developer API.
输入模式
{
"type": "object",
"properties": {
"slug": {
"title": "Slug",
"type": "string"
},
"post_id": {
"title": "Post Id",
"type": "integer"
}
},
"required": [
"slug",
"post_id"
],
"title": "delete_postArguments"
}输出模式
{
"type": "object",
"properties": {
"result": {
"$ref": "#/$defs/JSONValue"
}
},
"required": [
"result"
],
"$defs": {
"JSONValue": {
"anyOf": [
{
"type": "string"
},
{
"type": "integer"
},
{
"type": "number"
},
{
"type": "boolean"
},
{
"items": {
"$ref": "#/$defs/JSONValue"
},
"type": "array"
},
{
"additionalProperties": {
"$ref": "#/$defs/JSONValue"
},
"type": "object"
},
{
"type": "null"
}
]
}
},
"title": "delete_postOutput"
}🟢list_votes(slug, post_id)
List vote metadata for a post.
输入模式
{
"type": "object",
"properties": {
"slug": {
"title": "Slug",
"type": "string"
},
"post_id": {
"title": "Post Id",
"type": "integer"
}
},
"required": [
"slug",
"post_id"
],
"title": "list_votesArguments"
}输出模式
{
"type": "object",
"properties": {
"result": {
"$ref": "#/$defs/JSONValue"
}
},
"required": [
"result"
],
"$defs": {
"JSONValue": {
"anyOf": [
{
"type": "string"
},
{
"type": "integer"
},
{
"type": "number"
},
{
"type": "boolean"
},
{
"items": {
"$ref": "#/$defs/JSONValue"
},
"type": "array"
},
{
"additionalProperties": {
"$ref": "#/$defs/JSONValue"
},
"type": "object"
},
{
"type": "null"
}
]
}
},
"title": "list_votesOutput"
}🟢list_comments(slug, post_id)
List comments for a post.
输入模式
{
"type": "object",
"properties": {
"slug": {
"title": "Slug",
"type": "string"
},
"post_id": {
"title": "Post Id",
"type": "integer"
}
},
"required": [
"slug",
"post_id"
],
"title": "list_commentsArguments"
}输出模式
{
"type": "object",
"properties": {
"result": {
"$ref": "#/$defs/JSONValue"
}
},
"required": [
"result"
],
"$defs": {
"JSONValue": {
"anyOf": [
{
"type": "string"
},
{
"type": "integer"
},
{
"type": "number"
},
{
"type": "boolean"
},
{
"items": {
"$ref": "#/$defs/JSONValue"
},
"type": "array"
},
{
"additionalProperties": {
"$ref": "#/$defs/JSONValue"
},
"type": "object"
},
{
"type": "null"
}
]
}
},
"title": "list_commentsOutput"
}🟡create_comment(slug, post_id, body, parent_comment_id)
Comment on a post as the board team, optionally replying to a comment.
输入模式
{
"type": "object",
"properties": {
"slug": {
"title": "Slug",
"type": "string"
},
"post_id": {
"title": "Post Id",
"type": "integer"
},
"body": {
"title": "Body",
"type": "string"
},
"parent_comment_id": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"title": "Parent Comment Id"
}
},
"required": [
"slug",
"post_id",
"body"
],
"title": "create_commentArguments"
}输出模式
{
"type": "object",
"properties": {
"result": {
"$ref": "#/$defs/JSONValue"
}
},
"required": [
"result"
],
"$defs": {
"JSONValue": {
"anyOf": [
{
"type": "string"
},
{
"type": "integer"
},
{
"type": "number"
},
{
"type": "boolean"
},
{
"items": {
"$ref": "#/$defs/JSONValue"
},
"type": "array"
},
{
"additionalProperties": {
"$ref": "#/$defs/JSONValue"
},
"type": "object"
},
{
"type": "null"
}
]
}
},
"title": "create_commentOutput"
}🟡get_queue(slug, limit)
Top 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.
输入模式
{
"type": "object",
"properties": {
"slug": {
"title": "Slug",
"type": "string"
},
"limit": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"title": "Limit"
}
},
"required": [
"slug"
],
"title": "get_queueArguments"
}输出模式
{
"type": "object",
"properties": {
"result": {
"$ref": "#/$defs/JSONValue"
}
},
"required": [
"result"
],
"$defs": {
"JSONValue": {
"anyOf": [
{
"type": "string"
},
{
"type": "integer"
},
{
"type": "number"
},
{
"type": "boolean"
},
{
"items": {
"$ref": "#/$defs/JSONValue"
},
"type": "array"
},
{
"additionalProperties": {
"$ref": "#/$defs/JSONValue"
},
"type": "object"
},
{
"type": "null"
}
]
}
},
"title": "get_queueOutput"
}🟡claim_post(slug, post_id, ttl_seconds, agent_label)
Atomically 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.
输入模式
{
"type": "object",
"properties": {
"slug": {
"title": "Slug",
"type": "string"
},
"post_id": {
"title": "Post Id",
"type": "integer"
},
"ttl_seconds": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"title": "Ttl Seconds"
},
"agent_label": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Agent Label"
}
},
"required": [
"slug",
"post_id"
],
"title": "claim_postArguments"
}输出模式
{
"type": "object",
"properties": {
"result": {
"$ref": "#/$defs/JSONValue"
}
},
"required": [
"result"
],
"$defs": {
"JSONValue": {
"anyOf": [
{
"type": "string"
},
{
"type": "integer"
},
{
"type": "number"
},
{
"type": "boolean"
},
{
"items": {
"$ref": "#/$defs/JSONValue"
},
"type": "array"
},
{
"additionalProperties": {
"$ref": "#/$defs/JSONValue"
},
"type": "object"
},
{
"type": "null"
}
]
}
},
"title": "claim_postOutput"
}🟡release_post(slug, post_id)
Release a post's claim so other agents can pick it up.
输入模式
{
"type": "object",
"properties": {
"slug": {
"title": "Slug",
"type": "string"
},
"post_id": {
"title": "Post Id",
"type": "integer"
}
},
"required": [
"slug",
"post_id"
],
"title": "release_postArguments"
}输出模式
{
"type": "object",
"properties": {
"result": {
"$ref": "#/$defs/JSONValue"
}
},
"required": [
"result"
],
"$defs": {
"JSONValue": {
"anyOf": [
{
"type": "string"
},
{
"type": "integer"
},
{
"type": "number"
},
{
"type": "boolean"
},
{
"items": {
"$ref": "#/$defs/JSONValue"
},
"type": "array"
},
{
"additionalProperties": {
"$ref": "#/$defs/JSONValue"
},
"type": "object"
},
{
"type": "null"
}
]
}
},
"title": "release_postOutput"
}🟡add_evidence(slug, post_id, kind, ref, label, ...)
Attach 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.
输入模式
{
"type": "object",
"properties": {
"slug": {
"title": "Slug",
"type": "string"
},
"post_id": {
"title": "Post Id",
"type": "integer"
},
"kind": {
"title": "Kind",
"type": "string"
},
"ref": {
"title": "Ref",
"type": "string"
},
"label": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Label"
},
"action_key": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Action Key"
}
},
"required": [
"slug",
"post_id",
"kind",
"ref"
],
"title": "add_evidenceArguments"
}输出模式
{
"type": "object",
"properties": {
"result": {
"$ref": "#/$defs/JSONValue"
}
},
"required": [
"result"
],
"$defs": {
"JSONValue": {
"anyOf": [
{
"type": "string"
},
{
"type": "integer"
},
{
"type": "number"
},
{
"type": "boolean"
},
{
"items": {
"$ref": "#/$defs/JSONValue"
},
"type": "array"
},
{
"additionalProperties": {
"$ref": "#/$defs/JSONValue"
},
"type": "object"
},
{
"type": "null"
}
]
}
},
"title": "add_evidenceOutput"
}🟡propose_status(slug, post_id, status, note, action_key)
Propose 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.
输入模式
{
"type": "object",
"properties": {
"slug": {
"title": "Slug",
"type": "string"
},
"post_id": {
"title": "Post Id",
"type": "integer"
},
"status": {
"title": "Status",
"type": "string"
},
"note": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Note"
},
"action_key": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Action Key"
}
},
"required": [
"slug",
"post_id",
"status"
],
"title": "propose_statusArguments"
}输出模式
{
"type": "object",
"properties": {
"result": {
"$ref": "#/$defs/JSONValue"
}
},
"required": [
"result"
],
"$defs": {
"JSONValue": {
"anyOf": [
{
"type": "string"
},
{
"type": "integer"
},
{
"type": "number"
},
{
"type": "boolean"
},
{
"items": {
"$ref": "#/$defs/JSONValue"
},
"type": "array"
},
{
"additionalProperties": {
"$ref": "#/$defs/JSONValue"
},
"type": "object"
},
{
"type": "null"
}
]
}
},
"title": "propose_statusOutput"
}🟢get_changelog(slug)
List shipped posts for a board.
输入模式
{
"type": "object",
"properties": {
"slug": {
"title": "Slug",
"type": "string"
}
},
"required": [
"slug"
],
"title": "get_changelogArguments"
}输出模式
{
"type": "object",
"properties": {
"result": {
"$ref": "#/$defs/JSONValue"
}
},
"required": [
"result"
],
"$defs": {
"JSONValue": {
"anyOf": [
{
"type": "string"
},
{
"type": "integer"
},
{
"type": "number"
},
{
"type": "boolean"
},
{
"items": {
"$ref": "#/$defs/JSONValue"
},
"type": "array"
},
{
"additionalProperties": {
"$ref": "#/$defs/JSONValue"
},
"type": "object"
},
{
"type": "null"
}
]
}
},
"title": "get_changelogOutput"
}🟢get_analytics(slug, period)
Get read-only analytics for a board.
输入模式
{
"type": "object",
"properties": {
"slug": {
"title": "Slug",
"type": "string"
},
"period": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Period"
}
},
"required": [
"slug"
],
"title": "get_analyticsArguments"
}输出模式
{
"type": "object",
"properties": {
"result": {
"$ref": "#/$defs/JSONValue"
}
},
"required": [
"result"
],
"$defs": {
"JSONValue": {
"anyOf": [
{
"type": "string"
},
{
"type": "integer"
},
{
"type": "number"
},
{
"type": "boolean"
},
{
"items": {
"$ref": "#/$defs/JSONValue"
},
"type": "array"
},
{
"additionalProperties": {
"$ref": "#/$defs/JSONValue"
},
"type": "object"
},
{
"type": "null"
}
]
}
},
"title": "get_analyticsOutput"
}⚪whoami
Confirm the caller's API key by listing accessible boards.
输入模式
{
"type": "object",
"properties": {},
"title": "whoamiArguments"
}输出模式
{
"type": "object",
"properties": {
"result": {
"$ref": "#/$defs/JSONValue"
}
},
"required": [
"result"
],
"$defs": {
"JSONValue": {
"anyOf": [
{
"type": "string"
},
{
"type": "integer"
},
{
"type": "number"
},
{
"type": "boolean"
},
{
"items": {
"$ref": "#/$defs/JSONValue"
},
"type": "array"
},
{
"additionalProperties": {
"$ref": "#/$defs/JSONValue"
},
"type": "object"
},
{
"type": "null"
}
]
}
},
"title": "whoamiOutput"
}🟢ping
Check MCP and FeatureJet API reachability for the caller's key.
输入模式
{
"type": "object",
"properties": {},
"title": "pingArguments"
}输出模式
{
"type": "object",
"properties": {
"result": {
"$ref": "#/$defs/JSONValue"
}
},
"required": [
"result"
],
"$defs": {
"JSONValue": {
"anyOf": [
{
"type": "string"
},
{
"type": "integer"
},
{
"type": "number"
},
{
"type": "boolean"
},
{
"items": {
"$ref": "#/$defs/JSONValue"
},
"type": "array"
},
{
"additionalProperties": {
"$ref": "#/$defs/JSONValue"
},
"type": "object"
},
{
"type": "null"
}
]
}
},
"title": "pingOutput"
}社区
证据