Beamer MCP by usefulapi

Read posts, comments, reactions, feature requests, votes and NPS responses in Beamer.

我该使用它吗

质量与安全性

A
描述质量
100%
模式完整度
91%
命名质量
78%
投毒风险
100%
权限匹配度
100%
协议合规性
100%

发现(2)

  • LOWTool 'beamer_list_feature_request_comments' name length outside 3-30 range在 beamer_list_feature_request_comments 中
  • LOWTool 'beamer_list_feature_request_votes' name length outside 3-30 range在 beamer_list_feature_request_votes 中

基于对工具定义和协议合规性的自动分析。

上下文开销

~3,775token 数(工具定义)
~2.0 KB典型响应大小
对注意力有显著影响(占 128k 上下文窗口的 2.95%)

这是每次将服务器的工具加载到模型上下文窗口时所消耗的大致 token 数。数值越高,可用于其他任务的注意力就越少。

安装

一键安装

将以下内容添加到你的 `claude_desktop_config.json` 文件中:

{
  "mcpServers": {
    "beamer": {
      "url": "https://beamer.usefulapi.io/mcp"
    }
  }
}

远程端点

https://beamer.usefulapi.io/mcpstreamable-http

它能做什么

工具清单

工具(16)

🟢 只读🟡 写入🔴 删除⚪ 未知
🟢beamer_list_posts(date_from, date_to, language, category, published, ...)

List changelog posts (announcements) with their translations, category, publish date, and stats (views, unique views, clicks, feedbacks, reactions). Does not record views. Beamer API: GET /posts.

输入模式

{
  "type": "object",
  "properties": {
    "date_from": {
      "description": "Only posts published after this ISO-8601 date or date-time, e.g. 2026-01-31T00:00:00Z.",
      "type": "string"
    },
    "date_to": {
      "description": "Only posts published before this ISO-8601 date or date-time, e.g. 2026-01-31T00:00:00Z.",
      "type": "string"
    },
    "language": {
      "description": "Only posts with a translation in this two-letter language code.",
      "type": "string",
      "minLength": 2,
      "maxLength": 2
    },
    "category": {
      "description": "Only posts in this category.",
      "type": "string"
    },
    "published": {
      "description": "true = published posts only, false = drafts only. Omit for both.",
      "type": "boolean"
    },
    "archived": {
      "description": "true = archived only, false = not archived. Omit for both.",
      "type": "boolean"
    },
    "expired": {
      "description": "true = expired only, false = not expired. Omit for both.",
      "type": "boolean"
    },
    "ignore_filters": {
      "description": "true = ignore audience segmentation so all posts return. Needs the key permission 'Read posts (ignore filters)'; without it the result is an empty list.",
      "type": "boolean"
    },
    "max_results": {
      "description": "Results per page (at most 10).",
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 10
    },
    "page": {
      "description": "Page number for pagination (combine with max_results).",
      "type": "integer",
      "minimum": 0,
      "maximum": 9007199254740991
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢beamer_count_posts(date_from, date_to, language, category, published, ...)

Count changelog posts that match the filters. Beamer API: GET /posts/count.

输入模式

{
  "type": "object",
  "properties": {
    "date_from": {
      "description": "Only posts published after this ISO-8601 date or date-time, e.g. 2026-01-31T00:00:00Z.",
      "type": "string"
    },
    "date_to": {
      "description": "Only posts published before this ISO-8601 date or date-time, e.g. 2026-01-31T00:00:00Z.",
      "type": "string"
    },
    "language": {
      "description": "Only posts with a translation in this two-letter language code.",
      "type": "string",
      "minLength": 2,
      "maxLength": 2
    },
    "category": {
      "description": "Only posts in this category.",
      "type": "string"
    },
    "published": {
      "description": "true = published posts only, false = drafts only. Omit for both.",
      "type": "boolean"
    },
    "archived": {
      "description": "true = archived only, false = not archived. Omit for both.",
      "type": "boolean"
    },
    "expired": {
      "description": "true = expired only, false = not expired. Omit for both.",
      "type": "boolean"
    },
    "ignore_filters": {
      "description": "true = ignore audience segmentation so all posts return. Needs the key permission 'Read posts (ignore filters)'; without it the result is an empty list.",
      "type": "boolean"
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢beamer_get_post(post_id, language)

Get one changelog post by id: translations, category, dates, audience filter, and stats. Does not record a view. Beamer API: GET /posts/{postId}.

输入模式

{
  "type": "object",
  "properties": {
    "post_id": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991,
      "description": "Numeric id of the post."
    },
    "language": {
      "description": "Two-letter language code.",
      "type": "string",
      "minLength": 2,
      "maxLength": 2
    }
  },
  "required": [
    "post_id"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢beamer_list_post_comments(post_id, date_from, date_to, language, search, ...)

List the comments that users left on one changelog post, with the author and text. Beamer API: GET /posts/{postId}/comments.

输入模式

{
  "type": "object",
  "properties": {
    "post_id": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991,
      "description": "Numeric id of the post."
    },
    "date_from": {
      "description": "Only comments published after this ISO-8601 date or date-time, e.g. 2026-01-31T00:00:00Z.",
      "type": "string"
    },
    "date_to": {
      "description": "Only comments published before this ISO-8601 date or date-time, e.g. 2026-01-31T00:00:00Z.",
      "type": "string"
    },
    "language": {
      "description": "Two-letter language code.",
      "type": "string",
      "minLength": 2,
      "maxLength": 2
    },
    "search": {
      "description": "Only comments whose text contains this.",
      "type": "string"
    },
    "max_results": {
      "description": "Results per page (at most 10).",
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 10
    },
    "page": {
      "description": "Page number for pagination (combine with max_results).",
      "type": "integer",
      "minimum": 0,
      "maximum": 9007199254740991
    }
  },
  "required": [
    "post_id"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢beamer_count_post_comments(post_id)

Count the comments on one changelog post. Beamer API: GET /posts/{postId}/comments/count.

输入模式

{
  "type": "object",
  "properties": {
    "post_id": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991,
      "description": "Numeric id of the post."
    }
  },
  "required": [
    "post_id"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢beamer_list_post_reactions(post_id, date_from, date_to, reaction, max_results, ...)

List the reactions (positive, neutral, negative) that users gave one changelog post. Beamer API: GET /posts/{postId}/reactions.

输入模式

{
  "type": "object",
  "properties": {
    "post_id": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991,
      "description": "Numeric id of the post."
    },
    "date_from": {
      "description": "Only reactions after this ISO-8601 date or date-time, e.g. 2026-01-31T00:00:00Z.",
      "type": "string"
    },
    "date_to": {
      "description": "Only reactions before this ISO-8601 date or date-time, e.g. 2026-01-31T00:00:00Z.",
      "type": "string"
    },
    "reaction": {
      "description": "Only this reaction type.",
      "type": "string",
      "enum": [
        "positive",
        "neutral",
        "negative"
      ]
    },
    "max_results": {
      "description": "Results per page (at most 10).",
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 10
    },
    "page": {
      "description": "Page number for pagination (combine with max_results).",
      "type": "integer",
      "minimum": 0,
      "maximum": 9007199254740991
    }
  },
  "required": [
    "post_id"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢beamer_count_post_reactions(post_id, reaction)

Count the reactions on one changelog post. Beamer API: GET /posts/{postId}/reactions/count.

输入模式

{
  "type": "object",
  "properties": {
    "post_id": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991,
      "description": "Numeric id of the post."
    },
    "reaction": {
      "description": "Only this reaction type.",
      "type": "string",
      "enum": [
        "positive",
        "neutral",
        "negative"
      ]
    }
  },
  "required": [
    "post_id"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢beamer_list_feature_requests(date_from, date_to, language, category, status, ...)

List feature requests (ideas) from the Beamer Feedback board with status, category, vote and comment counts, and the author. Beamer API: GET /requests (beta).

输入模式

{
  "type": "object",
  "properties": {
    "date_from": {
      "description": "Only requests created after this ISO-8601 date or date-time, e.g. 2026-01-31T00:00:00Z.",
      "type": "string"
    },
    "date_to": {
      "description": "Only requests created before this ISO-8601 date or date-time, e.g. 2026-01-31T00:00:00Z.",
      "type": "string"
    },
    "language": {
      "description": "Two-letter language code.",
      "type": "string",
      "minLength": 2,
      "maxLength": 2
    },
    "category": {
      "description": "Only this category.",
      "type": "string"
    },
    "status": {
      "description": "Only this status, e.g. under_review.",
      "type": "string"
    },
    "visible": {
      "description": "true = visible only, false = hidden only. Omit for both.",
      "type": "boolean"
    },
    "search": {
      "description": "Only requests whose title or content contains this.",
      "type": "string"
    },
    "max_results": {
      "description": "Results per page (at most 10).",
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 10
    },
    "page": {
      "description": "Page number for pagination (combine with max_results).",
      "type": "integer",
      "minimum": 0,
      "maximum": 9007199254740991
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢beamer_count_feature_requests(date_from, date_to, language, category, status, ...)

Count feature requests that match the filters. Beamer API: GET /requests/count.

输入模式

{
  "type": "object",
  "properties": {
    "date_from": {
      "description": "Only requests created after this ISO-8601 date or date-time, e.g. 2026-01-31T00:00:00Z.",
      "type": "string"
    },
    "date_to": {
      "description": "Only requests created before this ISO-8601 date or date-time, e.g. 2026-01-31T00:00:00Z.",
      "type": "string"
    },
    "language": {
      "description": "Two-letter language code.",
      "type": "string",
      "minLength": 2,
      "maxLength": 2
    },
    "category": {
      "description": "Only this category.",
      "type": "string"
    },
    "status": {
      "description": "Only this status.",
      "type": "string"
    },
    "visible": {
      "description": "true = visible only, false = hidden only.",
      "type": "boolean"
    },
    "search": {
      "description": "Only requests whose title or content contains this.",
      "type": "string"
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢beamer_get_feature_request(feature_request_id)

Get one feature request by id. Beamer API: GET /requests/{featureRequestId}.

输入模式

{
  "type": "object",
  "properties": {
    "feature_request_id": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991,
      "description": "Numeric id of the feature request."
    }
  },
  "required": [
    "feature_request_id"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢beamer_list_feature_request_comments(feature_request_id, date_from, date_to, search, max_results, ...)

List the comments on one feature request, with the author and whether a team member wrote it. Beamer API: GET /requests/{featureRequestId}/comments.

输入模式

{
  "type": "object",
  "properties": {
    "feature_request_id": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991,
      "description": "Numeric id of the feature request."
    },
    "date_from": {
      "description": "Only comments after this ISO-8601 date or date-time, e.g. 2026-01-31T00:00:00Z.",
      "type": "string"
    },
    "date_to": {
      "description": "Only comments before this ISO-8601 date or date-time, e.g. 2026-01-31T00:00:00Z.",
      "type": "string"
    },
    "search": {
      "description": "Only comments whose text contains this.",
      "type": "string"
    },
    "max_results": {
      "description": "Results per page (at most 10).",
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 10
    },
    "page": {
      "description": "Page number for pagination (combine with max_results).",
      "type": "integer",
      "minimum": 0,
      "maximum": 9007199254740991
    }
  },
  "required": [
    "feature_request_id"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢beamer_list_feature_request_votes(feature_request_id, date_from, date_to, max_results, page)

List the votes on one feature request, with the user who voted and the date. Beamer API: GET /requests/{featureRequestId}/votes.

输入模式

{
  "type": "object",
  "properties": {
    "feature_request_id": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991,
      "description": "Numeric id of the feature request."
    },
    "date_from": {
      "description": "Only votes after this ISO-8601 date or date-time, e.g. 2026-01-31T00:00:00Z.",
      "type": "string"
    },
    "date_to": {
      "description": "Only votes before this ISO-8601 date or date-time, e.g. 2026-01-31T00:00:00Z.",
      "type": "string"
    },
    "max_results": {
      "description": "Results per page (at most 10).",
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 10
    },
    "page": {
      "description": "Page number for pagination (combine with max_results).",
      "type": "integer",
      "minimum": 0,
      "maximum": 9007199254740991
    }
  },
  "required": [
    "feature_request_id"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢beamer_list_nps_responses(date_from, date_to, score_from, score_to, search, ...)

List Net Promoter Score responses with score (0-10), written feedback, user, and date. Beamer API: GET /nps.

输入模式

{
  "type": "object",
  "properties": {
    "date_from": {
      "description": "Only responses sent after this ISO-8601 date or date-time, e.g. 2026-01-31T00:00:00Z.",
      "type": "string"
    },
    "date_to": {
      "description": "Only responses sent before this ISO-8601 date or date-time, e.g. 2026-01-31T00:00:00Z.",
      "type": "string"
    },
    "score_from": {
      "description": "Only scores at or above this (0-10).",
      "type": "integer",
      "minimum": 0,
      "maximum": 10
    },
    "score_to": {
      "description": "Only scores at or below this (0-10).",
      "type": "integer",
      "minimum": 0,
      "maximum": 10
    },
    "search": {
      "description": "Only responses whose feedback or user name contains this.",
      "type": "string"
    },
    "max_results": {
      "description": "Results per page (at most 100).",
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 100
    },
    "page": {
      "description": "Page number for pagination (combine with max_results).",
      "type": "integer",
      "minimum": 0,
      "maximum": 9007199254740991
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢beamer_count_nps_responses(date_from, date_to, score_from, score_to, search)

Count NPS responses that match the filters. Beamer API: GET /nps/count.

输入模式

{
  "type": "object",
  "properties": {
    "date_from": {
      "description": "Only responses sent after this ISO-8601 date or date-time, e.g. 2026-01-31T00:00:00Z.",
      "type": "string"
    },
    "date_to": {
      "description": "Only responses sent before this ISO-8601 date or date-time, e.g. 2026-01-31T00:00:00Z.",
      "type": "string"
    },
    "score_from": {
      "description": "Only scores at or above this (0-10).",
      "type": "integer",
      "minimum": 0,
      "maximum": 10
    },
    "score_to": {
      "description": "Only scores at or below this (0-10).",
      "type": "integer",
      "minimum": 0,
      "maximum": 10
    },
    "search": {
      "description": "Only responses whose feedback or user name contains this.",
      "type": "string"
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢beamer_list_users(user_id, beamer_id, user_email, sort, max_results, ...)

List the end users that Beamer tracked in Analytics (first seen, last seen, language, custom attributes). Beamer API: GET /users.

输入模式

{
  "type": "object",
  "properties": {
    "user_id": {
      "description": "Your own user id (the user_id from the embed script).",
      "type": "string"
    },
    "beamer_id": {
      "description": "The Beamer-generated user id.",
      "type": "string"
    },
    "user_email": {
      "description": "Email of the user.",
      "type": "string"
    },
    "sort": {
      "description": "User attribute to sort by, ascending. Prefix with '-' for descending, e.g. -lastSeen. Default firstSeen.",
      "type": "string"
    },
    "max_results": {
      "description": "Results per page (at most 100).",
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 100
    },
    "page": {
      "description": "Page number for pagination (combine with max_results).",
      "type": "integer",
      "minimum": 0,
      "maximum": 9007199254740991
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢beamer_get_unread_count

Get how many changelog posts are unread in the feed, plus the feed URL and the popup URL. Beamer API: GET /unread/count.

输入模式

{
  "type": "object",
  "properties": {},
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}

社区

评价此服务器

证据

最近观测

已验证未记录版本16 个工具