sodax_get_partner_summary
Summarize volume and activity for a partner based on receiver address. Supports filtering by chain ID and format selection.
Instructions
Get volume and activity summary for a specific integration partner by their receiver address
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| receiver | Yes | The partner receiver address | |
| chainId | No | Filter by chain ID | |
| format | No | Response format: 'json' for raw data or 'markdown' for formatted text | markdown |
Implementation Reference
- src/services/sodaxApi.ts:600-616 (handler)The actual API handler that fetches partner summary from /partners/:receiver/summary endpoint. Returns null on 404, otherwise throws on error.
export async function getPartnerSummary(receiver: string, chainId?: string): Promise<unknown> { try { const params = new URLSearchParams(); if (chainId) params.append("chainId", chainId); const queryString = params.toString(); const url = `/partners/${receiver}/summary${queryString ? `?${queryString}` : ""}`; const response = await apiClient.get(url); return response.data; } catch (error) { if (axios.isAxiosError(error) && error.response?.status === 404) { return null; } console.error("Error fetching partner summary:", error); throw new Error("Failed to fetch partner summary from SODAX API"); } } - src/tools/sodaxApi.ts:906-940 (handler)MCP tool registration for 'sodax_get_partner_summary'. Defines the tool schema (receiver, chainId, format) and calls getPartnerSummary service, then formats the response as markdown.
// Tool 25: Get Partner Summary server.tool( "sodax_get_partner_summary", "Get volume and activity summary for a specific integration partner by their receiver address", { receiver: z.string() .describe("The partner receiver address"), chainId: z.string().optional() .describe("Filter by chain ID"), format: z.nativeEnum(ResponseFormat).optional().default(ResponseFormat.MARKDOWN) .describe("Response format: 'json' for raw data or 'markdown' for formatted text") }, READ_ONLY, async ({ receiver, chainId, format }) => { try { const summary = await getPartnerSummary(receiver, chainId); if (!summary) { return { content: [{ type: "text", text: `Partner not found: ${receiver}` }] }; } return { content: [{ type: "text", text: `## Partner Summary\n\n` + formatResponse(summary, format) }] }; } catch (error) { return { content: [{ type: "text", text: `Error: ${error instanceof Error ? error.message : "Unknown error"}` }], isError: true }; } } ); - API drift check contract for sodax_get_partner_summary: maps to GET /partners/:receiver/summary with params [receiver, chainId], required [receiver], and expected response fields.
"GET /partners/:receiver/summary": { tool: "sodax_get_partner_summary", params: ["receiver", "chainId"], requiredParams: ["receiver"], responseFields: ["receiver", "chainId", "feeByInputToken", "volumeByOutputToken"], - src/index.ts:44-48 (registration)Tool registration is triggered by registerSodaxApiTools(server) in the main server setup.
registerSodaxApiTools(server); await registerGitBookProxyTools(server); return server; } - src/services/analytics.ts:60-60 (helper)Analytics tool group mapping: sodax_get_partner_summary is categorized as 'api' for PostHog tracking.
sodax_get_partner_summary: "api",