Get Business Info
get_business_infoRetrieve business details—strategy, personas, marketing—for Codaissance or TamperTantrum Labs.
Instructions
Get business information for Codaissance or TamperTantrum Labs including strategy, personas, and marketing
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| business | Yes | Which business to get info for | |
| include | No | Which data to include (defaults to all) |
Output Schema
| Name | Required | Description | Default |
|---|---|---|---|
| content | Yes |
Implementation Reference
- api/mcp.ts:336-377 (registration)Registration of the 'get_business_info' tool with MCP server, defining input schema (business enum, include array) and output schema.
server.registerTool( "get_business_info", { title: "Get Business Info", description: "Get business information for Codaissance or TamperTantrum Labs including strategy, personas, and marketing", inputSchema: { business: z.enum(["codaissance", "tampertantrum-labs"]).describe("Which business to get info for"), include: z.array(z.enum(["strategy", "personas", "marketing"])).optional().describe("Which data to include (defaults to all)"), }, outputSchema: textContentOutputSchema, }, async ({ business, include }) => { const includeAll = !include || include.length === 0; const result: Record<string, unknown> = { business }; if (includeAll || include?.includes("strategy")) { try { const strategy = await readJsonFile<BusinessStrategy>(`business/${business}/strategy.json`); result.strategy = strategy; } catch { // File may not exist } } if (includeAll || include?.includes("personas")) { try { const personas = await readJsonFile<PersonasData>(`business/${business}/personas.json`); result.personas = personas; } catch { // File may not exist } } if (includeAll || include?.includes("marketing")) { try { const marketing = await readJsonFile<MarketingData>(`business/${business}/marketing.json`); result.marketing = marketing; } catch { // File may not exist } } return { content: [{ type: "text", text: JSON.stringify(result, null, 2) }] }; } ); - api/mcp.ts:347-376 (handler)Handler function that fetches business strategy, personas, and marketing data from GitHub JSON files based on the 'include' parameter (defaults to all).
async ({ business, include }) => { const includeAll = !include || include.length === 0; const result: Record<string, unknown> = { business }; if (includeAll || include?.includes("strategy")) { try { const strategy = await readJsonFile<BusinessStrategy>(`business/${business}/strategy.json`); result.strategy = strategy; } catch { // File may not exist } } if (includeAll || include?.includes("personas")) { try { const personas = await readJsonFile<PersonasData>(`business/${business}/personas.json`); result.personas = personas; } catch { // File may not exist } } if (includeAll || include?.includes("marketing")) { try { const marketing = await readJsonFile<MarketingData>(`business/${business}/marketing.json`); result.marketing = marketing; } catch { // File may not exist } } return { content: [{ type: "text", text: JSON.stringify(result, null, 2) }] }; } - src/types.ts:204-217 (schema)TypeScript interface for BusinessStrategy data shape.
export interface BusinessStrategy { business_type: string; founded: string; status: string; website: string; problem_statement: string; solution_statement: string; mission_statement: string; positioning: BusinessPositioning; business_model: BusinessModel; competitive_landscape: CompetitiveLandscape; products: BusinessProducts; key_insights: string[]; } - src/types.ts:250-261 (schema)TypeScript interface for PersonasData (persona/anti-persona data shape).
export interface PersonasData { note?: string; primary: Persona; secondary: Persona; tertiary: Persona; quaternary: Persona; anti_personas: AntiPersona[]; shared_values: { they_believe: string[]; they_respond_to: string[]; }; } - src/types.ts:279-287 (schema)TypeScript interface for MarketingData (content strategy, channels, campaigns).
export interface MarketingData { content_strategy: { pillars: ContentPillar[]; content_by_persona: Record<string, string[]>; }; channels: MarketingChannel[]; campaigns: unknown[]; metrics_to_track: string[]; }