Skip to main content
Glama

Featurebase MCP Server

A Model Context Protocol (MCP) server that provides access to the Featurebase API for managing posts and comments.

Features

  • Posts Management

    • List posts with filtering options

    • Create new posts

    • Update existing posts

    • Delete posts

    • Get post upvoters

    • Add upvoters to posts

  • Comments Management

    • Get comments for posts/changelogs

    • Create new comments or replies

    • Update comments

    • Delete comments

Related MCP server: Canny MCP Server

Installation

Once published to Smithery, users can install the server easily:

npx featurebase-mcp

Or install globally:

npm install -g featurebase-mcp

From Source

git clone https://github.com/marcinwyszynski/featurebase-mcp.git
cd featurebase-mcp
npm install
npm run build

Usage

Claude Desktop Configuration

Add this server to your Claude Desktop configuration file:

macOS: ~/Library/Application Support/Claude/claude_desktop_config.json Windows: %APPDATA%\Claude\claude_desktop_config.json

{
  "mcpServers": {
    "featurebase": {
      "command": "npx",
      "args": ["featurebase-mcp"],
      "env": {
        "FEATUREBASE_API_KEY": "your-api-key-here",
        "FEATUREBASE_ORG_URL": "https://your-org.featurebase.app"
      }
    }
  }
}

Using Global Installation

{
  "mcpServers": {
    "featurebase": {
      "command": "featurebase-mcp",
      "env": {
        "FEATUREBASE_API_KEY": "your-api-key-here",
        "FEATUREBASE_ORG_URL": "https://your-org.featurebase.app"
      }
    }
  }
}

Using Local Installation

{
  "mcpServers": {
    "featurebase": {
      "command": "node",
      "args": ["/path/to/featurebase-mcp/build/index.js"],
      "env": {
        "FEATUREBASE_API_KEY": "your-api-key-here",
        "FEATUREBASE_ORG_URL": "https://your-org.featurebase.app"
      }
    }
  }
}

Getting Your API Key

  1. Log in to your Featurebase account

  2. Navigate to your account settings

  3. Generate an API key

  4. Keep it secure - never commit it to version control

Environment Variables

The server requires these environment variables:

Required

  • FEATUREBASE_API_KEY: Your FeatureBase API key

Optional

You can set them:

  1. In your Claude Desktop configuration (recommended)

  2. Export in your shell: export FEATUREBASE_API_KEY="your-api-key-here"

  3. When running the server: FEATUREBASE_API_KEY="your-api-key-here" npx featurebase-mcp

Available Tools

Posts

list_posts

List posts with optional filtering.

Parameters:

  • id: Find specific post by ID

  • q: Search posts by title or content

  • category: Filter by board names (array)

  • status: Filter by status IDs (array)

  • sortBy: Sort order (e.g., "date:desc", "upvotes:desc")

  • startDate: Posts created after this date

  • endDate: Posts created before this date

  • limit: Results per page

  • page: Page number

create_post

Create a new post.

Parameters:

  • title (required): Post title (min 2 characters)

  • category (required): Board/category name

  • content: Post content

  • email: Submitter's email

  • authorName: Name for new users

  • tags: Array of tag names

  • commentsAllowed: Enable/disable comments

  • status: Post status

  • date: Creation date

  • customInputValues: Custom field values

update_post

Update an existing post.

Parameters:

  • id (required): Post ID to update

  • title: New title

  • content: New content

  • status: New status

  • commentsAllowed: Enable/disable comments

  • category: New category

  • sendStatusUpdateEmail: Email upvoters about status change

  • tags: New tags

  • inReview: Put post in review

  • date: Creation date

  • customInputValues: Custom field values

delete_post

Permanently delete a post.

Parameters:

  • id (required): Post ID to delete

get_post_upvoters

Get list of users who upvoted a post.

Parameters:

  • submissionId (required): Post ID

  • page: Page number (default: 1)

  • limit: Results per page (default: 10, max: 100)

add_upvoter

Add an upvoter to a post.

Parameters:

  • id (required): Post ID

  • email (required): Upvoter's email

  • name (required): Upvoter's name

resolve_post_slug

Convert a post slug to post ID and get complete post details.

Parameters:

  • slug (required): Post slug from URL (e.g., "spacectl-stack-local-preview-target")

Returns the complete post data including ID, title, content, and metadata.

get_similar_submissions

Find posts similar to the given query text.

Parameters:

  • query (required): Search query text to find similar submissions

  • locale: Locale for search (default: "en")

Returns a list of similar posts based on content similarity.

Comments

get_comments

Get comments for a post or changelog.

Parameters:

  • submissionId: Post ID or slug (required if no changelogId)

  • changelogId: Changelog ID or slug (required if no submissionId)

  • privacy: Filter by privacy ("public", "private", "all")

  • inReview: Filter for comments in review

  • commentThreadId: Get all comments in a thread

  • limit: Results per page (default: 10)

  • page: Page number (default: 1)

  • sortBy: Sort order ("best", "top", "new", "old")

create_comment

Create a new comment or reply.

Parameters:

  • content (required): Comment content

  • submissionId: Post ID or slug (required if no changelogId)

  • changelogId: Changelog ID or slug (required if no submissionId)

  • parentCommentId: Parent comment ID for replies

  • isPrivate: Make comment private (admins only)

  • sendNotification: Notify voters (default: true)

  • createdAt: Set creation date

  • author: Post as specific user (object with name, email, profilePicture)

update_comment

Update an existing comment.

Parameters:

  • id (required): Comment ID

  • content: New content

  • isPrivate: Make private (admins only)

  • pinned: Pin comment to top

  • inReview: Put comment in review

  • createdAt: Update creation date

delete_comment

Delete a comment (soft delete if it has replies).

Parameters:

  • id (required): Comment ID to delete

Development

# Install dependencies
npm install

# Build TypeScript
npm run build

# Run in development mode
npm run dev

Security

  • Never hardcode your API key

  • Always use environment variables for API keys

  • Keep your API key secure and rotate it regularly

  • The server will not start without a valid FEATUREBASE_API_KEY environment variable

Publishing

This server is available on:

  • Smithery - MCP server registry

  • npm - Node package manager

For publishing instructions, see PUBLISHING.md.

Contributing

Contributions are welcome! Please feel free to submit a Pull Request.

License

MIT

Available Tools

12 tools
add_upvoterC

Add an upvoter to a post

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesPost ID
emailYesUpvoter email
nameYesUpvoter name

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries full burden for behavioral disclosure. While 'Add' implies a write/mutation operation, it doesn't specify whether this requires authentication, what happens if the upvoter already exists, if there are rate limits, or what the response looks like. This leaves significant behavioral gaps for a mutation tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, efficient sentence that states the core functionality without any wasted words. It's appropriately sized for the tool's complexity and gets straight to the point.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a mutation tool with no annotations and no output schema, the description is insufficient. It doesn't explain what happens after adding an upvoter, what the return value might be, or address potential error conditions. Given the complexity of a write operation, more contextual information is needed.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has 100% description coverage, with clear documentation for all three required parameters (id, email, name). The description doesn't add any parameter-specific information beyond what's already in the schema, so it meets the baseline for high schema coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Add') and target resource ('an upvoter to a post'), making the purpose immediately understandable. However, it doesn't differentiate from sibling tools like 'get_post_upvoters' or explain what distinguishes adding an upvoter from other post-related operations.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives like 'get_post_upvoters' or 'update_post'. There's no mention of prerequisites, appropriate contexts, or exclusions, leaving the agent with insufficient usage context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

create_commentC

Create a new comment or reply

ParametersJSON Schema
NameRequiredDescriptionDefault
submissionIdNoPost ID or slug (required if no changelogId)
changelogIdNoChangelog ID or slug (required if no submissionId)
contentYesComment content
parentCommentIdNoParent comment ID for replies
isPrivateNoMake comment private (admins only)
sendNotificationNoNotify voters (default: true)
createdAtNoSet creation date
authorNoPost as specific user

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. It states the tool creates comments or replies, implying a write operation, but fails to mention permissions required (e.g., admin rights for private comments), rate limits, or what happens on success/failure. This leaves significant gaps for a mutation tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, efficient sentence with zero waste—'Create a new comment or reply'—front-loading the core purpose without unnecessary details. Every word earns its place, making it highly concise and well-structured.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a mutation tool with 8 parameters, no annotations, and no output schema, the description is inadequate. It lacks context on permissions, behavioral traits, error handling, and output expectations, leaving the agent under-informed despite the detailed schema. More completeness is needed for safe and effective use.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents all 8 parameters thoroughly. The description adds no additional meaning beyond implying 'comment or reply' relates to 'parentCommentId', but this is already clear in the schema. Baseline 3 is appropriate as the schema does the heavy lifting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Create') and resource ('comment or reply'), distinguishing it from sibling tools like 'update_comment' or 'delete_comment'. However, it doesn't specify the context (e.g., on submissions or changelogs) or differentiate from 'create_post', making it slightly less specific than ideal.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus alternatives like 'create_post' or 'update_comment', nor does it mention prerequisites such as needing a submissionId or changelogId. The description lacks explicit usage context or exclusions, leaving the agent to infer from parameters alone.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

create_postC

Create a new post

ParametersJSON Schema
NameRequiredDescriptionDefault
titleYesPost title (min 2 characters)
categoryYesThe board (category) for the post
contentNoPost content (can be empty)
emailNoEmail of the user submitting
authorNameNoName for new user if email not found
tagsNoArray of tag names
commentsAllowedNoAllow comments on post
statusNoPost status
dateNoPost creation date
customInputValuesNoCustom field values

TDQS

C2.7/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. 'Create a new post' implies a write operation, but it doesn't disclose permissions needed, whether it's idempotent, rate limits, or what happens on failure. For a mutation tool with zero annotation coverage, this is a significant gap in transparency.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is extremely concise with 'Create a new post'—a single, front-loaded sentence that wastes no words. It's appropriately sized for its purpose, though this conciseness comes at the cost of detail in other dimensions.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the complexity (10 parameters, mutation tool, no output schema, and no annotations), the description is incomplete. It doesn't explain return values, error handling, or behavioral traits, relying solely on the schema for parameters. For a creation tool with significant input requirements, more context is needed.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has 100% description coverage, so the schema already documents all 10 parameters thoroughly. The description adds no additional meaning beyond what's in the schema (e.g., no context on how parameters interact or default behaviors). Baseline 3 is appropriate when schema does the heavy lifting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description 'Create a new post' clearly states the action (create) and resource (post), which is adequate. However, it doesn't differentiate this from sibling tools like 'update_post' or specify what type of post (e.g., forum post, blog post), leaving it somewhat vague. It's not tautological but lacks specificity.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives. There are sibling tools like 'update_post' and 'list_posts', but the description doesn't mention prerequisites, context (e.g., for new content creation), or exclusions, offering only a basic statement without usage context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

delete_commentA

Delete a comment (soft delete if has replies)

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesComment ID to delete

TDQS

A3.9/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. It effectively reveals a key trait: the deletion may be 'soft' (not permanent) when the comment has replies, which is crucial for understanding side effects. However, it doesn't cover other aspects like permissions needed, error conditions, or what 'soft delete' entails operationally.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, efficient sentence that front-loads the core action ('Delete a comment') and immediately adds the critical behavioral detail ('soft delete if has replies'). There is zero waste, and every word earns its place by providing essential context.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity (a mutation with conditional behavior), no annotations, and no output schema, the description is minimally adequate. It covers the core action and a key behavioral trait, but lacks details on permissions, error handling, or return values, leaving gaps for the agent to infer.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has 100% description coverage, with the 'id' parameter clearly documented. The description adds no additional meaning about the parameter beyond what the schema provides, such as format examples or constraints. With high schema coverage, the baseline score of 3 is appropriate as the description doesn't compensate but doesn't need to.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the specific action ('Delete a comment') and distinguishes it from siblings like 'update_comment' or 'delete_post' by specifying the resource type. It goes beyond a simple verb by adding the conditional behavior ('soft delete if has replies'), which further clarifies its unique purpose.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage for deleting comments, but provides no explicit guidance on when to use this tool versus alternatives like 'update_comment' or other deletion tools. It mentions a condition ('if has replies') that affects behavior, but doesn't state when to choose this over other options or any prerequisites.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

delete_postC

Delete a post permanently

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesPost ID to delete

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. It mentions 'permanently' which hints at irreversibility, but doesn't address permissions needed, error conditions, side effects, or what happens to associated data (e.g., comments). For a destructive operation, this leaves significant gaps in understanding its behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, efficient sentence with no wasted words. It's front-loaded with the core action and resource, making it immediately understandable.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a destructive tool with no annotations and no output schema, the description is inadequate. It doesn't explain what 'permanently' entails operationally, what the response looks like, or error handling. Given the complexity of deletion operations, more context is needed for safe use.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has 100% description coverage, with the 'id' parameter clearly documented. The description doesn't add any parameter-specific information beyond what's in the schema, so it meets the baseline for high schema coverage without compensating value.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Delete') and target resource ('a post'), with the adverb 'permanently' adding specificity about the nature of the deletion. However, it doesn't explicitly differentiate from sibling tools like 'delete_comment' or 'update_post' beyond the resource name.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus alternatives like 'update_post' or 'delete_comment', nor any prerequisites or contextual constraints. The description only states what the tool does, not when it should be selected.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_commentsC

Get comments for a post or changelog. Available fields: upvoted, downvoted, inReview, isSpam, pinned, emailSent, sendNotification, organization, submission, author, authorId, authorPicture, isPrivate, isDeleted, confidenceScore, content, upvotes, downvotes, score, parentComment, path, createdAt, updatedAt, id, replies(upvoted, downvoted, inReview, isSpam, pinned, emailSent, sendNotification, organization, submission, author, authorId, authorPicture, isPrivate, isDeleted, confidenceScore, content, upvotes, downvotes, score, parentComment, path, createdAt, updatedAt, id)

ParametersJSON Schema
NameRequiredDescriptionDefault
submissionIdNoPost ID or slug (required if no changelogId)
changelogIdNoChangelog ID or slug (required if no submissionId)
privacyNoFilter by privacy setting
inReviewNoFilter for comments in review
commentThreadIdNoGet all comments in a thread
limitNoResults per page (default: 10)
pageNoPage number (default: 1)
sortByNoSort order (default: best)
selectNoFields to return. Examples: "id,content,author(name)" | "content,upvotes,createdAt" | "author(name,email),replies(content)". Leave empty for all fields.

TDQS

C2.8/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. It lists available fields but doesn't explain key behaviors: whether this is a read-only operation, if it requires authentication, how pagination works (implied by limit/page but not described), error handling, or rate limits. The field list adds some context but misses critical operational details for a tool with 9 parameters.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is front-loaded with the core purpose but becomes overly verbose by listing all available fields twice (including nested replies). This repetition (e.g., field names duplicated for replies) adds unnecessary length without enhancing clarity. A more concise approach would summarize field categories or refer to documentation.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity (9 parameters, no output schema, no annotations), the description is incomplete. It lacks information on return format, error cases, authentication needs, and behavioral constraints. While it covers fields and basic purpose, it doesn't provide enough context for safe and effective use by an AI agent, especially for a data retrieval tool with filtering options.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema description coverage is 100%, so the schema already documents all 9 parameters thoroughly. The description adds value by listing available return fields (e.g., upvoted, content, replies), which helps interpret the 'select' parameter, but doesn't provide additional semantic context beyond what the schema offers. This meets the baseline of 3 for high schema coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: 'Get comments for a post or changelog.' It specifies the resource (comments) and the target objects (post or changelog). However, it doesn't explicitly differentiate from sibling tools like 'get_post_upvoters' or 'list_posts,' which reduces the score from a perfect 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites (e.g., needing a post or changelog ID), compare to siblings like 'list_posts' for post retrieval, or specify use cases (e.g., filtering vs. fetching all comments). This lack of contextual direction leaves the agent to infer usage.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_post_upvotersB

Get list of users who upvoted a post

ParametersJSON Schema
NameRequiredDescriptionDefault
submissionIdYesPost ID
pageNoPage number (default: 1)
limitNoResults per page (default: 10, max: 100)

TDQS

B3.1/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries full burden but offers minimal behavioral insight. It implies a read-only operation ('Get list') but doesn't disclose pagination behavior (implied by 'page' and 'limit' parameters), rate limits, authentication needs, or error conditions. For a tool with 3 parameters and no annotation coverage, this leaves significant gaps.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, efficient sentence with zero waste—every word contributes to understanding the tool's purpose. It's front-loaded and appropriately sized for a straightforward retrieval tool, making it easy for an agent to parse quickly.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's moderate complexity (3 parameters, no output schema, no annotations), the description is minimally adequate. It covers the core purpose but lacks context on usage, behavioral traits, or output format. Without annotations or output schema, the agent must rely on the schema and inference, leaving room for error in invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema fully documents parameters (submissionId, page, limit). The description adds no additional meaning beyond implying the tool operates on a post (via 'post' in the text), which aligns with the schema's 'Post ID'. Baseline 3 is appropriate as the schema does the heavy lifting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb ('Get list') and resource ('users who upvoted a post'), making the tool's purpose immediately understandable. It distinguishes from siblings like 'get_comments' or 'list_posts' by focusing specifically on upvoters. However, it doesn't explicitly contrast with 'add_upvoter' (which adds rather than retrieves upvoters), keeping it from a perfect score.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites (e.g., needing a valid post ID), exclusions, or comparisons to siblings like 'get_comments' for post-related data. The agent must infer usage from the name and schema alone.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_similar_submissionsC

Find posts similar to the given query text

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYesSearch query text to find similar submissions
localeNoLocale for search (default: 'en')

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. It states the tool finds similar posts but doesn't explain how similarity is determined (e.g., semantic matching, keywords), what the output format is (e.g., list of posts with scores), or any limitations like rate limits or authentication needs. This is a significant gap for a search tool with zero annotation coverage.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, clear sentence with zero waste. It's front-loaded with the core purpose and appropriately sized for the tool's complexity, making it easy to parse quickly.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the lack of annotations and output schema, the description is incomplete. It doesn't cover behavioral aspects like how similarity is computed, output format, or usage context relative to siblings. For a search tool with no structured data beyond the input schema, more detail is needed to guide effective agent use.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents both parameters ('query' and 'locale') adequately. The description adds no additional meaning beyond what the schema provides, such as examples of query formats or locale usage. This meets the baseline for high schema coverage but doesn't enhance parameter understanding.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb ('Find') and resource ('posts similar to the given query text'), making the purpose understandable. However, it doesn't explicitly distinguish this tool from sibling tools like 'list_posts' or 'resolve_post_slug', which might also involve post retrieval. A perfect score would require clarifying how 'similar' differs from general listing or resolution.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites, such as needing an existing post or query context, or differentiate from siblings like 'list_posts' for general listing or 'resolve_post_slug' for specific post lookup. This leaves the agent with minimal context for tool selection.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_postsC

List posts with optional filtering. Available fields: id, title, content, author, authorId, authorPicture, commentsAllowed, organization, upvotes, upvoted, postCategory(category,private,prefill,roles,hiddenFromRoles,id), postTags(name,color,private,id), postStatus(name,color,type,isDefault,id), date, lastModified, comments, isSubscribed, inReview, lastDraggedTimestamps

ParametersJSON Schema
NameRequiredDescriptionDefault
idNoFind submission by its id
qNoSearch for posts by title or content
categoryNoFilter posts by category (board) names
statusNoFilter posts by status ids
sortByNoSort posts (e.g., "date:desc" or "upvotes:desc")
startDateNoGet posts created after this date
endDateNoGet posts created before this date
limitNoNumber of results per page
pageNoPage number
selectNoFields to return. Examples: "id,title,upvotes" | "title,author(name)" | "postCategory(category),postStatus(name)". Leave empty for all fields.

TDQS

C2.5/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries full burden for behavioral disclosure. While 'List posts' implies a read operation, there's no information about pagination behavior (beyond the limit/page parameters), rate limits, authentication requirements, or what happens when no filters are applied. The description merely lists available fields without explaining behavioral characteristics.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence followed by a long field list. While the initial sentence is concise, the exhaustive field enumeration feels like data dumping rather than helpful guidance. The structure could be improved by grouping related fields or explaining field relationships rather than just listing them.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 10-parameter tool with no annotations and no output schema, the description is insufficient. It doesn't explain the return format, pagination behavior, error conditions, or typical response structure. The field list hints at what might be returned, but without an output schema, the description should provide more complete context about the tool's behavior and results.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 100% schema description coverage, the input schema already documents all 10 parameters thoroughly. The description adds marginal value by listing available return fields, but doesn't provide additional semantic context beyond what's in the parameter descriptions. This meets the baseline for high schema coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states 'List posts with optional filtering' which clearly indicates the verb (list) and resource (posts). However, it doesn't distinguish this from sibling tools like 'get_similar_submissions' or 'get_post_upvoters' - it's a generic listing function without specifying what makes it unique among the available post-related tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives. There's no mention of when to choose list_posts over get_similar_submissions or get_post_upvoters, nor any context about prerequisites or typical use cases. The agent must infer usage from the tool name alone.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

resolve_post_slugC

Convert a post slug to post ID and get post details

ParametersJSON Schema
NameRequiredDescriptionDefault
slugYesPost slug from URL (e.g., 'spacectl-stack-local-preview-target')

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden of behavioral disclosure. It states the tool converts a slug to an ID and gets details, implying a read operation, but doesn't cover critical aspects like error handling (e.g., invalid slugs), authentication needs, rate limits, or the format of returned details. This is a significant gap for a tool with no annotation coverage.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is extremely concise and front-loaded, consisting of a single, clear sentence that directly states the tool's function. Every word earns its place, with no redundant or vague language, making it efficient for quick understanding by an AI agent.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the complexity (a lookup tool with no output schema) and lack of annotations, the description is incomplete. It doesn't explain what 'post details' include, how errors are handled, or any behavioral traits, leaving the agent with insufficient information for reliable invocation. This is inadequate for a tool that retrieves data without structured output documentation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, with the input schema fully documenting the 'slug' parameter, including an example. The description adds minimal value beyond this, as it only mentions 'post slug' without providing additional context like format constraints or usage tips. Since the schema does the heavy lifting, the baseline score of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: converting a post slug to a post ID and retrieving post details. It specifies the verb ('convert' and 'get') and resource ('post slug' to 'post ID and post details'), making the function unambiguous. However, it doesn't explicitly differentiate from sibling tools like 'get_post_upvoters' or 'list_posts', which might also retrieve post information, so it doesn't reach the highest score.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites (e.g., needing a valid slug), exclusions, or compare it to siblings like 'list_posts' or 'get_post_upvoters'. This leaves the agent without context for tool selection, relying solely on the description's implied use case.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

update_commentC

Update an existing comment

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesComment ID
contentNoNew content
isPrivateNoMake private (admins only)
pinnedNoPin comment to top
inReviewNoPut comment in review
createdAtNoUpdate creation date

TDQS

C2.7/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries full burden for behavioral disclosure. It states 'Update an existing comment', implying a mutation operation, but doesn't cover critical aspects like required permissions, whether updates are reversible, rate limits, or what happens to unspecified fields. This is inadequate for a mutation tool with zero annotation coverage.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, efficient sentence with zero waste. It's front-loaded and appropriately sized for the tool's purpose, earning its place without unnecessary elaboration.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity (mutation with 6 parameters), lack of annotations, and no output schema, the description is incomplete. It doesn't explain return values, error conditions, or behavioral nuances, leaving significant gaps for an AI agent to understand how to invoke it correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema fully documents all 6 parameters (e.g., 'id' as Comment ID, 'content' as New content). The description adds no parameter-specific information beyond what's in the schema, meeting the baseline of 3 where schema does the heavy lifting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description 'Update an existing comment' clearly states the action (update) and target resource (comment), but it's vague about scope and doesn't differentiate from sibling tools like 'update_post' or 'create_comment'. It lacks specificity about what aspects can be updated or the context of the comment system.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites (e.g., needing an existing comment ID), exclusions, or comparisons to siblings like 'create_comment' for new comments or 'delete_comment' for removal. Usage context is implied but not explicit.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

update_postC

Update an existing post

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesPost ID to update
titleNoNew title
contentNoNew content
statusNoNew status
commentsAllowedNoAllow comments
categoryNoNew category
sendStatusUpdateEmailNoSend status update email to upvoters
tagsNoNew tags
inReviewNoPut post in review
dateNoPost creation date
customInputValuesNoCustom field values

TDQS

C2.7/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries full burden for behavioral disclosure. 'Update an existing post' implies a mutation operation but doesn't specify permissions required, whether changes are reversible, rate limits, error conditions, or what happens to fields not mentioned in the update. For a mutation tool with 11 parameters and no annotation coverage, this is inadequate.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, efficient sentence with zero wasted words. It's appropriately sized for a basic tool description and front-loads the core purpose immediately. Every word earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a mutation tool with 11 parameters, no annotations, and no output schema, the description is insufficient. It doesn't explain the update behavior (partial vs. full updates), response format, error handling, or how it differs from sibling tools. The agent lacks critical context to use this tool effectively beyond basic parameter passing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so all parameters are documented in the schema itself. The description adds no additional meaning about parameters beyond what's in the schema (e.g., no explanation of how partial updates work, default behaviors, or relationships between fields). Baseline 3 is appropriate when the schema does the heavy lifting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description 'Update an existing post' clearly states the verb ('Update') and resource ('post'), but it's vague about scope and doesn't distinguish from sibling tools like 'update_comment' or 'create_post'. It doesn't specify what aspects of a post can be updated or the tool's specific role in the post management ecosystem.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives like 'create_post', 'delete_post', or 'update_comment'. There's no mention of prerequisites (e.g., needing an existing post ID), appropriate contexts, or exclusions. The agent must infer usage from the tool name alone.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

TDQS

B3.4/5.0
Disambiguation5/5

Each tool has a clearly distinct purpose targeting specific resources and actions, such as create_post vs. update_post, or get_comments vs. delete_comment, with no overlapping functionality that could cause confusion.

Naming Consistency5/5

All tools follow a consistent verb_noun pattern (e.g., create_post, delete_comment, get_similar_submissions), using snake_case throughout without any deviations or mixed conventions.

Tool Count5/5

With 12 tools, the server is well-scoped for a Featurebase domain, covering core CRUD operations for posts and comments, along with utility functions like upvoting and similarity search, without being overly sparse or bloated.

Completeness5/5

The tool set provides complete lifecycle coverage for posts and comments, including creation, retrieval, updating, deletion, and auxiliary actions like upvoting and similarity search, with no obvious gaps for the domain.

Maintenance

ActivityInactive
ResponsivenessSyncing

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/marcinwyszynski/featurebase-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server