get-audience-insights
Retrieve detailed audience insights by ID to analyze demographics, behavior, psychographics, and socioeconomic attributes for targeted marketing strategies.
Instructions
Retrieves aggregated insights for a given audience ID, providing statistical distributions across various attributes. Available insights include demographics (e.g., gender, age, country), behavioral traits (e.g., active hours, platform usage), psychographics (e.g., personality traits, interests), and socioeconomic factors (e.g., income, education status).
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| audience_insights_id | Yes | The ID of the audience insights. | |
| insights | No | Optional list of insight names to filter. |
Implementation Reference
- src/index.ts:106-137 (handler)MCP tool handler function for 'get-audience-insights' that calls the API client and formats the response as markdown text.async ({ audience_insights_id, insights }) => { const data = await getAudienceInsights(audience_insights_id, insights); if (!data || !data.insights.length) { return { content: [ { type: "text", text: `No insights found for audience ${audience_insights_id}.`, }, ], }; } const insightsText = data.insights .map( (insight) => `**${insight.name}**:\n${insight.values .map((val) => `- ${val.key}: ${val.value}%`) .join("\n")}` ) .join("\n\n"); return { content: [ { type: "text", text: `Audience Insights for ${audience_insights_id}:\n\n${insightsText}`, }, ], }; }
- src/index.ts:102-105 (schema)Input schema for the 'get-audience-insights' tool using Zod validation.{ audience_insights_id: z.string().describe("The ID of the audience insights."), insights: z.array(z.string()).optional().describe("Optional list of insight names to filter."), },
- src/index.ts:98-138 (registration)Registration of the 'get-audience-insights' tool on the MCP server.server.tool( "get-audience-insights", `Retrieves aggregated insights for a given audience ID, providing statistical distributions across various attributes. Available insights include demographics (e.g., gender, age, country), behavioral traits (e.g., active hours, platform usage), psychographics (e.g., personality traits, interests), and socioeconomic factors (e.g., income, education status).`, { audience_insights_id: z.string().describe("The ID of the audience insights."), insights: z.array(z.string()).optional().describe("Optional list of insight names to filter."), }, async ({ audience_insights_id, insights }) => { const data = await getAudienceInsights(audience_insights_id, insights); if (!data || !data.insights.length) { return { content: [ { type: "text", text: `No insights found for audience ${audience_insights_id}.`, }, ], }; } const insightsText = data.insights .map( (insight) => `**${insight.name}**:\n${insight.values .map((val) => `- ${val.key}: ${val.value}%`) .join("\n")}` ) .join("\n\n"); return { content: [ { type: "text", text: `Audience Insights for ${audience_insights_id}:\n\n${insightsText}`, }, ], }; } );
- src/audienseClient.ts:101-109 (helper)Helper function that performs the actual API request to fetch audience insights from Audiense API.export async function getAudienceInsights( audience_insights_id: string, insights?: string[] ): Promise<{ insights: { name: string; values: { key: string; value: string }[] }[] } | null> { const queryParams = insights ? `?insights=${insights.join(",")}` : ""; return makeAudienseRequest<{ insights: { name: string; values: { key: string; value: string }[] }[] }>( `/audience_insights/${audience_insights_id}${queryParams}` ); }