Skip to main content
Glama
AccelByte

AGS Extend SDK MCP Server

Official
by AccelByte

Describe symbols

describe-symbols

Retrieve detailed descriptions of multiple AccelByte Gaming Services SDK symbols by providing symbol IDs or using pagination with limit and offset. Get field information, parameters, examples, and return types for code generation.

Instructions

Describe multiple symbols with pagination.

Usage Patterns:

  • describe_symbols(limit: 100, offset: 0) → returns the first 100 symbols (paginated)

  • describe_symbols(ids: ["UserProfile@iam.model"]) → returns one symbol (paginated)

  • describe_symbols(ids: ["Store@platform.model", "PublishStore@platform.function"]) → returns multiple symbols (paginated)

  1. Search: search_symbols(query: "user creation") → get the IDs of the symbols that match the query and other symbols that are referenced by the matched symbols.

  2. Describe: describe_symbols( ids: [ "CreateUser@iam.function", "CreateUserRequest@iam.model", "CreateUserResponse@iam.model" ] )

  3. Analyze: Use the symbol's description, imports, example, fields, parameters, and return_type for instantiation and usage information.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
idsYesList of symbol IDs used to fetch detailed information for each symbol.
limitNoMaximum number of symbols to return (default: 25).
offsetNoOffset for pagination (default: 0).

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
resultYesRepresents a paginated list of symbols.

Implementation Reference

  • Main implementation of the describe-symbols tool. Registers the tool with input schema (ids, limit, offset), filters SYMBOLS by ids or returns all, then paginates via paginateSymbols.
    function describeSymbolsTool(server: HLMcpServer) {
      server.registerTool(
        'describe-symbols',
        {
          title: 'Describe symbols',
          description: DESCRIBE_TOOL_DESCRIPTION,
          inputSchema: {
            ids: z
              .array(z.string())
              .describe(
                'List of symbol IDs used to fetch detailed information for each symbol.'
              ),
            limit: z
              .number()
              .int()
              .optional()
              .default(25)
              .describe('Maximum number of symbols to return (default: 25).'),
            offset: z
              .number()
              .int()
              .optional()
              .default(0)
              .describe('Offset for pagination (default: 0).'),
          },
          outputSchema: {
            result: PaginatedSymbolSchema,
          },
        },
        async ({
          ids,
          limit,
          offset,
        }: {
          ids: string[];
          limit: number;
          offset: number;
        }) => {
          validatePaginationParams(limit, offset);
    
          const symbols: Array<Symbol> = [];
    
          SYMBOLS.forEach((symbol) => {
            if (ids.length > 0) {
              if (ids.includes(symbol.id)) {
                symbols.push(symbol);
              }
            } else {
              symbols.push(symbol); // return all symbols if no IDs are provided
            }
          });
    
          const content = { result: paginateSymbols(symbols, limit, offset) };
    
          return {
            content: [
              {
                type: 'text' as const,
                text: JSON.stringify(content),
              },
            ],
            structuredContent: content,
          };
        }
      );
    }
  • Input/output schema definitions for the describe-symbols tool. Input accepts ids (string array), limit (int, default 25), offset (int, default 0). Output uses PaginatedSymbolSchema.
    {
      title: 'Describe symbols',
      description: DESCRIBE_TOOL_DESCRIPTION,
      inputSchema: {
        ids: z
          .array(z.string())
          .describe(
            'List of symbol IDs used to fetch detailed information for each symbol.'
          ),
        limit: z
          .number()
          .int()
          .optional()
          .default(25)
          .describe('Maximum number of symbols to return (default: 25).'),
        offset: z
          .number()
          .int()
          .optional()
          .default(0)
          .describe('Offset for pagination (default: 0).'),
      },
      outputSchema: {
        result: PaginatedSymbolSchema,
      },
    },
  • src/index.ts:32-36 (registration)
    Registration of describeSymbolsTool via server.modify() at the application entry point.
    server.modify(registerResources);
    server.modify(searchSymbolsTool);
    server.modify(describeSymbolsTool);
    server.modify(createExtendAppPrompt);
  • paginateSymbols helper used by the handler to slice results and return paginated data with total and next offset.
    function paginateSymbols(
      results: Array<Symbol>,
      limit: number,
      offset: number
    ): PaginatedSymbol {
      const end = Math.min(offset + limit, results.length);
      const next = end < results.length ? end : undefined;
      const data = results.slice(offset, end);
    
      return {
        data,
        total: results.length,
        next,
      };
    }
  • validatePaginationParams helper used by the handler to validate limit and offset inputs.
    function validatePaginationParams(
      limit: number,
      offset: number,
      maxLimit: number = 1000
    ): void {
      if (limit <= 0) throw new Error('limit must be positive');
      if (offset < 0) throw new Error('offset must be non-negative');
      if (limit > maxLimit) throw new Error(`limit cannot exceed ${maxLimit}`);
    }
Behavior2/5

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

No annotations provided, so description must cover behavior. It describes pagination and return fields, but there is a contradiction: examples show usage without ids (e.g., describe_symbols(limit:100)) yet schema requires ids. This inconsistency undermines transparency.

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

Conciseness3/5

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

Well-structured with sections for usage patterns and workflow, but slightly verbose for the information provided. Could be more concise without losing clarity.

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 presence of output schema, description covers pagination, examples, and workflow adequately. However, the contradiction regarding required ids makes it incomplete in terms of consistent guidance.

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

Parameters4/5

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

Schema coverage is 100%, so baseline is 3. Description adds concrete usage patterns, default values (limit default 25, offset default 0) already in schema, but also provides meaningful examples with ids, going beyond schema.

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

Purpose5/5

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

Description clearly states the tool describes multiple symbols with pagination. Usage patterns with concrete examples and a recommended workflow that distinguishes it from the sibling search-symbols tool.

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

Usage Guidelines5/5

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

Explicitly provides a recommended workflow: search then describe. Differentiates from search-symbols by indicating that describe returns detailed information while search returns IDs.

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/AccelByte/ags-extend-sdk-mcp-server'

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