board_list_charters
List all charters under a governed institution to obtain charter IDs, types, deliberation modes, seat configurations, and status for convening sessions.
Instructions
List all charters (boards, committees, subcommittees) under a governed institution. Returns charter IDs, types, deliberation modes, seat configurations, and status. Use charter_id to convene sessions.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| institution_id | Yes | Institution ID from board_list_institutions |
Implementation Reference
- src/mcp/tools/institution.ts:147-192 (handler)The handler/implementation of the board_list_charters tool. It registers the tool on the McpServer with a required institution_id (string) Zod schema. The handler calls GET /api/institution/{institution_id}/charters, maps the response to include charter details (id, name, type, status, deliberation mode, seats, decision rights), and returns a formatted JSON response.
// board_list_charters — list charters under an institution // ========================================================================= server.tool( 'board_list_charters', 'List all charters (boards, committees, subcommittees) under a governed institution. Returns charter IDs, types, deliberation modes, seat configurations, and status. Use charter_id to convene sessions.', { institution_id: z.string().describe('Institution ID from board_list_institutions'), }, { title: 'List Charters', readOnlyHint: true, idempotentHint: true, destructiveHint: false, openWorldHint: false }, async (args) => { try { const data = await apiCall(`/api/institution/${args.institution_id}/charters`, 'GET') as any; const charters = (data.charters || data || []) as any[]; return { content: [{ type: 'text' as const, text: JSON.stringify({ institution_id: args.institution_id, count: charters.length, charters: charters.map((c: any) => ({ charter_id: c.charter_id, name: c.name, short_code: c.short_code, type: c.type, status: c.status, parent_id: c.parent_id, deliberation_mode: c.charter_document?.deliberation?.mode, seat_count: c.charter_document?.membership?.seats?.length, seats: c.charter_document?.membership?.seats?.map((s: any) => ({ role: s.role, label: s.label, model: s.model, })), decision_rights: { mandatory: c.charter_document?.decisionRights?.mandatory, advisory: c.charter_document?.decisionRights?.advisory, prohibited: c.charter_document?.decisionRights?.prohibited, }, cadence: c.cadence, compliance_frameworks: c.compliance_frameworks, })), next_step: `Call board_convene_session with institution_id and charter_id to start a governed deliberation`, }, null, 2) }], }; } catch (err: unknown) { return boardErrorResponse(err); } } ); - src/mcp/tools/institution.ts:152-154 (schema)Zod input schema for board_list_charters: requires institution_id as a string (from board_list_institutions).
{ institution_id: z.string().describe('Institution ID from board_list_institutions'), }, - src/mcp/tools/institution.ts:109-109 (registration)The export function registerInstitutionTools that registers all board tools including board_list_charters on the MCP server.
export function registerInstitutionTools(server: McpServer): void { - src/mcp/server.ts:50-50 (registration)Import of registerInstitutionTools from the institution.ts module.
import { registerInstitutionTools } from './tools/institution.js'; - src/mcp/server.ts:109-109 (registration)Registration of board tools (including board_list_charters) in the TOOL_REGISTRY under the 'tenant' visibility tier.
{ tier: 'tenant', register: (server, _engine) => registerInstitutionTools(server), description: 'board (list_institutions, list_charters, convene_session, get_session, install_kit)' },