Skip to main content
Glama
launchnotes

LaunchNotes MCP Server

Official
by launchnotes

launchnotes_search_feedback

Search and filter customer feedback in LaunchNotes projects by content, sentiment, importance, and status to analyze user input.

Instructions

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

Input Schema

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

Implementation Reference

  • The asynchronous handler function that implements the core logic of the 'launchnotes_search_feedback' tool. It performs the GraphQL search query via searchFeedback, processes the results, and returns formatted JSON or Markdown output based on parameters. Handles errors gracefully.
    async (params: SearchFeedbackInput) => {
      try {
        const result = await searchFeedback(client, {
          projectId: params.project_id,
          query: params.query,
          reaction: params.reaction,
          importance: params.importance,
          organizedState: params.organized_state,
          starred: params.starred,
          archived: params.archived,
          first: params.limit,
        });
    
        const feedbacks = result.project.feedbacks.nodes;
    
        if (params.response_format === RESPONSE_FORMAT.JSON) {
          return {
            content: [
              {
                type: "text",
                text: JSON.stringify(
                  {
                    total: feedbacks.length,
                    feedbacks,
                    hasMore: result.project.feedbacks.pageInfo.hasNextPage,
                  },
                  null,
                  2
                ),
              },
            ],
          };
        }
    
        // Markdown format
        return {
          content: [
            {
              type: "text",
              text: formatFeedbackListMarkdown(feedbacks),
            },
          ],
        };
      } catch (error) {
        return {
          isError: true,
          content: [
            {
              type: "text",
              text: `Error searching feedback: ${error instanceof Error ? error.message : "Unknown error"}`,
            },
          ],
        };
      }
    }
  • Zod schema defining the input parameters and validation for the 'launchnotes_search_feedback' tool, including project_id, filters like query, reaction, importance, and output format.
    export const SearchFeedbackSchema = z
      .object({
        project_id: z
          .string()
          .min(1, "Project ID is required")
          .describe("The ID of the LaunchNotes project"),
        query: z
          .string()
          .optional()
          .describe("Search term to find in feedback content"),
        reaction: reactionSchema,
        importance: importanceSchema,
        organized_state: z
          .string()
          .optional()
          .describe("Filter by organized state: 'organized', 'unorganized', 'announcement', 'idea', 'roadmap'"),
        starred: z
          .boolean()
          .optional()
          .describe("Filter by starred status"),
        archived: z
          .boolean()
          .optional()
          .describe("Filter by archived status"),
        limit: z
          .number()
          .min(1)
          .max(100)
          .default(20)
          .optional()
          .describe("Number of feedback items to return (max 100)"),
        response_format: responseFormatSchema,
      })
      .strict();
  • The server.registerTool call that registers the 'launchnotes_search_feedback' tool, including its name, title, detailed description, input schema reference, and annotations.
        "launchnotes_search_feedback",
        {
          title: "Search LaunchNotes Feedback",
          description: `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`,
          inputSchema: SearchFeedbackSchema,
          annotations: {
            readOnlyHint: true,
            destructiveHint: false,
            idempotentHint: true,
            openWorldHint: true,
          },
        },

Latest Blog Posts

MCP directory API

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

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

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