Skip to main content
Glama

get_team_event_status

Read-onlyIdempotent

Get a team's competitive status and standings at a specific event, including ranking, alliance selection, playoff progression, and next/last match keys.

Instructions

Retrieve a team's competitive status and standings at a specific event. Returns qualification ranking row (rank, record, sort orders, qual average), alliance selection result (alliance number, pick slot, backup status), playoff progression (level, current-level record, overall record, playoff average, final status), and human-readable summary strings (overall_status_str, alliance_status_str, playoff_status_str), plus next/last match keys. Excellent for live scouting dashboards and event-day status displays.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
team_keyYesFRC team key formatted as 'frc' followed by the team number with no leading zeros (e.g., 'frc86', 'frc254', 'frc1114'). Uniquely identifies a FIRST Robotics Competition team on The Blue Alliance.
event_keyYesTBA event key combining the season year and event code (e.g., '2023casj' for the 2023 Silicon Valley Regional, '2024txhou' for the 2024 Houston Championship, '2024micmp4' for a Michigan State Championship division). Use get_events or get_events_keys to discover valid event keys for a year.

Implementation Reference

  • Handler for 'get_team_event_status' tool. Parses team_key and event_key, makes GET request to /team/{team_key}/event/{event_key}/status on the TBA API, validates the response with TeamEventStatusSchema, and returns the status as JSON.
    case 'get_team_event_status': {
      const { team_key, event_key } = z
        .object({
          team_key: TeamKeySchema,
          event_key: EventKeySchema,
        })
        .parse(args);
      const data = await makeApiRequest(
        `/team/${team_key}/event/${event_key}/status`,
      );
      const status = TeamEventStatusSchema.parse(data);
      return {
        content: [
          {
            type: 'text',
            text: JSON.stringify(status, null, 2),
          },
        ],
      };
    }
  • Zod schema for the team event status response. Validates qual (ranking), alliance selection, playoff progression, status summary strings, and next/last match keys.
    export const TeamEventStatusSchema = z.object({
      qual: z
        .object({
          num_teams: z.number().nullish(),
          ranking: z
            .object({
              dq: z.number().nullish(),
              matches_played: z.number(),
              qual_average: z.number().nullish(),
              rank: z.number(),
              record: z
                .object({
                  losses: z.number(),
                  ties: z.number(),
                  wins: z.number(),
                })
                .nullish(),
              sort_orders: z.array(z.number()).nullish(),
              team_key: z.string(),
            })
            .nullish(),
          sort_order_info: z
            .array(
              z.object({
                name: z.string(),
                precision: z.number(),
              }),
            )
            .nullish(),
          status: z.string().nullish(),
        })
        .nullish(),
      alliance: z
        .object({
          backup: z
            .object({
              in: z.string().nullish(),
              out: z.string().nullish(),
            })
            .nullish(),
          name: z.string().nullish(),
          number: z.number().nullish(),
          pick: z.number().nullish(),
        })
        .nullish(),
      playoff: z
        .object({
          current_level_record: z
            .object({
              losses: z.number(),
              ties: z.number(),
              wins: z.number(),
            })
            .nullish(),
          level: z.string().nullish(),
          playoff_average: z.number().nullish(),
          record: z
            .object({
              losses: z.number(),
              ties: z.number(),
              wins: z.number(),
            })
            .nullish(),
          status: z.string().nullish(),
        })
        .nullish(),
      alliance_status_str: z.string(),
      playoff_status_str: z.string(),
      overall_status_str: z.string(),
      next_match_key: z.string().nullish(),
      last_match_key: z.string().nullish(),
    });
  • Input schema for get_team_event_status: requires team_key (frcXXXX) and event_key (e.g. 2023casj).
    export const GetTeamEventStatusInputSchema = z.object({
      team_key: TeamKeySchema,
      event_key: EventKeySchema,
    });
  • src/tools.ts:249-255 (registration)
    Tool registration for get_team_event_status with its name, description, and input schema binding to GetTeamEventStatusInputSchema.
    {
      name: 'get_team_event_status',
      description:
        "Retrieve a team's competitive status and standings at a specific event. Returns qualification ranking row (rank, record, sort orders, qual average), alliance selection result (alliance number, pick slot, backup status), playoff progression (level, current-level record, overall record, playoff average, final status), and human-readable summary strings (overall_status_str, alliance_status_str, playoff_status_str), plus next/last match keys. Excellent for live scouting dashboards and event-day status displays.",
      inputSchema: toMCPSchema(GetTeamEventStatusInputSchema),
      annotations: { ...READ_ONLY_API, title: "Get Team's Status at an Event" },
    },
Behavior3/5

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

Annotations already declare readOnlyHint=true, destructiveHint=false, idempotentHint=true, and openWorldHint=true. The description adds detailed return field behavior beyond annotations but does not disclose additional behavioral aspects such as rate limits or data freshness. With strong annotation coverage, the description provides adequate context.

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

Conciseness5/5

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

The description is a single, well-structured paragraph. It starts with the primary purpose, lists return fields in a logical order, and ends with a concrete use case. Every sentence earns its place without redundancy.

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

Completeness4/5

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

Despite no output schema, the description comprehensively enumerates all major return components (ranking, alliance, playoff, summary strings, next/last match keys). For a single-team query with no pagination, this is nearly complete. Minor omission could be handling of absent data (e.g., team not at event), but overall strong.

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

Parameters3/5

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

Schema coverage is 100% with clear descriptions for both parameters (team_key and event_key), including patterns and examples. The description adds value by explaining the return structure but not additional parameter meaning. Baseline 3 is appropriate as schema does the heavy lifting.

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

Purpose5/5

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

The description precisely states the tool retrieves a team's competitive status and standings at a specific event, listing specific return fields like qualification ranking, alliance selection, playoff progression, and summary strings. It clearly distinguishes from siblings such as get_team_event_matches or get_team_event_awards which focus on individual match or award data.

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

Usage Guidelines4/5

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

The description explicitly recommends the tool for 'live scouting dashboards and event-day status displays,' providing clear use cases. It does not explicitly state when to avoid it or name alternative tools, but the context is adequate for an agent to infer appropriate usage.

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

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/withinfocus/tba-mcp-server'

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