Beamer MCP by usefulapi

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

Should I use this

Quality & Safety

A
Description quality
100%
Schema completeness
91%
Naming quality
78%
Poisoning risk
100%
Permission match
100%
Protocol compliance
100%

Findings (2)

  • LOWTool 'beamer_list_feature_request_comments' name length outside 3-30 rangein beamer_list_feature_request_comments
  • LOWTool 'beamer_list_feature_request_votes' name length outside 3-30 rangein beamer_list_feature_request_votes

Based on automated analysis of tool definitions and protocol compliance.

Context Cost

~3,775Tokens (tool definitions)
~2.0 KBTypical response size
Significant attention impact (2.95% of 128k context)

This is the approximate number of tokens consumed each time the server's tools are loaded into a model's context. Higher counts reduce the attention available for other tasks.

Install

One-Click Install

Add this to your `claude_desktop_config.json` file:

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

Remote endpoints

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

What it can do

Tool inventory

Tools (16)

🟢 Read-only🟡 Write🔴 Delete⚪ Unknown
🟢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.

Input Schema

{
  "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.

Input Schema

{
  "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}.

Input Schema

{
  "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.

Input Schema

{
  "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.

Input Schema

{
  "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.

Input Schema

{
  "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.

Input Schema

{
  "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).

Input Schema

{
  "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.

Input Schema

{
  "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}.

Input Schema

{
  "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.

Input Schema

{
  "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.

Input Schema

{
  "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.

Input Schema

{
  "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.

Input Schema

{
  "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.

Input Schema

{
  "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.

Input Schema

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

Community

Rate this Server

Evidence

Recent observations

verifiedversion not recorded16 tools