LaunchNotes MCP Server
OfficialThe LaunchNotes MCP Server enables comprehensive management of LaunchNotes projects and announcements through Claude and other MCP clients via natural language interactions.
Project Management (6 tools)
List all accessible projects or retrieve complete project details including customization settings, colors, and features
Update custom code (CSS, HTML head, header, footer, index hero)
Modify color palettes and themes with hex color values (primary, secondary, text colors)
Update project content (title, description, headings, subheadings, slug)
Toggle project features (feedback, roadmap, ideas, RSS feeds, voting, SEO indexing)
Announcement Management (7 tools)
List and filter announcements by state (draft, scheduled, published, archived)
Get complete announcement details including content, categories, and metadata
Create new draft announcements with headlines, content (Markdown supported), SEO fields, and categorization
Update existing announcements' content, metadata, headlines, excerpts, and categories
Publish announcements immediately to make them live
Schedule announcements for future publication at specific dates/times (ISO 8601 format)
Archive announcements to remove from public view while preserving content
Feedback Management (2 tools)
Search and filter customer feedback by query, sentiment (happy/meh/sad), importance, organization state, and date range
Get complete feedback details including customer information, reporter info, and associated announcements/ideas
Analytics (1 tool)
Analyze top-performing announcements by metrics (engagement, open rate, click rate, feedback count, sentiment) over specified timeframes (week/month/quarter/year)
Key Features:
Supports both JSON (structured data) and Markdown (human-readable) output formats, with Markdown as default
Works via stdio transport with Claude Desktop and other MCP clients
Requires LaunchNotes API token (Management token for write operations, Public token for read-only)
Rate limited to 300 operations per 5 minutes
Includes error handling for authentication, rate limits, and validation errors
Allows updating custom CSS code for LaunchNotes project styling and customization.
Uses GraphQL API to communicate with LaunchNotes for managing projects, announcements, and feedback.
Supports Markdown formatting for announcement content, excerpts, and project descriptions.
Enables toggling RSS feed functionality for LaunchNotes projects.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@LaunchNotes MCP Serverupdate project proj_123 colors to use #1a73e8 as primary"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
LaunchNotes MCP Server
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/mcpFrom Source
git clone https://github.com/launchnotes/mcp.git
cd mcp
npm install
npm run buildQuick 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/mcp4. Start Using
In Claude, simply ask:
List my LaunchNotes projects
Create a new announcement about our API updateGetting 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 IDresponse_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 IDcustom_css(string, optional): Custom CSS codecustom_head(string, optional): Custom HTML for<head>sectioncustom_header(string, optional): Custom HTML for page headercustom_footer(string, optional): Custom HTML for page footercustom_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 IDprimary_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 configcolor_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 IDname(string, optional): Internal project nametitle(string, optional): Public-facing project titledescription(string, optional): Project descriptionheading(string, optional): Main heading on the project pagesubheading(string, optional): Subheading below the main headingslug(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 IDfeedback_enabled(boolean, optional): Enable/disable feedback collectionroadmap_enabled(boolean, optional): Enable/disable roadmap featureideas_enabled(boolean, optional): Enable/disable ideas/feature requestsrss_feed_enabled(boolean, optional): Enable/disable RSS feedvoting_enabled(boolean, optional): Enable/disable voting on ideasnoindex(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 projectquery(string, optional): Search term to find in feedback contentreaction('happy' | 'meh' | 'sad', optional): Filter by customer sentimentimportance('low' | 'medium' | 'high', optional): Filter by importance levelorganized_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 itemresponse_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 projecttimeframe('week' | 'month' | 'quarter' | 'year', required): Time periodstart_date(string, optional): Custom start date (ISO 8601) - overrides timeframeend_date(string, optional): Custom end date (ISO 8601) - overrides timeframemetric(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 devThis 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.mdConnecting to Claude Desktop
To use this MCP server with Claude Desktop:
Configure Claude Desktop:
Edit your Claude Desktop configuration file:
macOS:
~/Library/Application Support/Claude/claude_desktop_config.jsonWindows:
%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" } } } }Restart Claude Desktop
Verify the connection: Ask Claude: "List my LaunchNotes projects"
Troubleshooting
Server won't start
Ensure Node.js 18+ is installed:
node --versionVerify 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_projectsto see all accessible projectsVerify 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:
Add new tool schemas in
src/schemas/Implement tool logic in
src/tools/Register tools in the appropriate file
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 toolslaunchnotes_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
| Name | Required | Description | Default |
|---|---|---|---|
| announcement_id | Yes | The ID of the announcement to archive |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| project_id | Yes | The ID of the LaunchNotes project | |
| headline | Yes | The main headline/title of the announcement | |
| content_markdown | No | The full content/body of the announcement in Markdown format | |
| content_html | No | The full content/body of the announcement in HTML format | |
| content_jira | No | The full content/body of the announcement in Jira Wiki Syntax |
TDQS
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.
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.
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.
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.
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.
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_external_content_linkAttach Link to LaunchNotes AnnouncementA
Attach a supporting link to a LaunchNotes announcement. The link appears in the announcement's sidebar for readers (e.g., blog post, docs, demo video).
Designed for the drafting flow: create an announcement, then attach one or more supporting links to it before publishing.
Args:
owner_id (string): The ID of the announcement the link should attach to
title (string): Display label for the link (e.g., "Read the blog post")
url (string): The full URL the link points to (must include https://)
Returns: Success confirmation, or a list of validation errors.
Note: The mutation does not echo back a link ID. If you need to update or delete the link later, you'll need to attach links during the same drafting session ā read-back is not supported in this version.
Use Cases:
"Attach the blog post URL to the announcement I just created"
"Add a 'View the docs' link to the v2 launch announcement"
"Link the demo video to this announcement"
Error Handling:
Returns validation errors if owner_id is invalid or URL is malformed
Returns "Authentication failed" if the API token is invalid
| Name | Required | Description | Default |
|---|---|---|---|
| owner_id | Yes | The ID of the announcement (or work item) the link should attach to | |
| title | Yes | Display label for the link (e.g., 'Read the blog post') | |
| url | Yes | The full URL the link points to (must include https://) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds significant behavioral context beyond annotations, notably that the mutation does not echo back a link ID and that read-back is unsupported. It also details error handling (validation errors, authentication failure). This aligns with annotations (readOnlyHint=false, destructiveHint=false).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with clear sections (main description, args, returns, notes, use cases, error handling). It is front-loaded with purpose. A bit lengthy but every section earns its place, and it is not overly verbose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema, the description explains returns (success confirmation or validation errors) and covers error handling. It also notes the limitation about link ID. For a simple mutation tool with 3 required parameters, this is complete and transparent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
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 info but adds context like 'must include https://' for URL and ties parameters to the drafting flow (e.g., owner_id is announcement ID). This adds value beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it attaches a supporting link to a LaunchNotes announcement. The verb 'attach' and resource 'link' are specific, and the tool is distinguished from siblings like 'create_announcement' or 'update_announcement' by its unique purpose.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly says it's designed for the drafting flow and provides use cases. While it doesn't mention when not to use it, it gives clear context for when to use it, e.g., after creating an announcement. It lacks explicit exclusion of alternatives but is still helpful.
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)
| Name | Required | Description | Default |
|---|---|---|---|
| project_id | Yes | The ID of the LaunchNotes project | |
| name | Yes | The name/title of the work item | |
| stage_id | Yes | The ID of the stage to add the work item to | |
| content_markdown | No | Description/content in Markdown format | |
| owner_id | No | The ID of the user who owns this work item |
TDQS
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.
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.
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.
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.
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.
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 AnnouncementARead-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
| Name | Required | Description | Default |
|---|---|---|---|
| announcement_id | Yes | The ID of the announcement to retrieve | |
| response_format | No | Output format: 'json' for structured data, 'markdown' for human-readable | markdown |
TDQS
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.
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.
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.
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.
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.
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 ItemARead-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
| Name | Required | Description | Default |
|---|---|---|---|
| feedback_id | Yes | The ID of the feedback item to retrieve | |
| response_format | No | Output format: 'json' for structured data, 'markdown' for human-readable | markdown |
TDQS
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.
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.
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.
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.
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.
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 ProjectARead-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
| Name | Required | Description | Default |
|---|---|---|---|
| project_id | Yes | The ID of the LaunchNotes project to retrieve | |
| response_format | No | Output format: 'json' for structured data, 'markdown' for human-readable | markdown |
TDQS
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.
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.
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.
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.
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.
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 AnnouncementsARead-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
| Name | Required | Description | Default |
|---|---|---|---|
| project_id | Yes | The ID of the LaunchNotes project | |
| metric | No | Metric to rank by: 'engagement' (total viewers+opens+clicks), 'open_rate', 'click_rate', 'feedback_count', 'feedback_sentiment' | engagement |
| limit | No | Number of top announcements to return (max 50) | |
| response_format | No | Output format: 'json' for structured data, 'markdown' for human-readable | markdown |
TDQS
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.
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.
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.
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.
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.
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 AnnouncementsARead-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
| Name | Required | Description | Default |
|---|---|---|---|
| project_id | Yes | The ID of the LaunchNotes project | |
| state | No | Filter by announcement state | |
| limit | No | Number of announcements to return (max 100) | |
| order_by_field | No | Field to sort by | |
| order_by_direction | No | Sort direction: 'ASC' for ascending, 'DESC' for descending | |
| response_format | No | Output format: 'json' for structured data, 'markdown' for human-readable | markdown |
TDQS
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.
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.
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.
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.
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.
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 ProjectsARead-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
| Name | Required | Description | Default |
|---|---|---|---|
| response_format | No | Output format: 'json' for structured data, 'markdown' for human-readable | markdown |
TDQS
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.
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.
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.
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.
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.
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 StagesARead-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
| Name | Required | Description | Default |
|---|---|---|---|
| project_id | Yes | The ID of the LaunchNotes project | |
| response_format | No | Output format: 'json' for structured data, 'markdown' for human-readable | markdown |
TDQS
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.
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.
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.
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.
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.
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 TemplatesARead-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
| Name | Required | Description | Default |
|---|---|---|---|
| project_id | Yes | The ID of the LaunchNotes project | |
| limit | No | Number of templates to return (max 100, default 50) | |
| response_format | No | Output format: 'json' for structured data, 'markdown' for human-readable | markdown |
TDQS
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.
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.
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.
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.
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.
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 ItemsARead-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
| Name | Required | Description | Default |
|---|---|---|---|
| project_id | Yes | The ID of the LaunchNotes project | |
| stage_id | No | Optional stage ID to filter by | |
| response_format | No | Output format: 'json' for structured data, 'markdown' for human-readable | markdown |
TDQS
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.
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.
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.
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.
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.
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)
| Name | Required | Description | Default |
|---|---|---|---|
| work_item_id | Yes | The ID of the work item to move | |
| target_stage_id | Yes | The ID of the stage to move the work item into |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| announcement_id | Yes | The ID of the announcement to publish |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| announcement_id | Yes | The ID of the announcement to schedule | |
| scheduled_at | Yes | When to publish the announcement (ISO 8601 format, must be in the future) | |
| scheduled_at_timezone | No | Timezone for the scheduled time (e.g., 'America/New_York', 'UTC'). Defaults to UTC if not provided. |
TDQS
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.
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.
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.
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.
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.
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 FeedbackARead-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
| Name | Required | Description | Default |
|---|---|---|---|
| project_id | Yes | The ID of the LaunchNotes project | |
| query | No | Search term to find in feedback content | |
| reaction | No | Filter by customer reaction/sentiment | |
| importance | No | Filter by importance level | |
| organized_state | No | Filter by organized state: 'organized', 'unorganized', 'announcement', 'idea', 'roadmap' | |
| starred | No | Filter by starred status | |
| archived | No | Filter by archived status | |
| limit | No | Number of feedback items to return (max 100) | |
| response_format | No | Output format: 'json' for structured data, 'markdown' for human-readable | markdown |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
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.
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.
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.
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.
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.
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.
6 tool updates
v0.3.1- Added
launchnotes_create_external_content_link - Added
launchnotes_create_work_item - Added
launchnotes_list_stages - Added
launchnotes_list_templates - Added
launchnotes_list_work_items - Added
launchnotes_move_work_item
6 tool updates
v1.0.0- Changed
launchnotes_create_announcement9 fields changed- removed
Input schema / properties / category_idsRemoved value: -{ - "description": "Array of category IDs to assign", - "items": { - "type": "string" - }, - "type": "array" -} - removed
Input schema / properties / change_type_idsRemoved value: -{ - "description": "Array of change type (label) IDs to assign", - "items": { - "type": "string" - }, - "type": "array" -} - removed
Input schema / properties / contentRemoved value: -{ - "description": "The full content/body of the announcement (supports Markdown)", - "type": "string" -} - added
Input schema / properties / content_htmlAdded value: +{ + "description": "The full content/body of the announcement in HTML format", + "type": "string" +} - added
Input schema / properties / content_jiraAdded value: +{ + "description": "The full content/body of the announcement in Jira Wiki Syntax", + "type": "string" +} - added
Input schema / properties / content_markdownAdded value: +{ + "description": "The full content/body of the announcement in Markdown format", + "type": "string" +} - removed
Input schema / properties / descriptionRemoved value: -{ - "description": "Optional meta description for SEO", - "type": "string" -} - removed
Input schema / properties / excerptRemoved value: -{ - "description": "Short excerpt or summary", - "type": "string" -} - removed
Input schema / properties / titleRemoved value: -{ - "description": "Optional SEO title (defaults to headline if not provided)", - "type": "string" -}
- Added
launchnotes_get_feedback - Added
launchnotes_get_top_announcements - Changed
launchnotes_list_announcements2 fields changed- added
Input schema / properties / order_by_directionAdded value: +{ + "description": "Sort direction: 'ASC' for ascending, 'DESC' for descending", + "enum": [ + "ASC", + "DESC" + ], + "type": "string" +} - added
Input schema / properties / order_by_fieldAdded value: +{ + "description": "Field to sort by", + "enum": [ + "publishedAt", + "createdAt", + "updatedAt" + ], + "type": "string" +}
- Changed
launchnotes_schedule_announcement1 field changed- added
Input schema / properties / scheduled_at_timezoneAdded value: +{ + "description": "Timezone for the scheduled time (e.g., 'America/New_York', 'UTC'). Defaults to UTC if not provided.", + "type": "string" +}
- Added
launchnotes_search_feedback
13 tool updates
- First observed
launchnotes_archive_announcement - First observed
launchnotes_create_announcement - First observed
launchnotes_get_announcement - First observed
launchnotes_get_project - First observed
launchnotes_list_announcements - First observed
launchnotes_list_projects - First observed
launchnotes_publish_announcement - First observed
launchnotes_schedule_announcement - First observed
launchnotes_update_announcement - First observed
launchnotes_update_project_colors - First observed
launchnotes_update_project_content - First observed
launchnotes_update_project_custom_code - First observed
launchnotes_update_project_features
TDQS
Scored across 22 tools
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.
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.
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.
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
Related MCP Connectors
Manage projects, tasks, time tracking, and team collaboration through natural language.
Manage websites, help documents and customer-support conversations with safe, scoped tools.
- ShipstarOAuthai.shipstar
Generate changelogs, release emails, help-center articles, banners, and social posts from commits.
Give your AI agents trusted access to the full Postman platform.
Related MCP Servers
- AlicenseNot gradedqualityNot gradedmaintenanceEnables 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.-
- FlicenseCqualityDmaintenanceProvides full access to the ZenHub GraphQL API. Enables project management operations like creating issues, epics, workspaces, and sprints through natural language.5110 npm1-
- FlicenseNot gradedqualityDmaintenanceEnables natural language management of apps, services, resources, attributes, and data via the Dimetrics API with full CRUD operations and advanced filtering.-
- AlicenseNot gradedqualityCmaintenanceEnables comprehensive project analysis, intelligent search with regex, multi-file editing with automatic backups, and dependency mapping, all via natural language.15 npm6MIT