Skip to main content
Glama

basecamp_get_kanban_card

Retrieve comprehensive details for a specific kanban card in Basecamp projects using bucket and card identifiers to access task information.

Instructions

Get all details of a specific kanban card.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
bucket_idYesBasecamp resource identifier
card_idYes

Implementation Reference

  • Handler function that initializes the Basecamp client, fetches the specific kanban card using bucket_id and card_id, serializes key fields including id, title, content, due_on, url, counts, timestamps, creator, assignees, and steps, then returns the data as a formatted JSON string in a text content block. Handles errors using handleBasecampError.
    async (params) => { try { const client = await initializeBasecampClient(); const response = await client.cardTableCards.get({ params: { bucketId: params.bucket_id, cardId: params.card_id, }, }); if (response.status !== 200 || !response.body) { throw new Error("Failed to fetch card"); } const card = response.body; return { content: [ { type: "text", text: JSON.stringify( { id: card.id, title: card.title, content: card.content, due_on: card.due_on, url: card.app_url, comments_count: card.comments_count, created_at: card.created_at, updated_at: card.updated_at, creator: serializePerson(card.creator), assignees: card.assignees.map(serializePerson), steps: card.steps?.map((s) => ({ id: s.id, title: s.title, completed: s.completed, })), }, null, 2, ), }, ], }; } catch (error) { return { content: [{ type: "text", text: handleBasecampError(error) }], }; } },
  • Tool schema definition including title, description, input schema requiring bucket_id and card_id (validated via BasecampIdSchema), and annotations indicating read-only, non-destructive, idempotent behavior with open-world hint.
    { title: "Get Kanban Card", description: "Get all details of a specific kanban card.", inputSchema: { bucket_id: BasecampIdSchema, card_id: BasecampIdSchema, }, annotations: { readOnlyHint: true, destructiveHint: false, idempotentHint: true, openWorldHint: true, }, },
  • Registration of the basecamp_get_kanban_card tool using server.registerTool within the registerKanbanTools function, specifying the tool name, schema/configuration, and handler.
    server.registerTool( "basecamp_get_kanban_card", { title: "Get Kanban Card", description: "Get all details of a specific kanban card.", inputSchema: { bucket_id: BasecampIdSchema, card_id: BasecampIdSchema, }, annotations: { readOnlyHint: true, destructiveHint: false, idempotentHint: true, openWorldHint: true, }, }, async (params) => { try { const client = await initializeBasecampClient(); const response = await client.cardTableCards.get({ params: { bucketId: params.bucket_id, cardId: params.card_id, }, }); if (response.status !== 200 || !response.body) { throw new Error("Failed to fetch card"); } const card = response.body; return { content: [ { type: "text", text: JSON.stringify( { id: card.id, title: card.title, content: card.content, due_on: card.due_on, url: card.app_url, comments_count: card.comments_count, created_at: card.created_at, updated_at: card.updated_at, creator: serializePerson(card.creator), assignees: card.assignees.map(serializePerson), steps: card.steps?.map((s) => ({ id: s.id, title: s.title, completed: s.completed, })), }, null, 2, ), }, ], }; } catch (error) { return { content: [{ type: "text", text: handleBasecampError(error) }], }; } }, );

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/stefanoverna/basecamp-mcp'

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