backlink_summary
Get a backlink profile summary for any domain, including total backlinks, referring domains, spam score, and a breakdown of backlink types.
Instructions
Get backlink profile summary for a domain. Returns total backlinks, referring domains, spam score, and backlink type breakdown. Costs 5 credits.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| domain | Yes | Domain to analyze (e.g. "example.com") |
Implementation Reference
- src/tools/backlinks.ts:19-22 (handler)The handler function for backlink_summary tool. Calls /v1/backlinks/summary API with the provided domain and formats the result.
withErrorHandling(async ({ domain }) => { const result = await callApi("/v1/backlinks/summary", { domain }, getAuth()); return { content: [{ type: "text" as const, text: formatResult(result.data, result) }] }; }) - src/tools/backlinks.ts:15-17 (schema)Zod schema for backlink_summary: requires a single 'domain' string parameter.
{ domain: z.string().min(1).describe('Domain to analyze (e.g. "example.com")'), }, - src/tools/backlinks.ts:11-23 (registration)Registration of 'backlink_summary' via server.tool() inside registerBacklinkTools().
export function registerBacklinkTools(server: McpServer, getAuth: () => string) { server.tool( "backlink_summary", "Get backlink profile summary for a domain. Returns total backlinks, referring domains, spam score, and backlink type breakdown. Costs 5 credits.", { domain: z.string().min(1).describe('Domain to analyze (e.g. "example.com")'), }, READ_ONLY, withErrorHandling(async ({ domain }) => { const result = await callApi("/v1/backlinks/summary", { domain }, getAuth()); return { content: [{ type: "text" as const, text: formatResult(result.data, result) }] }; }) ); - src/server.ts:43-43 (registration)Server registration call that wires up registerBacklinkTools into the MCP server.
registerBacklinkTools(server, getAuth); - src/api-client.ts:132-158 (helper)formatResult helper used by the handler to format the API response into a text string.
export function formatResult( data: unknown, meta: { credits_used: number; credits_remaining: number; cached: boolean } ): string { const metaLine = `[${meta.credits_used} credit${meta.credits_used !== 1 ? "s" : ""} used | ${meta.credits_remaining} remaining${meta.cached ? " | cached" : ""}]`; return `${metaLine}\n\n${JSON.stringify(data, null, 2)}`; } type ToolResult = { content: { type: "text"; text: string }[]; isError?: boolean }; /** Wrap an MCP tool handler so thrown errors always surface as MCP error content */ export function withErrorHandling<T>( fn: (args: T) => Promise<ToolResult> ): (args: T) => Promise<ToolResult> { return async (args) => { try { return await fn(args); } catch (err) { const message = err instanceof Error ? err.message : String(err); console.error(`[mcp] Tool error: ${message}`); return { content: [{ type: "text" as const, text: `Error: ${message}` }], isError: true, }; } }; }