Skip to main content
Glama
launchnotes

LaunchNotes MCP Server

Official
by launchnotes

LaunchNotes MCP Server

WARNING

This server is frozen. LaunchNotes MCP is now a hosted server — you log in with your LaunchNotes account (no API token), and your assistant acts as you with your role's permissions, plus a bigger tool set and skills.

→ Get the new version: launchnotes/mcp-server-guide — one install for Claude Code, Claude Desktop, and Cursor.

This npm/stdio server keeps working and stays supported for scripting & automation, but it gets no new tools or fixes.

An MCP (Model Context Protocol) server for managing LaunchNotes projects and announcements through the GraphQL API. Uses stdio transport for Claude Desktop and other MCP clients.

Features

Project Management (6 tools)

  • Get complete project details

  • List all accessible projects

  • Update custom CSS, HTML, headers, and footers

  • Update project color palette and theme

  • Update project content (title, description, slug)

  • Toggle project features (feedback, roadmap, ideas, RSS, voting)

Announcement Management (7 tools)

  • List and filter announcements

  • Get announcement details

  • Create new announcements

  • Update existing announcements

  • Publish announcements immediately

  • Schedule announcements for future publication

  • Archive announcements

Feedback Management (2 tools) šŸ†•

  • Search and filter customer feedback

  • Get complete feedback details with customer info

Analytics (1 tool) šŸ†•

  • Get top-performing announcements by various metrics

Related MCP server: zenhub-mcp

Installation

For everyday use in Claude Code, Claude Desktop, or Cursor, use the new hosted server — see launchnotes/mcp-server-guide. The steps below are the legacy npm/stdio path, kept for scripting & automation.

From npm (legacy)

npm install -g @launchnotes/mcp

From Source

git clone https://github.com/launchnotes/mcp.git
cd mcp
npm install
npm run build

Quick Start

1. Get Your API Token

Get your LaunchNotes API token from Settings → API in your LaunchNotes dashboard. Use a Management token for full access or a Public token for read-only operations.

2. Add to Claude Desktop

Add to your Claude Desktop config file (~/Library/Application Support/Claude/claude_desktop_config.json on macOS):

{
  "mcpServers": {
    "launchnotes": {
      "command": "npx",
      "args": ["-y", "@launchnotes/mcp"],
      "env": {
        "LAUNCHNOTES_API_TOKEN": "your-token-here"
      }
    }
  }
}

Then restart Claude Desktop.

3. Add to Claude Code

claude mcp add --transport stdio launchnotes \
  --env LAUNCHNOTES_API_TOKEN='your-token-here' \
  -- npx -y @launchnotes/mcp

4. Start Using

In Claude, simply ask:

List my LaunchNotes projects
Create a new announcement about our API update

Getting your API token:

  • Log into LaunchNotes

  • Navigate to Settings → API

  • Generate a Management token (read/write access) or Public token (read-only)

Available Tools

1. launchnotes_get_project

Get complete details for a LaunchNotes project including all customization settings.

Parameters:

  • project_id (string, required): The project ID

  • response_format ('json' | 'markdown', optional): Output format (default: 'markdown')

Example:

{
  "project_id": "proj_123",
  "response_format": "markdown"
}

Use cases:

  • "Show me my project's current custom CSS"

  • "What are the color values for my project?"

  • "Get all settings for project proj_123"


2. launchnotes_list_projects

List all LaunchNotes projects accessible with your API token.

Parameters:

  • response_format ('json' | 'markdown', optional): Output format (default: 'markdown')

Example:

{
  "response_format": "json"
}

Use cases:

  • "Show me all my LaunchNotes projects"

  • "List my organization's projects"

  • "What projects do I have access to?"


3. launchnotes_update_project_custom_code

Update custom CSS, HTML head, header, footer, or index hero for a project.

Parameters:

  • project_id (string, required): The project ID

  • custom_css (string, optional): Custom CSS code

  • custom_head (string, optional): Custom HTML for <head> section

  • custom_header (string, optional): Custom HTML for page header

  • custom_footer (string, optional): Custom HTML for page footer

  • custom_index_hero (string, optional): Custom HTML for index hero section

Note: At least one custom code field must be provided.

Example:

{
  "project_id": "proj_123",
  "custom_css": ".sidebar { display: none; }",
  "custom_head": "<meta name=\"description\" content=\"Product updates\">"
}

Use cases:

  • "Add custom CSS to hide the sidebar"

  • "Update the custom header HTML"

  • "Set custom analytics code in the head"


4. launchnotes_update_project_colors

Update the color palette and theme for a project. All colors must be in hex format.

Parameters:

  • project_id (string, required): The project ID

  • primary_color (string, optional): Primary brand color (hex)

  • secondary_color (string, optional): Secondary brand color (hex)

  • primary_text_color (string, optional): Primary text color (hex)

  • secondary_text_color (string, optional): Secondary text color (hex)

  • gray_color (string, optional): Gray accent color (hex)

  • light_gray_color (string, optional): Light gray color (hex)

  • off_white_color (string, optional): Off-white color (hex)

  • white_color (string, optional): White color (hex)

  • supporting_palette (string, optional): Supporting palette config

  • color_theme (string, optional): Overall color theme identifier

Note: At least one color field must be provided. All colors must be in hex format (e.g., #FF5733).

Example:

{
  "project_id": "proj_123",
  "primary_color": "#FF5733",
  "secondary_color": "#3498DB",
  "primary_text_color": "#2C3E50"
}

Use cases:

  • "Change the primary color to #FF5733"

  • "Update all brand colors for my project"

  • "Set text colors to improve readability"


5. launchnotes_update_project_content

Update project title, description, headings, and slug.

Parameters:

  • project_id (string, required): The project ID

  • name (string, optional): Internal project name

  • title (string, optional): Public-facing project title

  • description (string, optional): Project description

  • heading (string, optional): Main heading on the project page

  • subheading (string, optional): Subheading below the main heading

  • slug (string, optional): URL-friendly identifier (lowercase, hyphens only)

Note: At least one content field must be provided.

Example:

{
  "project_id": "proj_123",
  "title": "Product Updates",
  "heading": "What's New",
  "slug": "updates"
}

Use cases:

  • "Update project title to 'Product Updates'"

  • "Change the heading and subheading"

  • "Update the project slug"


6. launchnotes_update_project_features

Enable or disable features for a project.

Parameters:

  • project_id (string, required): The project ID

  • feedback_enabled (boolean, optional): Enable/disable feedback collection

  • roadmap_enabled (boolean, optional): Enable/disable roadmap feature

  • ideas_enabled (boolean, optional): Enable/disable ideas/feature requests

  • rss_feed_enabled (boolean, optional): Enable/disable RSS feed

  • voting_enabled (boolean, optional): Enable/disable voting on ideas

  • noindex (boolean, optional): Prevent search engine indexing (true = disabled SEO)

Note: At least one feature toggle must be provided.

Example:

{
  "project_id": "proj_123",
  "feedback_enabled": true,
  "roadmap_enabled": true,
  "voting_enabled": true
}

Use cases:

  • "Enable feedback collection for my project"

  • "Turn on the roadmap feature"

  • "Disable RSS feed"


7. launchnotes_search_feedback šŸ†•

Search and filter customer feedback in a LaunchNotes project.

Parameters:

  • project_id (string, required): The ID of the project

  • query (string, optional): Search term to find in feedback content

  • reaction ('happy' | 'meh' | 'sad', optional): Filter by customer sentiment

  • importance ('low' | 'medium' | 'high', optional): Filter by importance level

  • organized_state (string, optional): Filter by state ('organized', 'unorganized', 'announcement', 'idea', 'roadmap')

  • start_date (string, optional): Filter feedback created after this date (ISO 8601)

  • end_date (string, optional): Filter feedback created before this date (ISO 8601)

  • limit (number, optional): Number to return (max 100, default: 20)

  • response_format ('json' | 'markdown', optional): Output format (default: 'markdown')

Example:

{
  "project_id": "proj_123",
  "query": "Digests",
  "reaction": "sad",
  "importance": "high",
  "limit": 10
}

Use cases:

  • "What are customers saying about Digests?"

  • "Show me all unhappy feedback from last month"

  • "Find high importance feedback that's unorganized"

  • "Search feedback containing 'API integration'"


8. launchnotes_get_feedback šŸ†•

Get complete details for a specific feedback item including customer info and associations.

Parameters:

  • feedback_id (string, required): The ID of the feedback item

  • response_format ('json' | 'markdown', optional): Output format (default: 'markdown')

Example:

{
  "feedback_id": "fb_abc123",
  "response_format": "markdown"
}

Returns:

  • Content and internal notes

  • Sentiment (reaction) and importance

  • Affected customer information

  • Reporter information

  • Associated announcement/idea/work item

  • Timestamps

Use cases:

  • "Show me details for feedback #abc123"

  • "Get the full context of this feedback item"

  • "What announcement is this feedback associated with?"


9. launchnotes_get_top_announcements šŸ†•

Get top-performing announcements ranked by various metrics over a specified timeframe.

Parameters:

  • project_id (string, required): The ID of the project

  • timeframe ('week' | 'month' | 'quarter' | 'year', required): Time period

  • start_date (string, optional): Custom start date (ISO 8601) - overrides timeframe

  • end_date (string, optional): Custom end date (ISO 8601) - overrides timeframe

  • metric (enum, optional, default: 'engagement'): Ranking metric

    • 'engagement' - Total views + opens + clicks (most comprehensive)

    • 'open_rate' - Email open rate (email performance)

    • 'click_rate' - Email click rate (engagement depth)

    • 'feedback_count' - Number of feedback items (customer response)

    • 'feedback_sentiment' - Average sentiment score (customer satisfaction)

  • limit (number, optional): Number of results (max 50, default: 10)

  • response_format ('json' | 'markdown', optional): Output format (default: 'markdown')

Example:

{
  "project_id": "proj_123",
  "timeframe": "quarter",
  "metric": "engagement",
  "limit": 5
}

Returns: Ranked list of announcements with:

  • Announcement details (ID, headline, slug, publish date)

  • Primary metric value

  • All other available metrics (views, opens, clicks, rates, feedback)

Use cases:

  • "Which announcements performed best this quarter?"

  • "Show me top 5 announcements by email open rate this month"

  • "What got the most feedback in the last week?"

  • "Which announcements had the best sentiment this year?"


Complete Usage Example

Here's a complete workflow for customizing a LaunchNotes project:

# 1. List all your projects
# Response: Shows all projects with IDs

# 2. Get details for a specific project
{
  "project_id": "proj_abc123",
  "response_format": "markdown"
}

# 3. Update the color scheme
{
  "project_id": "proj_abc123",
  "primary_color": "#FF5733",
  "secondary_color": "#3498DB"
}

# 4. Add custom CSS to hide elements
{
  "project_id": "proj_abc123",
  "custom_css": ".sidebar { display: none; } .header { background: #FF5733; }"
}

# 5. Update content
{
  "project_id": "proj_abc123",
  "title": "Product Updates",
  "heading": "Stay Updated",
  "subheading": "All the latest features and improvements"
}

# 6. Enable features
{
  "project_id": "proj_abc123",
  "feedback_enabled": true,
  "roadmap_enabled": true
}

API Rate Limits

LaunchNotes enforces a rate limit of 300 operations per 5 minutes. The server will return an error if this limit is exceeded.

Error Handling

The server provides detailed error messages for common issues:

  • Authentication failed: Check your API token

  • Project not found: Verify the project ID exists

  • Rate limit exceeded: Wait before making more requests

  • Validation error: Check that all required fields are provided and formatted correctly

Development

Running in Development Mode

npm run dev

This will watch for TypeScript changes and rebuild automatically.

Project Structure

@launchnotes/mcp/
ā”œā”€ā”€ src/
│   ā”œā”€ā”€ index.ts              # Server initialization
│   ā”œā”€ā”€ shared/
│   │   ā”œā”€ā”€ client.ts         # GraphQL client
│   │   ā”œā”€ā”€ constants.ts      # API configuration
│   │   └── types.ts          # Shared TypeScript interfaces
│   ā”œā”€ā”€ projects/
│   │   ā”œā”€ā”€ types.ts          # Project types
│   │   ā”œā”€ā”€ queries.ts        # Project GraphQL queries
│   │   ā”œā”€ā”€ schemas.ts        # Project Zod schemas
│   │   ā”œā”€ā”€ formatters.ts     # Project response formatters
│   │   └── tools.ts          # Project tool implementations
│   └── announcements/
│       ā”œā”€ā”€ types.ts          # Announcement types
│       ā”œā”€ā”€ queries.ts        # Announcement GraphQL queries
│       ā”œā”€ā”€ schemas.ts        # Announcement Zod schemas
│       ā”œā”€ā”€ formatters.ts     # Announcement response formatters
│       └── tools.ts          # Announcement tool implementations
ā”œā”€ā”€ dist/                     # Compiled JavaScript
ā”œā”€ā”€ package.json
ā”œā”€ā”€ tsconfig.json
└── README.md

Connecting to Claude Desktop

To use this MCP server with Claude Desktop:

  1. Configure Claude Desktop:

    Edit your Claude Desktop configuration file:

    • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json

    • Windows: %APPDATA%\Claude\claude_desktop_config.json

    Add the server configuration:

    {
      "mcpServers": {
        "launchnotes": {
          "command": "npx",
          "args": ["-y", "@launchnotes/mcp"],
          "env": {
            "LAUNCHNOTES_API_TOKEN": "your-token-here"
          }
        }
      }
    }

    Or if running from source:

    {
      "mcpServers": {
        "launchnotes": {
          "command": "node",
          "args": ["/path/to/mcp/dist/index.js"],
          "env": {
            "LAUNCHNOTES_API_TOKEN": "your-token-here"
          }
        }
      }
    }
  2. Restart Claude Desktop

  3. Verify the connection: Ask Claude: "List my LaunchNotes projects"

Troubleshooting

Server won't start

  • Ensure Node.js 18+ is installed: node --version

  • Verify your API token is set correctly

  • Check that the server is built: npm run build

Authentication errors

  • Confirm your API token is valid

  • Check that you're using a Management token (not Public) for write operations

  • Verify the token hasn't expired

Can't find my project

  • Use launchnotes_list_projects to see all accessible projects

  • Verify you have permission to access the project

  • Check that you're using the correct project ID (not the slug)

Contributing

This is a custom MCP server. To add new tools or features:

  1. Add new tool schemas in src/schemas/

  2. Implement tool logic in src/tools/

  3. Register tools in the appropriate file

  4. Update this README with documentation

License

MIT

Support

For LaunchNotes API questions, visit: https://help.launchnotes.com/

For MCP protocol questions, visit: https://modelcontextprotocol.io/

Available Tools

22 tools
launchnotes_archive_announcementArchive LaunchNotes AnnouncementA

Archive an announcement, removing it from the active list while preserving its content.

Args:

  • announcement_id (string): The ID of the announcement to archive

Returns: Confirmation with archived announcement details

Use Cases:

  • "Archive old announcement abc123"

  • "Remove announcement from public view"

  • "Archive outdated announcements"

Notes:

  • Archived announcements are no longer visible on the public page

  • Content and data are preserved

  • Can be unarchived later if needed

  • Different from deleting (which would be permanent)

Error Handling:

  • Returns error if announcement is already archived

  • Returns "Announcement not found" if ID doesn't exist

  • Returns "Authentication failed" if API token lacks permission

ParametersJSON Schema
NameRequiredDescriptionDefault
announcement_idYesThe ID of the announcement to archive

TDQS

A4.4/5.0
Behavior5/5

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

Beyond the annotations (which indicate non-readonly, non-destructive, non-idempotent), the description adds critical behavioral details: content and data are preserved, the announcement can be unarchived later, and errors occur if already archived or if the ID is invalid. This fully informs the agent about side effects and failure modes.

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 well-structured with clear sections (Args, Returns, Use Cases, Notes, Error Handling). The first sentence immediately conveys the core purpose, and every subsequent sentence adds value without redundancy. It is concise yet comprehensive.

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

Completeness4/5

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

Given the tool's simplicity (1 parameter, no output schema) and the presence of annotations, the description covers all necessary aspects: purpose, parameter, use cases, behavioral notes, and error handling. A minor improvement would be to include a more detailed return value example, but the current description is sufficient for selection and 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?

The input schema has 100% description coverage for the single parameter 'announcement_id', matching the description text. Therefore, the description adds no new semantic meaning beyond what is already in the schema, resulting in the baseline score of 3.

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 action ('Archive an announcement'), the resource ('announcement'), and the effect ('removing it from the active list while preserving its content'). It also distinguishes from deletion, a sibling action, by noting that archiving is reversible.

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

Usage Guidelines4/5

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

The description provides explicit use cases (e.g., 'Archive old announcement abc123') and notes that archiving differs from deletion. However, it does not explicitly contrast with other sibling tools like 'update_announcement' or 'publish_announcement', leaving some room for interpretation about when exactly to use this tool instead.

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

launchnotes_create_announcementCreate LaunchNotes AnnouncementA

Create a new draft announcement in a LaunchNotes project. The announcement will be created in draft state.

Args:

  • project_id (string): The ID of the project

  • headline (string): The main headline/title (required)

  • content_markdown (string, optional): Content in Markdown format

  • content_html (string, optional): Content in HTML format

  • content_jira (string, optional): Content in Jira Wiki Syntax

Note: Provide only ONE content format. If multiple are provided, the API will use contentMarkdown > contentHtml > contentJira in order of precedence.

Returns: Created announcement with ID, headline, state, and creation timestamp

Use Cases:

  • "Create a new announcement about the API update"

  • "Draft an announcement for the new feature launch"

  • "Create announcement with headline 'v2.0 Released'"

Error Handling:

  • Returns validation errors if required fields are missing

  • Returns "Project not found" if project ID doesn't exist

  • Returns "Authentication failed" if API token lacks permission

ParametersJSON Schema
NameRequiredDescriptionDefault
project_idYesThe ID of the LaunchNotes project
headlineYesThe main headline/title of the announcement
content_markdownNoThe full content/body of the announcement in Markdown format
content_htmlNoThe full content/body of the announcement in HTML format
content_jiraNoThe full content/body of the announcement in Jira Wiki Syntax

TDQS

A4.4/5.0
Behavior4/5

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

Discloses draft state creation, content format precedence, and error responses. Annotations already indicate non-destructive mutation, but description adds useful behavioral details.

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?

Well-structured with clear sections: purpose, args, note, returns, use cases, error handling. No extraneous information.

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

Completeness4/5

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

Though no output schema, description specifies return fields (ID, headline, state, timestamp). Missing pagination or performance notes, but adequate for this tool.

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

Parameters4/5

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

Schema covers all parameters (100% coverage). Description adds important constraint: provide only ONE content format with explicit precedence order, which is beyond schema.

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?

Clearly states 'Create a new draft announcement in a LaunchNotes project.' Specific verb+resource, and distinguishes from siblings like publish, archive, update, etc.

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

Usage Guidelines4/5

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

Provides use cases and error handling. Mentions content format precedence, but does not explicitly state when not to use this tool vs. alternatives like update_announcement.

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

launchnotes_create_work_itemCreate Roadmap Work ItemA

Create a new work item on the LaunchNotes roadmap.

Work items are features or initiatives displayed on your public roadmap. Each work item is added to a specific stage (column).

Args:

  • project_id (string): The ID of the LaunchNotes project

  • name (string): The name/title of the work item (required)

  • stage_id (string): The ID of the stage to add the work item to (required)

  • content_markdown (string, optional): Description/content in Markdown format

  • owner_id (string, optional): The ID of the user who owns this work item

Returns: Created work item with ID, name, stage ID, and creation timestamp

Use Cases:

  • "Create a work item for the new authentication feature"

  • "Add 'Mobile app redesign' to the roadmap in the Planning stage"

  • "Create a work item with detailed markdown description"

Error Handling:

  • Returns validation errors if required fields are missing

  • Returns "Project not found" if project ID doesn't exist

  • Returns "Stage not found" if stage ID is invalid

  • Returns "Authentication failed" if API token lacks permission (requires Management token)

ParametersJSON Schema
NameRequiredDescriptionDefault
project_idYesThe ID of the LaunchNotes project
nameYesThe name/title of the work item
stage_idYesThe ID of the stage to add the work item to
content_markdownNoDescription/content in Markdown format
owner_idNoThe ID of the user who owns this work item

TDQS

A4.5/5.0
Behavior5/5

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

Annotations indicate it's a write, non-destructive, non-idempotent operation with open world. The description adds significant behavioral context: creation semantics, required parameters, return structure, and detailed error handling including auth requirements (Management token). No contradictions.

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 well-structured with a clear intro, bulleted args, returns, use cases, and error handling. It is front-loaded with purpose and every sentence adds value without fluff.

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

Completeness5/5

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

For a creation tool with 5 parameters and no output schema, the description completely covers return values (ID, name, stage ID, timestamp) and error cases, making it self-sufficient for an agent to use 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 baseline is 3. The description repeats parameter names and types but adds no new semantic information beyond what the schema already provides, such as constraints or formats.

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 it creates a new work item on the LaunchNotes roadmap, explaining that work items are features/initiatives added to a specific stage. It distinguishes itself from sibling tools like list_work_items and move_work_item through its creation focus.

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

Usage Guidelines4/5

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

The description provides explicit use cases and error handling that indicate when to use the tool, but does not explicitly state when not to use it or direct to alternative tools for other operations.

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

launchnotes_get_announcementGet LaunchNotes AnnouncementA
Read-onlyIdempotent

Retrieve complete details for a specific announcement including content, categories, and metadata.

Args:

  • announcement_id (string): The ID of the announcement

  • response_format ('json' | 'markdown'): Output format (default: 'markdown')

Returns: Complete announcement details with all fields

Use Cases:

  • "Show me announcement details for ID abc123"

  • "Get the full content of announcement xyz"

  • "What are the categories for this announcement?"

Error Handling:

  • Returns "Announcement not found" if ID doesn't exist

  • Returns "Authentication failed" if API token is invalid

ParametersJSON Schema
NameRequiredDescriptionDefault
announcement_idYesThe ID of the announcement to retrieve
response_formatNoOutput format: 'json' for structured data, 'markdown' for human-readablemarkdown

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already indicate a safe, read-only, idempotent operation. The description adds value by specifying error handling (return messages for not found and auth failure) and stating it returns 'complete details with all fields'. No contradiction with annotations.

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

Conciseness4/5

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

The description is well-structured with sections for purpose, args, returns, use cases, and error handling. It is moderately concise, though some redundancy exists (e.g., 'complete details with all fields' in Returns).

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

Completeness4/5

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

For a simple retrieval tool with no output schema, the description covers input, purpose, and error responses. It mentions 'complete details with all fields' but could specify key fields (e.g., title, content). Annotations cover safety. Overall adequate but not exhaustive.

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% and both parameters have detailed descriptions. The description largely repeats schema info ('output format' and 'announcement_id'). Since baseline is 3 for high coverage, the added value is minimal.

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 verb 'Retrieve' and the resource 'announcement', specifying 'complete details including content, categories, and metadata'. This distinguishes it from sibling tools like 'launchnotes_list_announcements' (list) and 'launchnotes_get_top_announcements' (only top announcements).

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

Usage Guidelines4/5

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

The description provides explicit use cases and natural language examples, guiding when to invoke the tool. However, it does not explicitly state when not to use it or compare it to alternatives like 'launchnotes_list_announcements' or 'launchnotes_get_top_announcements'.

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

launchnotes_get_feedbackGet LaunchNotes Feedback ItemA
Read-onlyIdempotent

Retrieve complete details for a specific feedback item including customer info, reporter, and associations.

Args:

  • feedback_id (string): The ID of the feedback item (required)

  • response_format ('json' | 'markdown'): Output format (default: 'markdown')

Returns: Complete feedback details including:

  • Content and internal notes

  • Sentiment (reaction) and importance

  • Affected customer information

  • Reporter information

  • Associated announcement/idea/work item

  • Timestamps

Use Cases:

  • "Show me details for feedback #abc123"

  • "Get the full context of this feedback item"

  • "What announcement is this feedback associated with?"

Error Handling:

  • Returns "Feedback not found" if ID doesn't exist

  • Returns "Authentication failed" if API token is invalid

ParametersJSON Schema
NameRequiredDescriptionDefault
feedback_idYesThe ID of the feedback item to retrieve
response_formatNoOutput format: 'json' for structured data, 'markdown' for human-readablemarkdown

TDQS

A4.5/5.0
Behavior5/5

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

Annotations already declare readOnlyHint=true and idempotentHint=true. Description adds value by detailing return fields (content, notes, sentiment, customer info, associations, timestamps) and error messages ('Feedback not found', 'Authentication failed'), confirming safe read 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?

Concise and well-structured with clear sections (summary, Args, Returns, Use Cases, Error Handling). Each section adds value without redundancy. Front-loaded with purpose.

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

Completeness5/5

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

For a simple retrieval tool with two parameters, schema covers all, annotations are rich, and description covers purpose, parameters, return values, usage examples, and error handling. No output schema needed as return content is explained. Complete and self-contained.

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 coverage is 100% with both parameters described in JSON schema. Description's 'Args' section adds minor clarity but largely repeats schema information. Baseline of 3 is appropriate as description does not significantly augment parameter understanding beyond schema.

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?

Description explicitly states 'Retrieve complete details for a specific feedback item' with specific verb and resource. It distinguishes from sibling 'launchnotes_search_feedback' by focusing on single item retrieval. Provides details on what is included (customer info, reporter, associations).

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

Usage Guidelines4/5

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

Provides concrete use cases like 'Show me details for feedback #abc123' indicating when to use. Error handling hints at invalid ID. However, it lacks explicit when-not-to-use or direct comparison with alternative sibling tools.

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

launchnotes_get_projectGet LaunchNotes ProjectA
Read-onlyIdempotent

Retrieve complete details for a LaunchNotes project, including all customization settings, colors, custom code, and feature flags.

Args:

  • project_id (string): The ID of the project to retrieve

  • response_format ('json' | 'markdown'): Output format (default: 'markdown')

Returns: For JSON format: Complete project object with all fields For Markdown format: Formatted project details with sections for colors, custom code, and features

Use Cases:

  • "Show me my project's current custom CSS"

  • "What are the color values for project X?"

  • "Get all settings for my LaunchNotes project"

Error Handling:

  • Returns "Project not found" if the project ID doesn't exist

  • Returns "Authentication failed" if the API token is invalid

ParametersJSON Schema
NameRequiredDescriptionDefault
project_idYesThe ID of the LaunchNotes project to retrieve
response_formatNoOutput format: 'json' for structured data, 'markdown' for human-readablemarkdown

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already indicate this is a safe read operation (readOnlyHint=true, destructiveHint=false, idempotentHint=true). The description adds useful behavioral context beyond annotations by specifying the return formats (JSON and Markdown) and error messages, enhancing the agent's understanding of the tool's 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 well-structured with clear sections (Args, Returns, Use Cases, Error Handling). It is front-loaded with the main purpose and is concise, including only necessary information.

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

Completeness5/5

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

Despite having no output schema, the description comprehensively covers both return formats and error cases. The tool is simple, and the description fully explains what the agent can expect, making it complete for a retrieval operation.

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 coverage is 100%. The description repeats parameter info and adds default for response_format and example use cases, but does not add significant new meaning beyond what the schema provides. Baseline 3 is appropriate.

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 it retrieves complete details for a LaunchNotes project, including customization settings, colors, custom code, and feature flags. This distinguishes it from siblings like 'launchnotes_list_projects' which lists projects, and 'launchnotes_get_announcement' which retrieves a different resource.

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 provides helpful example use cases and error handling but does not explicitly state when to use this tool versus alternatives. For instance, it could mention that for listing all projects one should use 'launchnotes_list_projects'. No exclusion guidance is given.

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

launchnotes_get_top_announcementsGet Top Performing LaunchNotes AnnouncementsA
Read-onlyIdempotent

Get top-performing announcements ranked by various metrics.

Args:

  • project_id (string): The ID of the project (required)

  • metric (enum, default: 'engagement'): Ranking metric

    • 'engagement' - Total viewers + email opens + clicks (most comprehensive)

    • 'open_rate' - Email open rate (email performance)

    • 'click_rate' - Email click rate (engagement depth)

    • 'feedback_count' - Number of feedback items (customer response)

    • 'feedback_sentiment' - Average sentiment score (customer satisfaction)

  • limit (number, optional): Number of results (max 50, default: 10)

  • response_format ('json' | 'markdown'): Output format (default: 'markdown')

Returns: Ranked list of announcements with:

  • Announcement details (ID, headline, slug, publish date)

  • Primary metric value

  • All other available metrics (viewers, emails sent, opens, clicks, rates, feedback)

Note: Analytics are cumulative for all time, not filtered by date range.

Use Cases:

  • "Which announcements performed best overall?"

  • "Show me top 5 announcements by email open rate"

  • "What got the most feedback?"

  • "Which announcements had the best sentiment?"

Error Handling:

  • Returns "Project not found" if project ID doesn't exist

  • Returns "Authentication failed" if API token is invalid

  • Returns empty result if no published announcements

ParametersJSON Schema
NameRequiredDescriptionDefault
project_idYesThe ID of the LaunchNotes project
metricNoMetric to rank by: 'engagement' (total viewers+opens+clicks), 'open_rate', 'click_rate', 'feedback_count', 'feedback_sentiment'engagement
limitNoNumber of top announcements to return (max 50)
response_formatNoOutput format: 'json' for structured data, 'markdown' for human-readablemarkdown

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already indicate read-only, non-destructive, idempotent behavior. The description adds details on cumulative analytics, error messages, and return structure, which complement the annotations well.

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

Conciseness4/5

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

The description is well-structured with sections, front-loaded purpose, and no wasted words. It repeats some parameter details from schema, but the overall clarity justifies moderate length.

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

Completeness5/5

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

For a read-only list tool with 4 parameters and no output schema, the description thoroughly covers error handling, return content, metrics, and usage examples, making it fully informative.

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

Parameters4/5

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

Schema coverage is 100%, so baseline is 3. The description provides additional context for metric enum values (e.g., 'most comprehensive') and clarifies response format differences, adding value beyond the schema.

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 it retrieves top-performing announcements ranked by various metrics. It distinguishes from siblings like list_announcements by focusing on ranking, and includes specific use cases.

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

Usage Guidelines4/5

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

Use cases are provided, and error handling guides when the tool might fail. However, it does not explicitly compare to similar tools like list_announcements, which would clarify when to choose this over siblings.

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

launchnotes_list_announcementsList LaunchNotes AnnouncementsA
Read-onlyIdempotent

List all announcements in a LaunchNotes project with optional filtering and ordering.

Args:

  • project_id (string): The ID of the project

  • state ('draft' | 'scheduled' | 'published' | 'archived', optional): Filter by state

  • limit (number, optional): Number to return (max 100, default: 50)

  • order_by_field ('publishedAt' | 'createdAt' | 'updatedAt', optional): Field to sort by

  • order_by_direction ('ASC' | 'DESC', optional): Sort direction (ascending or descending)

  • response_format ('json' | 'markdown'): Output format (default: 'markdown')

Returns: List of announcements with id, headline, state, dates, and slug

Use Cases:

  • "List all announcements in my LaunchNotes project"

  • "Show me all published announcements ordered by published date"

  • "List draft announcements"

  • "Show scheduled announcements sorted by creation date descending"

Note: To use ordering, both order_by_field and order_by_direction must be specified. Default ordering (when not specified) is by updatedAt descending.

Error Handling:

  • Returns "Project not found" if project ID doesn't exist

  • Returns "Authentication failed" if API token is invalid

ParametersJSON Schema
NameRequiredDescriptionDefault
project_idYesThe ID of the LaunchNotes project
stateNoFilter by announcement state
limitNoNumber of announcements to return (max 100)
order_by_fieldNoField to sort by
order_by_directionNoSort direction: 'ASC' for ascending, 'DESC' for descending
response_formatNoOutput format: 'json' for structured data, 'markdown' for human-readablemarkdown

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already indicate readOnlyHint=true and idempotentHint=true, so the description correctly reinforces a safe read operation. It adds value by documenting default ordering (updatedAt descending), output format options (markdown default), and error handling (project not found, authentication failed). No contradictions.

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 well-structured with clear sections (Args, Returns, Use Cases, Note, Error Handling). It is concise, with every sentence adding value—no redundancy, no fluff. Ideal length for a parameter-heavy tool.

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

Completeness5/5

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

Given 6 parameters, no output schema, and no nested objects, the description covers all essential aspects: input parameters (with constraints and defaults), output structure (id, headline, state, dates, slug), ordering behavior, error cases, and use cases. It leaves no gaps for proper 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?

Input schema has 100% coverage with detailed descriptions for each parameter. The description restates some schema info (e.g., 'limit' max 100, default 50) and adds a note on ordering dependency. However, it does not add substantial new meaning beyond the schema, so a baseline 3 is appropriate.

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 'List all announcements in a LaunchNotes project with optional filtering and ordering.' The verb 'list' and resource 'announcements' are specific, and the scope (project-level, filtered) distinguishes it from siblings like 'get_announcement' (single item) or 'list_projects' (different resource).

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

Usage Guidelines4/5

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

The description provides explicit use cases (e.g., 'List all published announcements ordered by published date') and a critical note that both order_by_field and order_by_direction must be specified together. It lacks explicit guidance on when not to use this tool versus alternatives like get_announcement, but the use cases and sibling list imply its role.

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

launchnotes_list_projectsList LaunchNotes ProjectsA
Read-onlyIdempotent

List all LaunchNotes projects accessible with the current API token.

Args:

  • response_format ('json' | 'markdown'): Output format (default: 'markdown')

Returns: List of projects with id, name, slug, and public URL

Use Cases:

  • "Show me all my LaunchNotes projects"

  • "List projects in my organization"

  • "What projects do I have access to?"

Error Handling:

  • Returns "Authentication failed" if the API token is invalid

ParametersJSON Schema
NameRequiredDescriptionDefault
response_formatNoOutput format: 'json' for structured data, 'markdown' for human-readablemarkdown

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already indicate read-only, non-destructive, idempotent behavior. The description adds that it returns a list with id, name, slug, and public URL, and handles authentication errors. This adds value beyond the annotations.

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 concise with clearly separated sections for args, returns, use cases, and error handling. Every sentence adds value, and it is front-loaded with the main purpose.

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

Completeness5/5

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

Despite lacking an output schema, the description explains the return structure (list with id, name, slug, public URL) and covers error handling. It is complete for a simple list tool with one optional parameter.

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 already provides a description for the single parameter 'response_format' with enum and default. The description restates the same information. Since schema coverage is 100%, the baseline is 3; the description does not add significant new meaning.

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 'List all LaunchNotes projects accessible with the current API token.' It specifies the verb (list), resource (projects), and scope (accessible with token). It distinguishes from siblings like 'launchnotes_get_project' which retrieves a single project.

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

Usage Guidelines4/5

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

The description provides concrete use cases such as 'Show me all my LaunchNotes projects' and 'List projects in my organization,' which guide when to use the tool. It does not explicitly mention when not to use or provide alternatives, but the use cases are sufficient.

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

launchnotes_list_stagesList Roadmap StagesA
Read-onlyIdempotent

List the roadmap stages for a LaunchNotes project, in their on-roadmap order.

Stages are the columns of the public roadmap (e.g. "In planning", "In development", "Complete"). Use this to discover the target_stage_id parameter accepted by launchnotes_move_work_item.

Args:

  • project_id (string): The ID of the LaunchNotes project

  • response_format ('json' | 'markdown'): Output format (default: 'markdown')

Returns: List of stages with id, name, and position (0-indexed from left to right on the roadmap). Up to 100 stages.

Use Cases:

  • "What stages does my roadmap have?"

  • "Find the 'Shipped' stage ID so I can move a work item there"

Error Handling:

  • Returns "Project not found" if the project ID doesn't exist

  • Returns "Authentication failed" if the API token is invalid

ParametersJSON Schema
NameRequiredDescriptionDefault
project_idYesThe ID of the LaunchNotes project
response_formatNoOutput format: 'json' for structured data, 'markdown' for human-readablemarkdown

TDQS

A4.5/5.0
Behavior5/5

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

Annotations provide readOnlyHint, idempotentHint, etc. The description adds substantial behavioral context: returns a list with id, name, position; up to 100 stages; error cases (project not found, authentication failed). No contradictions.

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?

Well-structured: one-line purpose, then bullet lists for args, returns, use cases, error handling. Every sentence adds value. No fluff.

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

Completeness5/5

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

No output schema, so description must cover return values. It does: list of stages with id, name, position, max 100 stages, plus error cases. Comprehensive for a list tool.

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 coverage is 100% with both parameters described. The description adds minimal extra value (e.g., default for response_format is already in schema). The use case note is helpful but not essential.

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 explicitly states 'List the roadmap stages for a LaunchNotes project, in their on-roadmap order.' This is a specific verb+resource, and the tool is clearly differentiated from siblings like list_work_items or list_announcements.

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

Usage Guidelines4/5

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

The description provides clear guidance: 'Use this to discover the target_stage_id parameter accepted by launchnotes_move_work_item.' It also lists explicit use cases such as finding the 'Shipped' stage ID. While it doesn't mention when not to use it, the context is strong enough.

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

launchnotes_list_templatesList LaunchNotes TemplatesA
Read-onlyIdempotent

List announcement templates for a LaunchNotes project, sorted alphabetically by name.

Templates are reusable scaffolds for announcements — they carry the structure and voice that new announcements inherit. Use this to discover the template_id parameter accepted by launchnotes_create_announcement.

Args:

  • project_id (string): The ID of the LaunchNotes project

  • limit (number, optional): Number of templates to return (max 100, default 50)

  • response_format ('json' | 'markdown'): Output format (default: 'markdown')

Returns: List of templates with id, name, headline, description — sorted A→Z by name. Archived templates are excluded.

Use Cases:

  • "What templates are available on my project?"

  • "Find the Feature Launch template, then create an announcement from it"

  • "List all the announcement templates"

Error Handling:

  • Returns "Project not found" if the project ID doesn't exist

  • Returns "Authentication failed" if the API token is invalid

ParametersJSON Schema
NameRequiredDescriptionDefault
project_idYesThe ID of the LaunchNotes project
limitNoNumber of templates to return (max 100, default 50)
response_formatNoOutput format: 'json' for structured data, 'markdown' for human-readablemarkdown

TDQS

A4.7/5.0
Behavior5/5

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

Annotations already indicate readOnly, idempotent, and non-destructive behavior. The description adds beyond: archived templates are excluded, return format details, sorting order, and error messages ('Project not found', 'Authentication failed'). No contradiction with annotations.

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?

Well-structured with clear sections (description, args, returns, use cases, error handling). Every sentence is meaningful and front-loaded with the primary purpose. No wasted words.

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

Completeness5/5

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

Despite no output schema, the description fully explains the return value (id, name, headline, description) and error cases. It covers sorting, exclusion of archived templates, and parameter defaults. Complete for a list tool.

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

Parameters4/5

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

Schema coverage is 100%, so baseline is 3. The description adds context by restating parameters with their purpose, including the effect of 'limit' and the allowed values for 'response_format'. This adds value beyond the schema.

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 verb 'List' and resource 'announcement templates' for a LaunchNotes project, with explicit sorting and purpose. It distinguishes from siblings like 'launchnotes_list_announcements' by focusing solely on templates.

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

Usage Guidelines4/5

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

Provides explicit use cases and explains how the tool feeds into 'launchnotes_create_announcement'. However, it does not explicitly state when not to use it or compare with alternatives, though the context makes the purpose clear.

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

launchnotes_list_work_itemsList Roadmap Work ItemsA
Read-onlyIdempotent

List the non-archived work items on a LaunchNotes project's roadmap, optionally filtered to a single stage.

Work items are the cards on the public roadmap. Each one lives in a single stage. Use this to discover the work_item_id parameter accepted by launchnotes_move_work_item.

Args:

  • project_id (string): The ID of the LaunchNotes project

  • stage_id (string, optional): If provided, only work items in this stage are returned

  • response_format ('json' | 'markdown'): Output format (default: 'markdown')

Returns: List of work items with id, name, stage_id, and position within their stage. Up to 100 items. Archived work items are excluded.

Use Cases:

  • "What's on the roadmap?"

  • "Show me everything currently in development"

  • "Find the work item named 'Auth feature' so I can move it"

Error Handling:

  • Returns "Project not found" if the project ID doesn't exist

  • Returns "Authentication failed" if the API token is invalid

ParametersJSON Schema
NameRequiredDescriptionDefault
project_idYesThe ID of the LaunchNotes project
stage_idNoOptional stage ID to filter by
response_formatNoOutput format: 'json' for structured data, 'markdown' for human-readablemarkdown

TDQS

A4.5/5.0
Behavior5/5

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

Annotations already indicate readOnlyHint, destructiveHint, idempotentHint, and openWorldHint. The description adds value by specifying return fields (id, name, stage_id, position), a 100-item limit, exclusion of archived items, and error handling messages. No contradictions with annotations.

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 concise yet comprehensive: a single-sentence purpose, followed by structured sections for arguments, returns, use cases, and error handling. It is front-loaded with the core purpose, and every sentence adds value without redundancy.

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

Completeness5/5

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

For a simple list tool with 3 parameters and read-only behavior, the description covers purpose, usage context, return format, limits, and error scenarios. With strong annotations, it provides sufficient information for an agent to select and invoke the tool 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 coverage is 100%, with descriptions for each parameter in the JSON schema. The description's 'Args' section largely restates the schema, adding no new parameter semantics beyond the schema. It does provide the default for response_format, which is already in schema. Baseline 3 is appropriate as description adds minimal extra parameter meaning.

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 'List the non-archived work items on a LaunchNotes project's roadmap, optionally filtered to a single stage.' This uses a specific verb and resource, and distinguishes from sibling tools like 'launchnotes_move_work_item' by highlighting its role in discovering work_item_id.

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

Usage Guidelines4/5

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

The description explicitly explains that the tool is used to discover work_item_ids for 'launchnotes_move_work_item' and notes that archived items are excluded. It provides clear context for use, though it does not explicitly state when not to use it.

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

launchnotes_move_work_itemMove a Work Item Between StagesA

Move a work item between roadmap stages. Does NOT send any subscriber notification — that's a separate operation (createWorkItemMovedUpdate) intentionally not exposed in this slim version.

The work item is appended to the bottom of the target stage. Use launchnotes_list_work_items to discover work_item_id and launchnotes_list_stages to discover target_stage_id.

Args:

  • work_item_id (string): The ID of the work item to move

  • target_stage_id (string): The ID of the stage to move it into

Returns: Confirmation including the work item's name and the source/target stage names.

Use Cases:

  • "Move the auth feature to Shipped"

  • "Drop the API redesign back into Planning"

Error Handling:

  • Returns "Work item not found" if the work_item_id is invalid

  • Returns "Stage not found" if the target_stage_id is invalid

  • Returns "Authentication failed" if the API token is invalid (this mutation requires a Management token)

ParametersJSON Schema
NameRequiredDescriptionDefault
work_item_idYesThe ID of the work item to move
target_stage_idYesThe ID of the stage to move the work item into

TDQS

A4.9/5.0
Behavior5/5

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

Beyond annotations indicating mutation, the description discloses that no subscriber notification is sent, the item is appended to the bottom of the target stage, and details error handling for invalid IDs or authentication. No contradiction with annotations.

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 well-structured with clear sections: purpose, what it doesn't do, arguments, return, use cases, and error handling. It is front-loaded and every sentence adds value.

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

Completeness5/5

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

Given only two simple parameters and no output schema, the description fully explains the return value (confirmation with names) and error handling. It is complete for an agent to invoke correctly.

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

Parameters4/5

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

Schema coverage is 100% with descriptions for both parameters. The description repeats those but adds valuable context by telling how to obtain the IDs via list_work_items and list_stages, and includes use cases, adding meaning beyond the schema.

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 'Move a work item between roadmap stages,' using a specific verb and resource. It distinguishes this tool from siblings like create_work_item or list_work_items by focusing on moving an item between stages.

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

Usage Guidelines5/5

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

The description provides explicit guidance: use list_work_items and list_stages to discover IDs, gives example use cases like 'Move the auth feature to Shipped,' and clarifies that it does not send notifications (a separate operation).

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

launchnotes_publish_announcementPublish LaunchNotes AnnouncementA

Publish an announcement immediately, making it live and visible to subscribers.

Args:

  • announcement_id (string): The ID of the announcement to publish

Returns: Confirmation with published announcement details and publish timestamp

Use Cases:

  • "Publish announcement abc123"

  • "Make this announcement live now"

  • "Publish my draft announcement"

Notes:

  • Announcement must be in draft or scheduled state

  • Subscribers will be notified according to project settings

  • Use schedule_announcement to publish at a future time

Error Handling:

  • Returns error if announcement is already published

  • Returns "Announcement not found" if ID doesn't exist

  • Returns "Authentication failed" if API token lacks permission

ParametersJSON Schema
NameRequiredDescriptionDefault
announcement_idYesThe ID of the announcement to publish

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already indicate mutating (readOnlyHint=false) and non-destructive. Description adds that subscribers are notified, errors for already published or not found, and authentication requirements.

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

Conciseness4/5

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

Structured into clear sections (Args, Returns, Use Cases, Notes, Error Handling). Slightly verbose but all sentences add value. Front-loaded with core purpose.

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

Completeness5/5

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

Covers purpose, usage, preconditions, errors, and return value. No output schema, but description explains confirmation. Complete for a simple publish action.

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?

Only one parameter 'announcement_id' with full schema coverage (100%). Description repeats basic info but error handling provides context beyond schema. Baseline of 3 applies as schema does the heavy lifting.

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?

Clearly states 'Publish an announcement immediately, making it live and visible to subscribers.' Uses specific verb 'publish' and resource 'announcement'. Distinguishes from sibling tools like 'schedule_announcement' via notes.

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

Usage Guidelines5/5

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

Provides explicit use cases and preconditions (announcement must be draft/scheduled). Includes error handling for invalid states. Names alternative tool 'schedule_announcement' for future publishing.

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

launchnotes_schedule_announcementSchedule LaunchNotes AnnouncementA

Schedule an announcement to be published automatically at a specific future date and time.

Args:

  • announcement_id (string): The ID of the announcement to schedule

  • scheduled_at (string): When to publish (ISO 8601 format, must be in future)

  • scheduled_at_timezone (string, optional): Timezone (e.g., 'America/New_York', 'UTC'). Defaults to UTC.

Returns: Confirmation with scheduled announcement details and scheduled publish time

Use Cases:

  • "Schedule announcement for tomorrow at 9am"

  • "Set announcement to publish on December 25th at noon EST"

  • "Schedule for next Monday at 3pm in New York timezone"

Examples of scheduled_at format:

  • "2025-12-25T12:00:00Z" (UTC time)

  • "2025-12-25T09:00:00-05:00" (EST - with timezone offset)

  • "2025-12-25T09:00:00" with scheduled_at_timezone: "America/New_York"

Notes:

  • Announcement will automatically publish at the scheduled time

  • Subscribers will be notified when it publishes

  • You can reschedule by calling this again with a new time

Error Handling:

  • Returns error if scheduled_at is in the past

  • Returns error if date format is invalid

  • Returns "Announcement not found" if ID doesn't exist

ParametersJSON Schema
NameRequiredDescriptionDefault
announcement_idYesThe ID of the announcement to schedule
scheduled_atYesWhen to publish the announcement (ISO 8601 format, must be in the future)
scheduled_at_timezoneNoTimezone for the scheduled time (e.g., 'America/New_York', 'UTC'). Defaults to UTC if not provided.

TDQS

A4.6/5.0
Behavior5/5

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

The annotations are minimal (no hints for destructive, readOnly, idempotent). The description adds significant behavioral context: announcement auto-publishes, subscribers are notified, rescheduling is possible by calling again, and specific error conditions (past date, invalid format, not found). This greatly enhances transparency beyond annotations.

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

Conciseness4/5

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

The description is well-structured into clear sections (Args, Returns, Use Cases, Examples, Notes, Error Handling). It is front-loaded with the main purpose. However, it could be slightly more concise (e.g., the Notes and Error Handling are partly redundant with the schema). Still, it is effective and easy to read.

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

Completeness5/5

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

Given the tool's complexity (3 parameters, no output schema), the description covers all essential aspects: what it does, parameter details with examples, return confirmation, use cases, and error handling. It provides enough context for an AI agent to use the tool correctly.

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

Parameters4/5

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

Schema coverage is 100%, so baseline is 3. The description adds value by providing ISO 8601 format examples, explaining the default timezone, and giving practical usage examples. This extra context justifies a score above baseline.

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 action ('Schedule an announcement to be published automatically at a specific future date and time'), uses a specific verb ('schedule') and resource ('announcement'), and distinguishes from sibling tools like 'publish_announcement' (immediate) and 'update_announcement' (edit). The inclusion of use cases further clarifies its purpose.

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

Usage Guidelines4/5

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

The description provides clear context for when to use the tool (scheduling future announcements) and includes examples of scheduled_at format. It implicitly differentiates from publishing immediately, but does not explicitly mention when not to use it or name alternatives. The sibling tool list provides additional differentiation.

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

launchnotes_search_feedbackSearch LaunchNotes FeedbackA
Read-onlyIdempotent

Search and filter customer feedback in a LaunchNotes project.

Args:

  • project_id (string): The ID of the project (required)

  • query (string, optional): Search term to find in feedback content

  • reaction ('happy' | 'meh' | 'sad', optional): Filter by customer sentiment

  • importance ('low' | 'medium' | 'high', optional): Filter by importance level

  • organized_state (string, optional): Filter by state ('organized', 'unorganized', 'announcement', 'idea', 'roadmap')

  • starred (boolean, optional): Filter by starred status

  • archived (boolean, optional): Filter by archived status

  • limit (number, optional): Number to return (max 100, default: 20)

  • response_format ('json' | 'markdown'): Output format (default: 'markdown')

Returns: List of feedback items with content, sentiment, importance, customer info, and timestamps

Use Cases:

  • "What are customers saying about Digests?"

  • "Show me all unhappy feedback"

  • "Find high importance feedback that's unorganized"

  • "Search feedback containing 'API integration'"

  • "Show me starred feedback"

Error Handling:

  • Returns "Project not found" if project ID doesn't exist

  • Returns "Authentication failed" if API token is invalid

ParametersJSON Schema
NameRequiredDescriptionDefault
project_idYesThe ID of the LaunchNotes project
queryNoSearch term to find in feedback content
reactionNoFilter by customer reaction/sentiment
importanceNoFilter by importance level
organized_stateNoFilter by organized state: 'organized', 'unorganized', 'announcement', 'idea', 'roadmap'
starredNoFilter by starred status
archivedNoFilter by archived status
limitNoNumber of feedback items to return (max 100)
response_formatNoOutput format: 'json' for structured data, 'markdown' for human-readablemarkdown

TDQS

A4.3/5.0
Behavior4/5

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

The description adds error handling details ('Project not found', 'Authentication failed') and return structure, which supplement the annotations (readOnlyHint, destructiveHint). The annotations already indicate safe read-only behavior, so the description provides meaningful but not essential extra context.

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 well-structured into Args, Returns, Use Cases, and Error Handling sections. It is front-loaded with the core purpose, and every sentence provides clear, non-redundant information. There is no wasted text.

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

Completeness5/5

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

Given the tool has 9 parameters, no output schema, and moderate complexity, the description covers all essential aspects: purpose, all parameters, return format, use cases, and error handling. It provides enough context for an agent to correctly select and invoke the tool.

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 coverage is 100%, so the schema already documents all parameters. The description's Args section mostly mirrors the schema, though it adds default values (limit default 20) and output format options. This adds marginal clarity beyond the structured schema, meeting the baseline without exceeding it.

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 explicitly states 'Search and filter customer feedback in a LaunchNotes project' with a clear verb and resource. The use cases (e.g., 'What are customers saying about Digests?') further solidify the purpose, distinguishing it from sibling tools like `launchnotes_get_feedback` which retrieves a single item.

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

Usage Guidelines4/5

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

The description includes a 'Use Cases' section with practical examples (e.g., 'Show me all unhappy feedback'), indicating appropriate contexts. However, it does not explicitly state when not to use this tool or mention alternative tools, leaving some ambiguity for agents unfamiliar with the sibling set.

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

launchnotes_update_announcementUpdate LaunchNotes AnnouncementA

Update an existing announcement's content, metadata, or categorization.

Args:

  • announcement_id (string): The ID of the announcement to update

  • headline (string, optional): Update the headline/title

  • content (string, optional): Update the content/body (must be in LaunchNotes JSON format, not Markdown)

  • title (string, optional): Update SEO title

  • description (string, optional): Update meta description

  • excerpt (string, optional): Update excerpt/summary

  • category_ids (array, optional): Replace category assignments

  • change_type_ids (array, optional): Replace change type (label) assignments

Note: The 'content' field requires LaunchNotes' internal JSON format. For creating announcements with Markdown, use the create_announcement tool with content_markdown.

At least one field must be provided. Fields not specified will remain unchanged.

Returns: Confirmation with updated announcement details

Use Cases:

  • "Update the headline of announcement abc123"

  • "Update the excerpt"

  • "Add categories to announcement xyz"

Error Handling:

  • Returns validation error if no fields provided

  • Returns "Announcement not found" if ID doesn't exist

  • Returns "Authentication failed" if API token lacks permission

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.6/5.0
Behavior4/5

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

Annotations already indicate non-readonly, non-destructive, non-idempotent. Description adds important behaviors: requires at least one field, unchanged fields remain, and error handling details. No contradictions.

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?

Well-organized into Args, Note, Returns, Use Cases, Error Handling. Each sentence adds value; no redundancy or filler.

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

Completeness5/5

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

Covers all necessary aspects for an update tool: parameter details, usage notes, return value, error scenarios. No output schema needed given the description of return.

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

Parameters5/5

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

Input schema has no properties, so description carries full burden. It documents all parameters with types and optionality, and explains the special 'content' format requirement.

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 'Update an existing announcement's content, metadata, or categorization.' It lists specific updatable fields and distinguishes from create and archive tools.

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

Usage Guidelines4/5

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

Provides clear context for when to use, including note about content format and reference to create_announcement for Markdown. Lists use cases but lacks explicit 'when not to use' statement.

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

launchnotes_update_project_colorsUpdate LaunchNotes Project ColorsA

Update color palette and theme for a LaunchNotes project. All colors must be in hex format (e.g., #FF5733).

Args:

  • project_id (string): The ID of the project to update

  • primary_color (string, optional): Primary brand color (hex)

  • secondary_color (string, optional): Secondary brand color (hex)

  • primary_text_color (string, optional): Primary text color (hex)

  • secondary_text_color (string, optional): Secondary text color (hex)

  • gray_color (string, optional): Gray accent color (hex)

  • light_gray_color (string, optional): Light gray color (hex)

  • off_white_color (string, optional): Off-white color (hex)

  • white_color (string, optional): White color (hex)

  • supporting_palette (string, optional): Supporting palette configuration

  • color_theme (string, optional): Overall color theme identifier

At least one color field must be provided. Fields not provided will remain unchanged.

Returns: Confirmation message with updated color fields

Use Cases:

  • "Change the primary color to #FF5733"

  • "Update all brand colors for my project"

  • "Set text colors to improve readability"

  • "Update the color theme to dark mode"

Error Handling:

  • Returns validation error if hex colors are invalid

  • Returns "Project not found" if the project ID doesn't exist

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.1/5.0
Behavior4/5

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

Annotations indicate mutable, non-destructive, non-idempotent, and partial updates. The description adds context by stating unprovided fields remain unchanged and details error handling for invalid hex and missing project ID.

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

Conciseness4/5

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

The description is structured into sections (general description, Args, returns, use cases, error handling) and is front-loaded with the purpose. Could be slightly more concise but well-organized.

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

Completeness4/5

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

Given many optional parameters and no output schema, the description covers required inputs, behavior (unchanged fields), error cases, and includes examples. Reasonably complete for a configuration update tool.

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

Parameters4/5

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

The input schema is empty, so the description carries full burden. It lists all 11 parameters with types, optionality, and format requirements (hex), adding significant value beyond the schema.

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 'Update color palette and theme for a LaunchNotes project' with specific verb and resource. Use cases reinforce the purpose and differentiate from siblings like update_project_content.

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 provides some usage context through use cases and notes that at least one color field must be provided, but it does not explicitly state when to use this tool versus alternatives or when not to use it.

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

launchnotes_update_project_contentUpdate LaunchNotes Project ContentA

Update project title, description, headings, and slug for a LaunchNotes project.

Args:

  • project_id (string): The ID of the project to update

  • name (string, optional): Internal project name

  • title (string, optional): Public-facing project title

  • description (string, optional): Project description

  • heading (string, optional): Main heading on the project page

  • subheading (string, optional): Subheading below the main heading

  • slug (string, optional): URL-friendly identifier (lowercase, hyphens only)

At least one content field must be provided. Fields not provided will remain unchanged.

Returns: Confirmation message with updated content fields

Use Cases:

  • "Update project title to 'Product Updates'"

  • "Change the heading and subheading"

  • "Update the project slug to 'updates'"

  • "Set a new description"

Error Handling:

  • Returns validation error if slug format is invalid

  • Returns "Project not found" if the project ID doesn't exist

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.4/5.0
Behavior4/5

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

Annotations indicate a non-read, non-destructive, non-idempotent operation. The description confirms mutation ('update') and adds error handling details (slug validation, project not found). No contradiction with annotations. It lacks details on side effects or permissions, but the error info helps.

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

Conciseness4/5

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

The description is well-structured with Args, Use Cases, and Error Handling sections. It is slightly long but every section adds value. Could be more concise, but remains efficient.

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

Completeness4/5

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

Despite no output schema, the description covers return value (confirmation with updated fields) and error cases. It explains optionality and prerequisites (at least one field). For a tool with multiple parameters, it is sufficiently complete.

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

Parameters5/5

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

The input schema is empty, so the description carries full weight. It defines each parameter (project_id, name, title, description, heading, subheading, slug) with types and optionality, adding meaning beyond schema. This fully compensates for the lack of schema properties.

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 explicitly states 'Update project title, description, headings, and slug for a LaunchNotes project.' It uses a specific verb (update) and resource (project content), clearly distinguishing it from sibling tools like update_project_colors or update_project_features.

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

Usage Guidelines4/5

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

The description provides use cases ('Update project title to...', 'Change the heading and subheading') and notes that at least one content field is required. It does not explicitly exclude scenarios or mention alternatives, but the context is sufficient for an agent to infer when to use this tool.

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

launchnotes_update_project_custom_codeUpdate LaunchNotes Project Custom CodeA

Update custom CSS, HTML head, header, footer, or index hero for a LaunchNotes project.

Args:

  • project_id (string): The ID of the project to update

  • custom_css (string, optional): Custom CSS code

  • custom_head (string, optional): Custom HTML for section

  • custom_header (string, optional): Custom HTML for page header

  • custom_footer (string, optional): Custom HTML for page footer

  • custom_index_hero (string, optional): Custom HTML for index hero section

At least one custom code field must be provided. Fields not provided will remain unchanged.

Returns: Confirmation message with project ID and updated timestamp

Use Cases:

  • "Add custom CSS to hide the sidebar"

  • "Update the custom header HTML"

  • "Set custom analytics code in the head"

  • "Add a custom footer with social links"

Error Handling:

  • Returns validation errors if no fields are provided

  • Returns "Project not found" if the project ID doesn't exist

  • Returns "Authentication failed" if the API token lacks permission

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.3/5.0
Behavior4/5

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

The description adds behavioral context beyond annotations, such as 'Fields not provided will remain unchanged', return of a confirmation with timestamp, and error handling scenarios. Annotations provide readOnlyHint=false and destructiveHint=false, which the description supports without contradiction.

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

Conciseness4/5

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

The description is well-structured with a clear function statement, bulleted args, usage rule, return info, use cases, and error handling. It is front-loaded with purpose, though the use cases list adds some verbosity.

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

Completeness4/5

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

Given the complexity of updating multiple optional fields, the description covers purpose, parameters, usage rules, return information, and error handling. It lacks an output schema but provides sufficient return details for simple use.

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

Parameters4/5

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

Despite the input schema being empty, the description lists all parameters with types and optionality, adding meaning beyond the schema. It includes examples and the requirement that at least one field must be provided, which compensates for the schema's lack of parameter definitions.

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 explicitly states the verb 'Update' and resource 'custom CSS, HTML head, header, footer, or index hero for a LaunchNotes project', clearly distinguishing it from sibling tools like 'update_project_colors' or 'update_project_content'.

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

Usage Guidelines4/5

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

The description provides clear context on when to use this tool (for custom code fields) and includes use cases and rules like 'at least one field must be provided'. However, it does not explicitly state when not to use it relative to alternatives.

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

launchnotes_update_project_featuresUpdate LaunchNotes Project FeaturesA

Enable or disable features for a LaunchNotes project (feedback, roadmap, ideas, RSS, voting, SEO indexing).

Args:

  • project_id (string): The ID of the project to update

  • feedback_enabled (boolean, optional): Enable/disable feedback collection

  • roadmap_enabled (boolean, optional): Enable/disable roadmap feature

  • ideas_enabled (boolean, optional): Enable/disable ideas/feature requests

  • rss_feed_enabled (boolean, optional): Enable/disable RSS feed

  • voting_enabled (boolean, optional): Enable/disable voting on ideas

  • noindex (boolean, optional): Prevent search engine indexing (true = disabled SEO)

At least one feature toggle must be provided. Features not specified will remain unchanged.

Returns: Confirmation message with updated feature toggles

Use Cases:

  • "Enable feedback collection for my project"

  • "Turn on the roadmap feature"

  • "Disable RSS feed"

  • "Enable voting on ideas"

Error Handling:

  • Returns "Project not found" if the project ID doesn't exist

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.1/5.0
Behavior4/5

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

Annotations indicate readOnlyHint=false, so the description correctly notes mutation. It adds that unspecified features remain unchanged and that at least one toggle is required, which are important behavioral constraints not captured by annotations. No contradictions.

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

Conciseness4/5

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

The description is well-structured with sections for Args, Returns, Use Cases, and Error Handling. It is front-loaded with the main purpose. Slightly verbose but every section adds value.

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

Completeness4/5

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

Given the empty schema and no output schema, the description provides ample context: parameter docs, error handling, use cases, and return type (confirmation message). It lacks details on the response structure, but overall it is sufficiently complete for an agent.

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 description provides detailed parameter names, types, and optionality for 6 parameters, which adds value beyond the empty input schema (0 properties). However, the schema contradiction (schema has no params while description lists many) lowers the score. Schema description coverage is technically 100% but misleading.

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 tool's purpose: 'Enable or disable features for a LaunchNotes project' and lists specific toggles (feedback, roadmap, etc.). This verb+resource+scope formulation effectively distinguishes it from sibling tools like update_project_colors or update_project_content.

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

Usage Guidelines4/5

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

The description provides explicit use cases (e.g., 'Enable feedback collection for my project') and notes that at least one feature toggle must be provided. It does not explicitly state when not to use this tool versus alternatives, but the context of sibling tools makes the purpose clear.

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

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 6 tool updatesv0.3.1
    • Addedlaunchnotes_create_external_content_link
    • Addedlaunchnotes_create_work_item
    • Addedlaunchnotes_list_stages
    • Addedlaunchnotes_list_templates
    • Addedlaunchnotes_list_work_items
    • Addedlaunchnotes_move_work_item
  2. 6 tool updatesv1.0.0
    • Changedlaunchnotes_create_announcement9 fields changed
      • removedInput schema / properties / category_ids
        Removed value: -{
        -  "description": "Array of category IDs to assign",
        -  "items": {
        -    "type": "string"
        -  },
        -  "type": "array"
        -}
      • removedInput schema / properties / change_type_ids
        Removed value: -{
        -  "description": "Array of change type (label) IDs to assign",
        -  "items": {
        -    "type": "string"
        -  },
        -  "type": "array"
        -}
      • removedInput schema / properties / content
        Removed value: -{
        -  "description": "The full content/body of the announcement (supports Markdown)",
        -  "type": "string"
        -}
      • addedInput schema / properties / content_html
        Added value: +{
        +  "description": "The full content/body of the announcement in HTML format",
        +  "type": "string"
        +}
      • addedInput schema / properties / content_jira
        Added value: +{
        +  "description": "The full content/body of the announcement in Jira Wiki Syntax",
        +  "type": "string"
        +}
      • addedInput schema / properties / content_markdown
        Added value: +{
        +  "description": "The full content/body of the announcement in Markdown format",
        +  "type": "string"
        +}
      • removedInput schema / properties / description
        Removed value: -{
        -  "description": "Optional meta description for SEO",
        -  "type": "string"
        -}
      • removedInput schema / properties / excerpt
        Removed value: -{
        -  "description": "Short excerpt or summary",
        -  "type": "string"
        -}
      • removedInput schema / properties / title
        Removed value: -{
        -  "description": "Optional SEO title (defaults to headline if not provided)",
        -  "type": "string"
        -}
    • Addedlaunchnotes_get_feedback
    • Addedlaunchnotes_get_top_announcements
    • Changedlaunchnotes_list_announcements2 fields changed
      • addedInput schema / properties / order_by_direction
        Added value: +{
        +  "description": "Sort direction: 'ASC' for ascending, 'DESC' for descending",
        +  "enum": [
        +    "ASC",
        +    "DESC"
        +  ],
        +  "type": "string"
        +}
      • addedInput schema / properties / order_by_field
        Added value: +{
        +  "description": "Field to sort by",
        +  "enum": [
        +    "publishedAt",
        +    "createdAt",
        +    "updatedAt"
        +  ],
        +  "type": "string"
        +}
    • Changedlaunchnotes_schedule_announcement1 field changed
      • addedInput schema / properties / scheduled_at_timezone
        Added value: +{
        +  "description": "Timezone for the scheduled time (e.g., 'America/New_York', 'UTC'). Defaults to UTC if not provided.",
        +  "type": "string"
        +}
    • Addedlaunchnotes_search_feedback
  3. 13 tool updates
    • First observedlaunchnotes_archive_announcement
    • First observedlaunchnotes_create_announcement
    • First observedlaunchnotes_get_announcement
    • First observedlaunchnotes_get_project
    • First observedlaunchnotes_list_announcements
    • First observedlaunchnotes_list_projects
    • First observedlaunchnotes_publish_announcement
    • First observedlaunchnotes_schedule_announcement
    • First observedlaunchnotes_update_announcement
    • First observedlaunchnotes_update_project_colors
    • First observedlaunchnotes_update_project_content
    • First observedlaunchnotes_update_project_custom_code
    • First observedlaunchnotes_update_project_features

TDQS

A4.4/5.0

Scored across 22 tools

Disambiguation5/5

Each tool targets a distinct resource-action pair (project get/list/update, announcement lifecycle, feedback search/get, roadmap stages/work items, templates, external links). The four separate project update tools (custom_code, colors, content, features) are clearly scoped to different aspects, so there's no ambiguity.

Naming Consistency5/5

All tools follow the launchnotes_ prefix with a consistent verb_noun pattern (get_project, list_projects, update_project_custom_code, create_announcement, publish_announcement, move_work_item). Plural nouns for list operations and singular for item operations is consistent across the entire set.

Tool Count4/5

22 tools is on the heavier side of the 16-25 range, but the server covers multiple distinct resources (projects, announcements, feedback, roadmap, templates, links) with full lifecycle coverage for the primary domain. Each tool earns its place; the count is reasonable for the breadth.

Completeness4/5

The announcement lifecycle is complete (create, get, update, publish, schedule, archive) and project management is thorough. Minor gaps exist: no announcement delete (archive serves as alternative), no feedback create/update, no work item update/delete, and external links only support create. These are workable but not exhaustive.

Maintenance

ActivitySlowing
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    Not graded
    maintenance
    Enables comprehensive issue tracking and project management through Linear's GraphQL API. Supports creating and managing issues, organizing projects and sprints, team collaboration, and roadmap planning for modern development workflows.
    -
  • F
    license
    C
    quality
    D
    maintenance
    Provides full access to the ZenHub GraphQL API. Enables project management operations like creating issues, epics, workspaces, and sprints through natural language.
    51
    10 npm
    1
    -
  • F
    license
    Not graded
    quality
    D
    maintenance
    Enables natural language management of apps, services, resources, attributes, and data via the Dimetrics API with full CRUD operations and advanced filtering.
    -