list_projects
Retrieve all active projects associated with a specific wallet address to manage development infrastructure and track ongoing work.
Instructions
List all active projects for a wallet address.
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| wallet | Yes | Wallet address (0x...) to list projects for |
Implementation Reference
- src/tools/list-projects.ts:11-61 (handler)Handler function that makes a GET request to /v1/wallets/{wallet}/projects API endpoint, formats the response as a markdown table, and returns projects with their ID, name, tier, status, and expiration date.
export async function handleListProjects(args: { wallet: string; }): Promise<{ content: Array<{ type: "text"; text: string }>; isError?: boolean }> { const wallet = args.wallet.toLowerCase(); const res = await apiRequest(`/v1/wallets/${wallet}/projects`, { method: "GET", }); if (!res.ok) return formatApiError(res, "listing projects"); const body = res.body as { wallet: string; projects: Array<{ id: string; name: string; tier: string; status: string; api_calls: number; storage_bytes: number; lease_expires_at: string; created_at: string; }>; }; if (body.projects.length === 0) { return { content: [ { type: "text", text: `## Projects for ${wallet}\n\n_No active projects found._`, }, ], }; } const lines = [ `## Projects for ${wallet} (${body.projects.length})`, ``, `| ID | Name | Tier | Status | Expires |`, `|----|------|------|--------|---------|`, ]; for (const p of body.projects) { lines.push( `| \`${p.id}\` | ${p.name} | ${p.tier} | ${p.status} | ${p.lease_expires_at} |`, ); } return { content: [{ type: "text", text: lines.join("\n") }] }; } - src/tools/list-projects.ts:5-9 (schema)Input schema definition using Zod that validates the wallet parameter as a required string (expects 0x... format).
export const listProjectsSchema = { wallet: z .string() .describe("Wallet address (0x...) to list projects for"), }; - src/index.ts:296-301 (registration)Tool registration with MCP server defining the tool name as 'list_projects', description, schema, and async handler wrapper.
server.tool( "list_projects", "List all active projects for a wallet address.", listProjectsSchema, async (args) => handleListProjects(args), );