Skip to main content
Glama
PeterShin23

SeatGeek MCP Server

retrieve_event_venue_information

Retrieve detailed venue seating layouts, including sections and rows, for a specific event. Use this tool to explore seating options and inform ticket purchasing decisions with structured or JSON output.

Instructions

Get detailed seating information including sections and rows for a specific event. This tool first searches for the event using the provided query, then retrieves detailed venue layout information. Useful for understanding venue seating options and making ticket purchasing decisions.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
event_idYesThe unique identifier for the event to retrieve venue information for. This ID is obtained from the event.
formatNoOutput format. Use "structured" for readable format (default) or "json" for raw API response. Only use "json" if explicitly requested.structured
pageNoPage number for pagination. Default is 1.

Implementation Reference

  • The handler function executes the core logic: parses input, fetches venue section data from API, handles formatting (structured/json), parses with Zod schema, and returns formatted text content or error details.
    handler: async (args: any, extra: any) => {
      try {
        const params = EventVenueInformationQuerySchema.parse(args);
        
        // Call the section info endpoint with the event ID
        const data = await fetchJson(`${SECTION_INFO_ENDPOINT}/${params.event_id}`, {});
        
        if (params.format === 'json') {
          return {
            content: [
              {
                type: 'text' as const,
                text: JSON.stringify(data, null, 2)
              }
            ]
          };
        }
        
        try {
          const sectionInfo = SectionInfoSchema.parse(data);
          
          return {
            content: [
              {
                type: 'text' as const,
                text: JSON.stringify(sectionInfo, null, 2)
              }
            ]
          };
        } catch (error) {
          // Return raw data if parsing fails
          console.warn('Failed to parse section info:', error);
          
          return {
            content: [
              {
                type: 'text' as const,
                text: JSON.stringify(data, null, 2)
              }
            ]
          };
        }
      } catch (error) {
        console.error('Error in retrieve_event_venue_information handler:', error);
        
        // Provide more detailed error information
        const errorMessage = error instanceof Error ? error.message : 'Unknown error occurred';
        const errorDetails = {
          error: 'API_REQUEST_FAILED',
          message: errorMessage,
          timestamp: new Date().toISOString(),
          args: args
        };
        
        return {
          content: [
            {
              type: 'text' as const,
              text: JSON.stringify({
                error: 'Failed to fetch event venue information',
                details: errorDetails,
                suggestion: 'Please check your parameters and try again. Common issues include invalid search terms or the event not having section information available.'
              }, null, 2)
            }
          ]
        };
      }
    },
  • Zod-based input schema defining parameters: event_id (required), page (optional), format (optional). Used for validation in the handler and registration.
    const inputSchema = {
      event_id: z.number().describe('The unique identifier for the event to retrieve venue information for. This ID is obtained from the event.'),
      page: z.number().min(1).default(1).describe('Page number for pagination. Default is 1.'),
      format: z.enum(['structured', 'json']).default('structured').describe('Output format. Use "structured" for readable format (default) or "json" for raw API response. Only use "json" if explicitly requested.'),
    };
  • src/server.ts:26-26 (registration)
    Registers the retrieve_event_venue_information tool with the MCP server using its name, description, inputSchema, and handler.
    mcpServer.tool(retrieveEventVenueInformationTool.name, retrieveEventVenueInformationTool.description, retrieveEventVenueInformationTool.inputSchema, retrieveEventVenueInformationTool.handler);
  • Internal Zod schema used to parse arguments in the handler (identical to inputSchema).
    const EventVenueInformationQuerySchema = z.object({
      event_id: z.number().describe('The unique identifier for the event to retrieve venue information for. This ID is obtained from the event.'),
      page: z.number().min(1).default(1).describe('Page number for pagination. Default is 1.'),
      format: z.enum(['structured', 'json']).default('structured').describe('Output format. Use "structured" for readable format (default) or "json" for raw API response. Only use "json" if explicitly requested.'),
    });
  • Zod schema for parsing the API response data into structured sections format.
    const SectionInfoSchema = z.object({
      sections: z.record(z.array(z.string())).nullable(),
    });
Behavior3/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. It adds some context: the tool 'first searches for the event using the provided query, then retrieves detailed venue layout information,' which explains the two-step process. However, it lacks details on permissions, rate limits, error handling, or what the output looks like (e.g., pagination details beyond the schema). This is a moderate effort but leaves gaps for a tool with no annotations.

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

Conciseness4/5

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

The description is appropriately sized and front-loaded: the first sentence states the core purpose clearly. The second sentence adds procedural context, and the third provides usage guidance. Each sentence earns its place without redundancy, making it efficient and well-structured. A minor deduction for slightly verbose phrasing in the second sentence.

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

Completeness3/5

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

Given no annotations and no output schema, the description provides basic purpose and usage but lacks completeness. It doesn't detail the output format (beyond the 'format' parameter in the schema), error cases, or integration with sibling tools. For a tool with 3 parameters and no structured behavioral hints, more context on what to expect from the response would be helpful, leaving it adequate but with clear gaps.

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

Parameters3/5

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

Schema description coverage is 100%, meaning the schema already documents all parameters well. The description doesn't add any parameter-specific semantics beyond what's in the schema (e.g., it doesn't explain 'event_id' further or provide examples). With high schema coverage, the baseline is 3, as the description doesn't compensate but also doesn't detract from the schema's documentation.

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

Purpose4/5

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

The description clearly states the tool's purpose: 'Get detailed seating information including sections and rows for a specific event.' It specifies the verb ('get'), resource ('seating information'), and scope ('for a specific event'), making it easy to understand. However, it doesn't explicitly differentiate from sibling tools like 'find_events' or 'find_event_recommendations', which likely serve different purposes but aren't contrasted here.

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

Usage Guidelines3/5

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

The description provides some implied usage context: 'Useful for understanding venue seating options and making ticket purchasing decisions.' This suggests when to use the tool, but it doesn't explicitly state when not to use it or mention alternatives like sibling tools. For example, it doesn't clarify if this should be used instead of 'find_events' for seating details, leaving some ambiguity.

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

Install Server

Other Tools

Related Tools

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/PeterShin23/seatgeek-mcp'

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