Skip to main content
Glama

board_list_institutions

Read-onlyIdempotent

List all governed bodies in the GIA architecture, such as Architecture Review Boards, to retrieve institution IDs needed for convening sessions.

Instructions

List all institutions in the GIA Governed Organizational Architecture. Each institution is a governed body (e.g. Architecture Review Board, Federal AI Board) with its own charter hierarchy. Returns institution IDs needed to convene sessions.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault

No arguments

Implementation Reference

  • The handler for board_list_institutions tool. Calls GET /api/institution, maps results, returns list of institutions with IDs needed for further board operations.
    server.tool(
      'board_list_institutions',
      'List all institutions in the GIA Governed Organizational Architecture. Each institution is a governed body (e.g. Architecture Review Board, Federal AI Board) with its own charter hierarchy. Returns institution IDs needed to convene sessions.',
      {},
      { title: 'List Institutions', readOnlyHint: true, idempotentHint: true, destructiveHint: false, openWorldHint: false },
      async () => {
        try {
          const data = await apiCall('/api/institution', 'GET') as any;
          const institutions = (data.institutions || data || []) as any[];
    
          return {
            content: [{ type: 'text' as const, text: JSON.stringify({
              count: institutions.length,
              institutions: institutions.map((i: any) => ({
                institution_id:       i.institution_id,
                name:                 i.name,
                description:          i.description,
                status:               i.status,
                compliance_frameworks: i.compliance_frameworks,
                created_at:           i.created_at,
              })),
              next_step: institutions.length > 0
                ? `Call board_list_charters with institution_id from above to see committees`
                : `Call board_install_kit to install a prebuilt institution template`,
            }, null, 2) }],
          };
        } catch (err: unknown) {
          return boardErrorResponse(err);
        }
      }
    );
  • Input schema for board_list_institutions — empty object (no parameters needed).
    {},
  • Registration of board_list_institutions via server.tool() call, along with all other board tools.
    export function registerInstitutionTools(server: McpServer): void {
    
      // =========================================================================
      // board_list_institutions — list all governed institutions
      // =========================================================================
      server.tool(
        'board_list_institutions',
        'List all institutions in the GIA Governed Organizational Architecture. Each institution is a governed body (e.g. Architecture Review Board, Federal AI Board) with its own charter hierarchy. Returns institution IDs needed to convene sessions.',
        {},
        { title: 'List Institutions', readOnlyHint: true, idempotentHint: true, destructiveHint: false, openWorldHint: false },
        async () => {
          try {
            const data = await apiCall('/api/institution', 'GET') as any;
            const institutions = (data.institutions || data || []) as any[];
    
            return {
              content: [{ type: 'text' as const, text: JSON.stringify({
                count: institutions.length,
                institutions: institutions.map((i: any) => ({
                  institution_id:       i.institution_id,
                  name:                 i.name,
                  description:          i.description,
                  status:               i.status,
                  compliance_frameworks: i.compliance_frameworks,
                  created_at:           i.created_at,
                })),
                next_step: institutions.length > 0
                  ? `Call board_list_charters with institution_id from above to see committees`
                  : `Call board_install_kit to install a prebuilt institution template`,
              }, null, 2) }],
            };
          } catch (err: unknown) {
            return boardErrorResponse(err);
          }
        }
      );
  • Registration entry point — registerInstitutionTools is called as a TENANT-tier tool from the MCP server's TOOL_REGISTRY.
    { tier: 'tenant', register: (server, _engine) => registerInstitutionTools(server), description: 'board (list_institutions, list_charters, convene_session, get_session, install_kit)' },
  • apiCall helper used by the handler to make HTTP requests to the GIA Express API backend.
    async function apiCall(path: string, method: string, body?: unknown): Promise<unknown> {
      const headers: Record<string, string> = { 'Content-Type': 'application/json' };
      if (API_KEY) headers['Authorization'] = `Bearer ${API_KEY}`;
    
      let res: Response;
      try {
        res = await fetch(`${API_BASE}${path}`, {
          method,
          headers,
          body: body ? JSON.stringify(body) : undefined,
        });
      } catch (err: unknown) {
        // Network-level failure: server down, DNS fail, connection refused
        const msg = err instanceof Error ? err.message : 'Unknown network error';
        const envDiag = [
          `GIA_API_URL: ${process.env.GIA_API_URL ? 'set' : 'NOT SET (using default: http://localhost:3001)'}`,
          `GIA_API_KEY: ${process.env.GIA_API_KEY ? 'set' : 'NOT SET'}`,
          `GIA_SERVER_URL: ${process.env.GIA_SERVER_URL ? 'set' : 'NOT SET'}`,
        ].join(', ');
        throw new BoardApiError(
          null, path,
          `Board API unavailable at ${API_BASE}. Check that the Express server is running. Env: ${envDiag}. (${msg})`,
          `API ${method} ${path} → network error: ${msg}`,
        );
      }
    
      if (!res.ok) {
        const errText = await res.text().catch(() => 'Unknown error');
        throw new BoardApiError(
          res.status, path,
          `Board API returned ${res.status} for ${method} ${path}. ${res.status === 503 ? 'Server may be restarting — retry in 30 seconds.' : errText.slice(0, 200)}`,
          `API ${method} ${path} → ${res.status}: ${errText.slice(0, 300)}`,
        );
      }
    
      return res.json();
    }
Behavior4/5

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

Adds context beyond annotations: describes institutions as governed bodies with charter hierarchy and explains return value. Annotations already cover safety and idempotency.

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?

Two sentences, no wasted words, front-loaded with purpose and key details.

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

Completeness5/5

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

Completes the picture by stating return value and linking to usage (convening sessions), no output schema needed.

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?

No parameters present, so schema coverage is 100% trivially. Description does not need to add parameter info, baseline 4.

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?

Clearly states 'List all institutions' with specific examples (Architecture Review Board, Federal AI Board) and explains purpose. Differentiates from siblings like board_list_charters and board_convene_session.

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?

Implies usage before board_convene_session by stating 'Returns institution IDs needed to convene sessions', but does not explicitly mention when not to use or provide alternatives.

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/knowledgepa3/gia-mcp-server'

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