Skip to main content
Glama

get_tag_registry

Retrieve the local tag taxonomy including definitions, hero tags, and lane-tag mappings for Codecks project management. Filter by system or discipline categories as needed.

Instructions

Get the local tag taxonomy (definitions, hero tags, lane-tag mappings). No auth needed.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
categoryNoFilter to system or discipline tags only

Implementation Reference

  • The main handler function for get_tag_registry tool. Filters tags by optional category parameter and returns tag definitions, count, hero_tags, and lane_tags in a formatted response.
    async (args) => {
      let tags = TAGS;
      if (args.category) {
        tags = tags.filter((t) => t.category === args.category);
      }
    
      const tagDicts = tags.map((t) => ({
        name: t.name,
        display_name: t.displayName,
        category: t.category,
        description: t.description,
      }));
    
      return {
        content: [
          {
            type: "text",
            text: JSON.stringify(
              finalizeToolResult({
                tags: tagDicts,
                count: tagDicts.length,
                hero_tags: [...HERO_TAGS],
                lane_tags: LANE_TAGS,
              }),
            ),
          },
        ],
      };
    },
  • Tool registration using server.registerTool() with name 'get_tag_registry', including title, description, input schema, and async handler callback.
    export function registerRegistryTools(server: McpServer): void {
      server.registerTool(
        "get_tag_registry",
        {
          title: "Get Tag Registry",
          description:
            "Get the local tag taxonomy (definitions, hero tags, lane-tag mappings). No auth needed.",
          inputSchema: z.object({
            category: z
              .enum(["system", "discipline"])
              .optional()
              .describe("Filter to system or discipline tags only"),
          }),
        },
        async (args) => {
          let tags = TAGS;
          if (args.category) {
            tags = tags.filter((t) => t.category === args.category);
          }
    
          const tagDicts = tags.map((t) => ({
            name: t.name,
            display_name: t.displayName,
            category: t.category,
            description: t.description,
          }));
    
          return {
            content: [
              {
                type: "text",
                text: JSON.stringify(
                  finalizeToolResult({
                    tags: tagDicts,
                    count: tagDicts.length,
                    hero_tags: [...HERO_TAGS],
                    lane_tags: LANE_TAGS,
                  }),
                ),
              },
            ],
          };
        },
      );
  • Input schema definition using zod with an optional 'category' parameter that accepts 'system' or 'discipline' enum values for filtering tags.
    {
      title: "Get Tag Registry",
      description:
        "Get the local tag taxonomy (definitions, hero tags, lane-tag mappings). No auth needed.",
      inputSchema: z.object({
        category: z
          .enum(["system", "discipline"])
          .optional()
          .describe("Filter to system or discipline tags only"),
      }),
  • Supporting data structures: TagDefinition interface, TAGS array with 8 tag definitions, HERO_TAGS set, and LANE_TAGS mapping used by the get_tag_registry handler.
    interface TagDefinition {
      name: string;
      displayName: string;
      category: "system" | "discipline";
      description: string;
    }
    
    const TAGS: TagDefinition[] = [
      {
        name: "feature",
        displayName: "Feature",
        category: "system",
        description: "New functionality",
      },
      {
        name: "bug",
        displayName: "Bug",
        category: "system",
        description: "Defect to fix",
      },
      {
        name: "chore",
        displayName: "Chore",
        category: "system",
        description: "Maintenance task",
      },
      {
        name: "spike",
        displayName: "Spike",
        category: "system",
        description: "Research/investigation",
      },
      {
        name: "code",
        displayName: "Code",
        category: "discipline",
        description: "Programming work",
      },
      {
        name: "design",
        displayName: "Design",
        category: "discipline",
        description: "Visual/UX design",
      },
      {
        name: "art",
        displayName: "Art",
        category: "discipline",
        description: "Art assets",
      },
      {
        name: "audio",
        displayName: "Audio",
        category: "discipline",
        description: "Sound/music",
      },
    ];
    
    const HERO_TAGS = new Set(["feature", "bug", "chore", "spike"]);
    const LANE_TAGS: Record<string, string[]> = {
      code: ["code"],
      design: ["design"],
      art: ["art"],
      audio: ["audio"],
    };
  • The finalizeToolResult helper function that wraps the handler's response in a contract envelope with schema_version and ok status fields.
    export function finalizeToolResult(result: unknown): unknown {
      if (result !== null && typeof result === "object" && !Array.isArray(result)) {
        const dict = result as Record<string, unknown>;
        const normalized = ensureContractDict(dict);
    
        if (normalized.ok === false) return normalized;
    
        if (config.mcpResponseMode === "envelope") {
          const data = { ...normalized };
          delete data.ok;
          delete data.schema_version;
          return {
            ok: true,
            schema_version: CONTRACT_SCHEMA_VERSION,
            data,
          };
        }
    
        return normalized;
      }
    
      if (config.mcpResponseMode === "envelope") {
        return {
          ok: true,
          schema_version: CONTRACT_SCHEMA_VERSION,
          data: result,
        };
      }
    
      return result;
    }

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/rangogamedev/codecks-mcp'

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