dataforseo-mcp-server
Version:
A Model Context Protocol (MCP) server for the DataForSEO API, enabling modular and extensible integration of DataForSEO endpoints with support for both HTTP and SSE transports.
70 lines (67 loc) • 2.95 kB
JavaScript
import { z } from 'zod';
import { BaseTool } from '../../base.tool.js';
export class BacklinksTimeseriesSummaryTool extends BaseTool {
client;
constructor(client) {
super(client);
this.client = client;
}
getName() {
return 'backlinks_timeseries_summary';
}
getDescription() {
return `This endpoint will provide you with an overview of backlink data for the target domain available during a period between the two indicated dates. Backlink metrics will be grouped by the time range that you define: day, week, month, or year.
Data from this endpoint will be especially helpful for building time-series graphs of daily, weekly, monthly, and yearly link-building progress`;
}
getParams() {
return {
target: z.string().describe(`domain to get data for
required field
a domain should be specified without https:// and www.
example:
"forbes.com"`),
date_from: z.string().describe(`starting date of the time range
optional field
this field indicates the date which will be used as a threshold for summary data;
minimum value: 2019-01-30
maximum value shouldn’t exceed the date specified in the date_to
date format: "yyyy-mm-dd"
example:
"2021-01-01"`).optional(),
date_to: z.string().describe(`ending date of the time range
optional field
if you don’t specify this field, the today’s date will be used by default
minimum value shouldn’t preceed the date specified in the date_from
maximum value: today’s date
date format: "yyyy-mm-dd"
example:
"2021-01-15"`).optional(),
group_range: z.string().optional().describe(`time range which will be used to group the results
optional field
default value: month
possible values: day, week, month, year
note: for day, we will return items corresponding to all dates between and including date_from and date_to;
for week/month/year, we will return items corresponding to full weeks/months/years, where each item will indicate the last day of the week/month/year
for example, if you specify:
"group_range": "month",
"date_from": "2022-03-23",
"date_to": "2022-05-13"
we will return items falling between 2022-03-01 and 2022-05-31, namely, three items corresponding to the following dates: 2022-03-31, 2022-04-30, 2022-05-31
if there is no data for a certain day/week/month/year, we will return 0`).default('month')
};
}
async handle(params) {
try {
const response = await this.client.makeRequest('/v3/backlinks/timeseries_summary/live', 'POST', [{
target: params.target,
date_from: params.date_from,
date_to: params.date_to,
group_range: params.group_range
}]);
return this.validateAndFormatResponse(response);
}
catch (error) {
return this.formatErrorResponse(error);
}
}
}