@frase/mcp-server 0.1.6 → 0.1.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +33 -7
- package/dist/api-client.js +1 -1
- package/dist/api-client.js.map +1 -1
- package/dist/formatter.d.ts.map +1 -1
- package/dist/formatter.js +5 -0
- package/dist/formatter.js.map +1 -1
- package/dist/tools/competitive-analysis.d.ts +21 -0
- package/dist/tools/competitive-analysis.d.ts.map +1 -0
- package/dist/tools/competitive-analysis.js +453 -0
- package/dist/tools/competitive-analysis.js.map +1 -0
- package/dist/tools/index.d.ts.map +1 -1
- package/dist/tools/index.js +5 -0
- package/dist/tools/index.js.map +1 -1
- package/dist/types.d.ts +12 -0
- package/dist/types.d.ts.map +1 -1
- package/package.json +5 -3
package/README.md
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
[](https://www.npmjs.com/package/@frase/mcp-server)
|
|
4
4
|
[](https://opensource.org/licenses/MIT)
|
|
5
5
|
|
|
6
|
-
Use Claude
|
|
6
|
+
Use Claude to interact with your Frase account. This MCP (Model Context Protocol) server exposes Frase's API as tools that Claude can use to help you with SEO/GEO content creation, research, optimization, AI Visibility tracking, and much more. Works with both Claude Desktop and Claude Code.
|
|
7
7
|
|
|
8
8
|
## What is MCP?
|
|
9
9
|
|
|
@@ -11,11 +11,31 @@ Use Claude Desktop to interact with your Frase account. This MCP (Model Context
|
|
|
11
11
|
|
|
12
12
|
## Quick Start
|
|
13
13
|
|
|
14
|
-
###
|
|
14
|
+
### Option A: One-Click Install (Desktop Extension)
|
|
15
15
|
|
|
16
|
-
|
|
16
|
+
1. Download the latest `frase-x.x.x.mcpb` file from [Releases](https://github.com/frase-io/frase/releases)
|
|
17
|
+
2. Open Claude Desktop and go to **Settings**
|
|
18
|
+
3. Drag the `.mcpb` file into the Settings window (or use **Install Extension**)
|
|
19
|
+
4. Enter your Frase API key when prompted (get it from [Frase Settings](https://next.frase.io/settings/api))
|
|
20
|
+
5. Done — Claude can now access your Frase account
|
|
17
21
|
|
|
18
|
-
###
|
|
22
|
+
### Option B: Claude Code (CLI)
|
|
23
|
+
|
|
24
|
+
Add the Frase MCP server to Claude Code with a single command:
|
|
25
|
+
|
|
26
|
+
```bash
|
|
27
|
+
claude mcp add frase -- npx -y @frase/mcp-server --api-key sk_live_your_api_key_here
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
Claude Code will automatically start the server when needed.
|
|
31
|
+
|
|
32
|
+
### Option C: Manual Setup (npx)
|
|
33
|
+
|
|
34
|
+
#### 1. Get your API key
|
|
35
|
+
|
|
36
|
+
Get your API key from [Frase Settings](https://next.frase.io/settings/api).
|
|
37
|
+
|
|
38
|
+
#### 2. Configure Claude Desktop
|
|
19
39
|
|
|
20
40
|
Add this to your Claude Desktop config file:
|
|
21
41
|
|
|
@@ -36,7 +56,7 @@ Add this to your Claude Desktop config file:
|
|
|
36
56
|
}
|
|
37
57
|
```
|
|
38
58
|
|
|
39
|
-
|
|
59
|
+
#### 3. Restart Claude Desktop
|
|
40
60
|
|
|
41
61
|
After saving the config, restart Claude Desktop. You should see "frase" in the MCP servers list.
|
|
42
62
|
|
|
@@ -179,7 +199,7 @@ I'll check on the progress...
|
|
|
179
199
|
|
|
180
200
|
## MCP Resources
|
|
181
201
|
|
|
182
|
-
Browse your Frase data directly in Claude
|
|
202
|
+
Browse your Frase data directly in Claude:
|
|
183
203
|
|
|
184
204
|
- `frase://sites` - List all your sites
|
|
185
205
|
- `frase://sites/{id}` - View individual site details
|
|
@@ -219,6 +239,12 @@ Pre-built workflows for common SEO tasks:
|
|
|
219
239
|
|
|
220
240
|
3. Restart Claude Desktop completely (quit and reopen)
|
|
221
241
|
|
|
242
|
+
### Server not working in Claude Code
|
|
243
|
+
|
|
244
|
+
1. Verify the server is registered: `claude mcp list`
|
|
245
|
+
2. Check server status: `claude mcp status frase`
|
|
246
|
+
3. Remove and re-add if needed: `claude mcp remove frase`
|
|
247
|
+
|
|
222
248
|
### Authentication errors
|
|
223
249
|
|
|
224
250
|
- Verify your API key is correct
|
|
@@ -232,7 +258,7 @@ The server automatically retries on rate limits with exponential backoff. If you
|
|
|
232
258
|
## Support
|
|
233
259
|
|
|
234
260
|
- [Frase Documentation](https://docs.frase.io)
|
|
235
|
-
- [API Documentation](https://
|
|
261
|
+
- [API Documentation](https://next.frase.io/api/docs)
|
|
236
262
|
- [GitHub Issues](https://github.com/frase-io/frase/issues)
|
|
237
263
|
|
|
238
264
|
## License
|
package/dist/api-client.js
CHANGED
package/dist/api-client.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api-client.js","sourceRoot":"","sources":["../src/api-client.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"api-client.js","sourceRoot":"","sources":["../src/api-client.ts"],"names":[],"mappings":"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"}
|
package/dist/formatter.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"formatter.d.ts","sourceRoot":"","sources":["../src/formatter.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH;;GAEG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,GAAG,MAAM,CAOtD;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,MAAM,
|
|
1
|
+
{"version":3,"file":"formatter.d.ts","sourceRoot":"","sources":["../src/formatter.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH;;GAEG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,GAAG,MAAM,CAOtD;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,MAAM,CAkCtE;AAED;;GAEG;AACH,wBAAgB,WAAW,CACzB,OAAO,EAAE,MAAM,EAAE,EACjB,IAAI,EAAE,MAAM,EAAE,EAAE,EAChB,OAAO,CAAC,EAAE;IAAE,KAAK,CAAC,EAAE,CAAC,MAAM,GAAG,QAAQ,GAAG,OAAO,CAAC,EAAE,CAAA;CAAE,GACpD,MAAM,CAiCR;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,UAAU,EAAE;IAC3C,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,OAAO,CAAC;CACnB,GAAG,MAAM,CAYT;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAEpE;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,KAAK,GAAG,MAAM,GAAG,MAAM,CAGzD;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,IAAI,GAAG,SAAS,CAAC,GAAG,MAAM,CAa1G;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,MAAM,CAUxE;AAED;;GAEG;AACH,wBAAgB,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,CAOnF"}
|
package/dist/formatter.js
CHANGED
|
@@ -37,6 +37,11 @@ export function formatStatus(status) {
|
|
|
37
37
|
// Audit statuses
|
|
38
38
|
crawling: "🕷️",
|
|
39
39
|
analyzing: "🔍",
|
|
40
|
+
// Competitive analysis statuses
|
|
41
|
+
crawling_page: "🕷️",
|
|
42
|
+
fetching_rankings: "📊",
|
|
43
|
+
analyzing_competitors: "⚔️",
|
|
44
|
+
generating_report: "📝",
|
|
40
45
|
};
|
|
41
46
|
const emoji = statusEmojis[status.toLowerCase()] || "•";
|
|
42
47
|
return `${emoji} ${status}`;
|
package/dist/formatter.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"formatter.js","sourceRoot":"","sources":["../src/formatter.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH;;GAEG;AACH,MAAM,UAAU,UAAU,CAAC,IAAmB;IAC5C,MAAM,CAAC,GAAG,OAAO,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAC3D,OAAO,CAAC,CAAC,kBAAkB,CAAC,OAAO,EAAE;QACnC,KAAK,EAAE,OAAO;QACd,GAAG,EAAE,SAAS;QACd,IAAI,EAAE,SAAS;KAChB,CAAC,CAAC;AACL,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,YAAY,CAAC,MAAiC;IAC5D,IAAI,CAAC,MAAM;QAAE,OAAO,WAAW,CAAC;IAChC,MAAM,YAAY,GAA2B;QAC3C,mBAAmB;QACnB,KAAK,EAAE,IAAI;QACX,UAAU,EAAE,IAAI;QAChB,MAAM,EAAE,IAAI;QACZ,SAAS,EAAE,GAAG;QACd,QAAQ,EAAE,IAAI;QAEd,iBAAiB;QACjB,OAAO,EAAE,GAAG;QACZ,QAAQ,EAAE,IAAI;QACd,KAAK,EAAE,GAAG;QACV,SAAS,EAAE,GAAG;QAEd,eAAe;QACf,OAAO,EAAE,IAAI;QACb,MAAM,EAAE,GAAG;QACX,OAAO,EAAE,GAAG;QAEZ,iBAAiB;QACjB,QAAQ,EAAE,KAAK;QACf,SAAS,EAAE,IAAI;
|
|
1
|
+
{"version":3,"file":"formatter.js","sourceRoot":"","sources":["../src/formatter.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Competitive Analysis tools
|
|
3
|
+
*
|
|
4
|
+
* Analyze pages against competitors to find optimization opportunities
|
|
5
|
+
*/
|
|
6
|
+
import type { McpToolDefinition, ToolContext, ToolResult } from "../types.js";
|
|
7
|
+
export declare const listCompetitiveAnalysesTool: McpToolDefinition;
|
|
8
|
+
export declare function executeListCompetitiveAnalyses(input: unknown, context: ToolContext): Promise<ToolResult>;
|
|
9
|
+
export declare const startCompetitiveAnalysisTool: McpToolDefinition;
|
|
10
|
+
export declare function executeStartCompetitiveAnalysis(input: unknown, context: ToolContext): Promise<ToolResult>;
|
|
11
|
+
export declare const getCompetitiveAnalysisTool: McpToolDefinition;
|
|
12
|
+
export declare function executeGetCompetitiveAnalysis(input: unknown, context: ToolContext): Promise<ToolResult>;
|
|
13
|
+
export declare const generateBriefFromAnalysisTool: McpToolDefinition;
|
|
14
|
+
export declare function executeGenerateBriefFromAnalysis(input: unknown, context: ToolContext): Promise<ToolResult>;
|
|
15
|
+
export declare const deleteCompetitiveAnalysisTool: McpToolDefinition;
|
|
16
|
+
export declare function executeDeleteCompetitiveAnalysis(input: unknown, context: ToolContext): Promise<ToolResult>;
|
|
17
|
+
export declare const searchLocationsTool: McpToolDefinition;
|
|
18
|
+
export declare function executeSearchLocations(input: unknown, context: ToolContext): Promise<ToolResult>;
|
|
19
|
+
export declare const competitiveAnalysisTools: McpToolDefinition[];
|
|
20
|
+
export declare const competitiveAnalysisExecutors: Record<string, (input: unknown, context: ToolContext) => Promise<ToolResult>>;
|
|
21
|
+
//# sourceMappingURL=competitive-analysis.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"competitive-analysis.d.ts","sourceRoot":"","sources":["../../src/tools/competitive-analysis.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,KAAK,EACV,iBAAiB,EACjB,WAAW,EACX,UAAU,EAGX,MAAM,aAAa,CAAC;AA4ErB,eAAO,MAAM,2BAA2B,EAAE,iBA0BzC,CAAC;AAEF,wBAAsB,8BAA8B,CAClD,KAAK,EAAE,OAAO,EACd,OAAO,EAAE,WAAW,GACnB,OAAO,CAAC,UAAU,CAAC,CA+CrB;AAcD,eAAO,MAAM,4BAA4B,EAAE,iBA+B1C,CAAC;AAEF,wBAAsB,+BAA+B,CACnD,KAAK,EAAE,OAAO,EACd,OAAO,EAAE,WAAW,GACnB,OAAO,CAAC,UAAU,CAAC,CA0CrB;AAUD,eAAO,MAAM,0BAA0B,EAAE,iBAcxC,CAAC;AAEF,wBAAsB,6BAA6B,CACjD,KAAK,EAAE,OAAO,EACd,OAAO,EAAE,WAAW,GACnB,OAAO,CAAC,UAAU,CAAC,CA+GrB;AAUD,eAAO,MAAM,6BAA6B,EAAE,iBAc3C,CAAC;AAEF,wBAAsB,gCAAgC,CACpD,KAAK,EAAE,OAAO,EACd,OAAO,EAAE,WAAW,GACnB,OAAO,CAAC,UAAU,CAAC,CAkCrB;AAUD,eAAO,MAAM,6BAA6B,EAAE,iBAa3C,CAAC;AAEF,wBAAsB,gCAAgC,CACpD,KAAK,EAAE,OAAO,EACd,OAAO,EAAE,WAAW,GACnB,OAAO,CAAC,UAAU,CAAC,CAyBrB;AAgBD,eAAO,MAAM,mBAAmB,EAAE,iBAcjC,CAAC;AAEF,wBAAsB,sBAAsB,CAC1C,KAAK,EAAE,OAAO,EACd,OAAO,EAAE,WAAW,GACnB,OAAO,CAAC,UAAU,CAAC,CAiDrB;AAMD,eAAO,MAAM,wBAAwB,EAAE,iBAAiB,EAOvD,CAAC;AAEF,eAAO,MAAM,4BAA4B,EAAE,MAAM,CAC/C,MAAM,EACN,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,WAAW,KAAK,OAAO,CAAC,UAAU,CAAC,CAQ9D,CAAC"}
|
|
@@ -0,0 +1,453 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Competitive Analysis tools
|
|
3
|
+
*
|
|
4
|
+
* Analyze pages against competitors to find optimization opportunities
|
|
5
|
+
*/
|
|
6
|
+
import { z } from "zod";
|
|
7
|
+
import { CACHE_TTL } from "../cache.js";
|
|
8
|
+
import { formatTable, formatStatus, formatDate, formatPagination, formatKeyValue, } from "../formatter.js";
|
|
9
|
+
// ============================================
|
|
10
|
+
// list_competitive_analyses
|
|
11
|
+
// ============================================
|
|
12
|
+
const listCompetitiveAnalysesInputSchema = z.object({
|
|
13
|
+
page: z.number().min(1).optional().default(1),
|
|
14
|
+
page_size: z.number().min(1).max(100).optional().default(20),
|
|
15
|
+
status: z
|
|
16
|
+
.enum(["pending", "crawling_page", "fetching_rankings", "analyzing_competitors", "generating_report", "ready", "failed"])
|
|
17
|
+
.optional(),
|
|
18
|
+
site_id: z.string().optional(),
|
|
19
|
+
});
|
|
20
|
+
export const listCompetitiveAnalysesTool = {
|
|
21
|
+
name: "list_competitive_analyses",
|
|
22
|
+
description: "List competitive page analyses. Each analysis compares your page against competitors to find content gaps and optimization opportunities.",
|
|
23
|
+
inputSchema: {
|
|
24
|
+
type: "object",
|
|
25
|
+
properties: {
|
|
26
|
+
page: {
|
|
27
|
+
type: "number",
|
|
28
|
+
description: "Page number (default: 1)",
|
|
29
|
+
},
|
|
30
|
+
page_size: {
|
|
31
|
+
type: "number",
|
|
32
|
+
description: "Items per page, max 100 (default: 20)",
|
|
33
|
+
},
|
|
34
|
+
status: {
|
|
35
|
+
type: "string",
|
|
36
|
+
enum: ["pending", "crawling_page", "fetching_rankings", "analyzing_competitors", "generating_report", "ready", "failed"],
|
|
37
|
+
description: "Filter by analysis status",
|
|
38
|
+
},
|
|
39
|
+
site_id: {
|
|
40
|
+
type: "string",
|
|
41
|
+
description: "Filter by site ID",
|
|
42
|
+
},
|
|
43
|
+
},
|
|
44
|
+
},
|
|
45
|
+
};
|
|
46
|
+
export async function executeListCompetitiveAnalyses(input, context) {
|
|
47
|
+
const parsed = listCompetitiveAnalysesInputSchema.safeParse(input || {});
|
|
48
|
+
if (!parsed.success) {
|
|
49
|
+
return {
|
|
50
|
+
success: false,
|
|
51
|
+
markdown: `**Error:** Invalid input - ${parsed.error.message}`,
|
|
52
|
+
};
|
|
53
|
+
}
|
|
54
|
+
const { page, page_size, status, site_id } = parsed.data;
|
|
55
|
+
try {
|
|
56
|
+
const params = { page, page_size };
|
|
57
|
+
if (status)
|
|
58
|
+
params.status = status;
|
|
59
|
+
if (site_id)
|
|
60
|
+
params.site_id = site_id;
|
|
61
|
+
const response = await context.client.get("/competitive-analysis", params, CACHE_TTL.lists);
|
|
62
|
+
const analyses = Array.isArray(response.data) ? response.data : [];
|
|
63
|
+
const headers = ["ID", "URL", "Status", "Score", "Created"];
|
|
64
|
+
const rows = analyses.map((a) => [
|
|
65
|
+
a.id,
|
|
66
|
+
a.url.length > 40 ? a.url.slice(0, 40) + "..." : a.url,
|
|
67
|
+
formatStatus(a.status),
|
|
68
|
+
a.opportunity_score !== null ? `${a.opportunity_score}/100` : "-",
|
|
69
|
+
formatDate(a.created_at),
|
|
70
|
+
]);
|
|
71
|
+
const table = formatTable(headers, rows);
|
|
72
|
+
const pagination = response.pagination ? formatPagination(response.pagination) : "";
|
|
73
|
+
return {
|
|
74
|
+
success: true,
|
|
75
|
+
markdown: `## Competitive Analyses (Page ${page})\n\n${table}${pagination}`,
|
|
76
|
+
data: response,
|
|
77
|
+
};
|
|
78
|
+
}
|
|
79
|
+
catch (error) {
|
|
80
|
+
const message = error instanceof Error ? error.message : "Unknown error";
|
|
81
|
+
return {
|
|
82
|
+
success: false,
|
|
83
|
+
markdown: `**Error:** Failed to list competitive analyses - ${message}`,
|
|
84
|
+
};
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
// ============================================
|
|
88
|
+
// start_competitive_analysis
|
|
89
|
+
// ============================================
|
|
90
|
+
const startCompetitiveAnalysisInputSchema = z.object({
|
|
91
|
+
url: z.string().url(),
|
|
92
|
+
competitor_urls: z.array(z.string().url()).max(3).optional(),
|
|
93
|
+
site_id: z.string().optional(),
|
|
94
|
+
location_name: z.string().optional(),
|
|
95
|
+
industry: z.string().optional(),
|
|
96
|
+
});
|
|
97
|
+
export const startCompetitiveAnalysisTool = {
|
|
98
|
+
name: "start_competitive_analysis",
|
|
99
|
+
description: "Start a new competitive page analysis. Analyzes your page against competitors to find content gaps, missing topics, and optimization opportunities. Optionally provide up to 3 competitor URLs for head-to-head comparison. Add location and industry context for localized SERP results and more targeted analysis.",
|
|
100
|
+
inputSchema: {
|
|
101
|
+
type: "object",
|
|
102
|
+
properties: {
|
|
103
|
+
url: {
|
|
104
|
+
type: "string",
|
|
105
|
+
description: "The URL of the page to analyze (required)",
|
|
106
|
+
},
|
|
107
|
+
competitor_urls: {
|
|
108
|
+
type: "array",
|
|
109
|
+
items: { type: "string" },
|
|
110
|
+
description: "Optional array of up to 3 competitor URLs for direct comparison",
|
|
111
|
+
},
|
|
112
|
+
site_id: {
|
|
113
|
+
type: "string",
|
|
114
|
+
description: "Optional site ID if analyzing a page from a tracked site",
|
|
115
|
+
},
|
|
116
|
+
location_name: {
|
|
117
|
+
type: "string",
|
|
118
|
+
description: "Exact DataForSEO location name for localized SERP results (e.g., 'Birmingham,Alabama,United States', 'London,England,United Kingdom')",
|
|
119
|
+
},
|
|
120
|
+
industry: {
|
|
121
|
+
type: "string",
|
|
122
|
+
description: "Industry context for more targeted analysis (e.g., 'SaaS', 'E-commerce', 'Healthcare')",
|
|
123
|
+
},
|
|
124
|
+
},
|
|
125
|
+
required: ["url"],
|
|
126
|
+
},
|
|
127
|
+
};
|
|
128
|
+
export async function executeStartCompetitiveAnalysis(input, context) {
|
|
129
|
+
const parsed = startCompetitiveAnalysisInputSchema.safeParse(input);
|
|
130
|
+
if (!parsed.success) {
|
|
131
|
+
return {
|
|
132
|
+
success: false,
|
|
133
|
+
markdown: `**Error:** Invalid input - ${parsed.error.message}`,
|
|
134
|
+
};
|
|
135
|
+
}
|
|
136
|
+
const { url, competitor_urls, site_id, location_name, industry } = parsed.data;
|
|
137
|
+
try {
|
|
138
|
+
const body = { url };
|
|
139
|
+
if (competitor_urls && competitor_urls.length > 0)
|
|
140
|
+
body.competitor_urls = competitor_urls;
|
|
141
|
+
if (site_id)
|
|
142
|
+
body.site_id = site_id;
|
|
143
|
+
if (location_name)
|
|
144
|
+
body.location_name = location_name;
|
|
145
|
+
if (industry)
|
|
146
|
+
body.industry = industry;
|
|
147
|
+
const response = await context.client.post("/competitive-analysis", body);
|
|
148
|
+
const analysis = response.data;
|
|
149
|
+
const details = formatKeyValue({
|
|
150
|
+
id: analysis.id,
|
|
151
|
+
url: analysis.url,
|
|
152
|
+
status: analysis.status,
|
|
153
|
+
});
|
|
154
|
+
return {
|
|
155
|
+
success: true,
|
|
156
|
+
markdown: `## Competitive Analysis Started\n\n${details}\n\n**Note:** The analysis is now processing. Use \`get_competitive_analysis\` with id \`${analysis.id}\` to check progress and see results when ready.`,
|
|
157
|
+
data: response,
|
|
158
|
+
};
|
|
159
|
+
}
|
|
160
|
+
catch (error) {
|
|
161
|
+
const message = error instanceof Error ? error.message : "Unknown error";
|
|
162
|
+
return {
|
|
163
|
+
success: false,
|
|
164
|
+
markdown: `**Error:** Failed to start competitive analysis - ${message}`,
|
|
165
|
+
};
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
// ============================================
|
|
169
|
+
// get_competitive_analysis
|
|
170
|
+
// ============================================
|
|
171
|
+
const getCompetitiveAnalysisInputSchema = z.object({
|
|
172
|
+
id: z.string().min(1),
|
|
173
|
+
});
|
|
174
|
+
export const getCompetitiveAnalysisTool = {
|
|
175
|
+
name: "get_competitive_analysis",
|
|
176
|
+
description: "Get details of a competitive analysis, including rankings, competitor data, gap analysis, and opportunity score.",
|
|
177
|
+
inputSchema: {
|
|
178
|
+
type: "object",
|
|
179
|
+
properties: {
|
|
180
|
+
id: {
|
|
181
|
+
type: "string",
|
|
182
|
+
description: "The competitive analysis ID (required)",
|
|
183
|
+
},
|
|
184
|
+
},
|
|
185
|
+
required: ["id"],
|
|
186
|
+
},
|
|
187
|
+
};
|
|
188
|
+
export async function executeGetCompetitiveAnalysis(input, context) {
|
|
189
|
+
const parsed = getCompetitiveAnalysisInputSchema.safeParse(input);
|
|
190
|
+
if (!parsed.success) {
|
|
191
|
+
return {
|
|
192
|
+
success: false,
|
|
193
|
+
markdown: `**Error:** Invalid input - ${parsed.error.message}`,
|
|
194
|
+
};
|
|
195
|
+
}
|
|
196
|
+
const { id } = parsed.data;
|
|
197
|
+
try {
|
|
198
|
+
const response = await context.client.get(`/competitive-analysis/${id}`, {}, CACHE_TTL.resources);
|
|
199
|
+
const a = response.data;
|
|
200
|
+
let markdown = `## Competitive Analysis: ${a.url}\n\n`;
|
|
201
|
+
markdown += formatKeyValue({
|
|
202
|
+
id: a.id,
|
|
203
|
+
status: formatStatus(a.status),
|
|
204
|
+
opportunity_score: a.opportunity_score !== null ? `${a.opportunity_score}/100` : "Pending",
|
|
205
|
+
created: formatDate(a.created_at),
|
|
206
|
+
completed: a.completed_at ? formatDate(a.completed_at) : "In progress",
|
|
207
|
+
});
|
|
208
|
+
// Rankings
|
|
209
|
+
if (a.ranking_queries && a.ranking_queries.length > 0) {
|
|
210
|
+
markdown += "\n\n### Top Rankings\n\n";
|
|
211
|
+
const rankHeaders = ["Query", "Position", "Clicks", "Impressions", "CTR"];
|
|
212
|
+
const rankRows = a.ranking_queries.slice(0, 10).map((q) => [
|
|
213
|
+
q.query,
|
|
214
|
+
q.position.toFixed(1),
|
|
215
|
+
q.clicks.toString(),
|
|
216
|
+
q.impressions.toString(),
|
|
217
|
+
`${(q.ctr * 100).toFixed(1)}%`,
|
|
218
|
+
]);
|
|
219
|
+
markdown += formatTable(rankHeaders, rankRows);
|
|
220
|
+
}
|
|
221
|
+
// Competitors
|
|
222
|
+
if (a.competitor_analysis?.competitors && a.competitor_analysis.competitors.length > 0) {
|
|
223
|
+
markdown += "\n\n### Competitors\n\n";
|
|
224
|
+
const compHeaders = ["URL", "Domain", "Word Count"];
|
|
225
|
+
const compRows = a.competitor_analysis.competitors.map((c) => [
|
|
226
|
+
c.url.length > 50 ? c.url.slice(0, 50) + "..." : c.url,
|
|
227
|
+
c.domain,
|
|
228
|
+
c.wordCount.toString(),
|
|
229
|
+
]);
|
|
230
|
+
markdown += formatTable(compHeaders, compRows);
|
|
231
|
+
}
|
|
232
|
+
// Gap Analysis
|
|
233
|
+
if (a.gap_analysis) {
|
|
234
|
+
markdown += "\n\n### Gap Analysis\n\n";
|
|
235
|
+
if (a.gap_analysis.missingTopics && a.gap_analysis.missingTopics.length > 0) {
|
|
236
|
+
markdown += "**Missing Topics:**\n";
|
|
237
|
+
for (const topic of a.gap_analysis.missingTopics) {
|
|
238
|
+
markdown += `- ${topic.topic} (${topic.priority} priority)\n`;
|
|
239
|
+
}
|
|
240
|
+
markdown += "\n";
|
|
241
|
+
}
|
|
242
|
+
if (a.gap_analysis.thinSections && a.gap_analysis.thinSections.length > 0) {
|
|
243
|
+
markdown += "**Thin Sections:**\n";
|
|
244
|
+
for (const section of a.gap_analysis.thinSections) {
|
|
245
|
+
markdown += `- ${section}\n`;
|
|
246
|
+
}
|
|
247
|
+
markdown += "\n";
|
|
248
|
+
}
|
|
249
|
+
if (a.gap_analysis.missingQuestions && a.gap_analysis.missingQuestions.length > 0) {
|
|
250
|
+
markdown += "**Missing Questions:**\n";
|
|
251
|
+
for (const q of a.gap_analysis.missingQuestions) {
|
|
252
|
+
markdown += `- ${q}\n`;
|
|
253
|
+
}
|
|
254
|
+
markdown += "\n";
|
|
255
|
+
}
|
|
256
|
+
if (a.gap_analysis.structuralGaps && a.gap_analysis.structuralGaps.length > 0) {
|
|
257
|
+
markdown += "**Structural Gaps:**\n";
|
|
258
|
+
for (const gap of a.gap_analysis.structuralGaps) {
|
|
259
|
+
markdown += `- ${gap}\n`;
|
|
260
|
+
}
|
|
261
|
+
}
|
|
262
|
+
}
|
|
263
|
+
if (a.status !== "ready" && a.status !== "failed") {
|
|
264
|
+
markdown += "\n\n_Analysis in progress. Check back soon for full results._";
|
|
265
|
+
}
|
|
266
|
+
if (a.generated_brief_id) {
|
|
267
|
+
markdown += `\n\n**Brief generated:** \`${a.generated_brief_id}\``;
|
|
268
|
+
}
|
|
269
|
+
return {
|
|
270
|
+
success: true,
|
|
271
|
+
markdown,
|
|
272
|
+
data: response,
|
|
273
|
+
};
|
|
274
|
+
}
|
|
275
|
+
catch (error) {
|
|
276
|
+
const message = error instanceof Error ? error.message : "Unknown error";
|
|
277
|
+
return {
|
|
278
|
+
success: false,
|
|
279
|
+
markdown: `**Error:** Failed to get competitive analysis - ${message}`,
|
|
280
|
+
};
|
|
281
|
+
}
|
|
282
|
+
}
|
|
283
|
+
// ============================================
|
|
284
|
+
// generate_brief_from_analysis
|
|
285
|
+
// ============================================
|
|
286
|
+
const generateBriefInputSchema = z.object({
|
|
287
|
+
id: z.string().min(1),
|
|
288
|
+
});
|
|
289
|
+
export const generateBriefFromAnalysisTool = {
|
|
290
|
+
name: "generate_brief_from_analysis",
|
|
291
|
+
description: "Generate an optimization brief from a completed competitive analysis. The brief includes missing topics, keyword targets, and structural recommendations.",
|
|
292
|
+
inputSchema: {
|
|
293
|
+
type: "object",
|
|
294
|
+
properties: {
|
|
295
|
+
id: {
|
|
296
|
+
type: "string",
|
|
297
|
+
description: "The competitive analysis ID (required, must be in 'ready' status)",
|
|
298
|
+
},
|
|
299
|
+
},
|
|
300
|
+
required: ["id"],
|
|
301
|
+
},
|
|
302
|
+
};
|
|
303
|
+
export async function executeGenerateBriefFromAnalysis(input, context) {
|
|
304
|
+
const parsed = generateBriefInputSchema.safeParse(input);
|
|
305
|
+
if (!parsed.success) {
|
|
306
|
+
return {
|
|
307
|
+
success: false,
|
|
308
|
+
markdown: `**Error:** Invalid input - ${parsed.error.message}`,
|
|
309
|
+
};
|
|
310
|
+
}
|
|
311
|
+
const { id } = parsed.data;
|
|
312
|
+
try {
|
|
313
|
+
const response = await context.client.post(`/competitive-analysis/${id}/generate-brief`, {});
|
|
314
|
+
const result = response.data;
|
|
315
|
+
return {
|
|
316
|
+
success: true,
|
|
317
|
+
markdown: `## Brief Generated\n\n${formatKeyValue({
|
|
318
|
+
"Brief ID": result.brief_id,
|
|
319
|
+
"Analysis ID": result.analysis_id,
|
|
320
|
+
Topic: result.topic,
|
|
321
|
+
})}\n\n**Note:** Use \`get_brief\` with id \`${result.brief_id}\` to view the full brief.`,
|
|
322
|
+
data: response,
|
|
323
|
+
};
|
|
324
|
+
}
|
|
325
|
+
catch (error) {
|
|
326
|
+
const message = error instanceof Error ? error.message : "Unknown error";
|
|
327
|
+
return {
|
|
328
|
+
success: false,
|
|
329
|
+
markdown: `**Error:** Failed to generate brief - ${message}`,
|
|
330
|
+
};
|
|
331
|
+
}
|
|
332
|
+
}
|
|
333
|
+
// ============================================
|
|
334
|
+
// delete_competitive_analysis
|
|
335
|
+
// ============================================
|
|
336
|
+
const deleteCompetitiveAnalysisInputSchema = z.object({
|
|
337
|
+
id: z.string().min(1),
|
|
338
|
+
});
|
|
339
|
+
export const deleteCompetitiveAnalysisTool = {
|
|
340
|
+
name: "delete_competitive_analysis",
|
|
341
|
+
description: "Delete a competitive analysis.",
|
|
342
|
+
inputSchema: {
|
|
343
|
+
type: "object",
|
|
344
|
+
properties: {
|
|
345
|
+
id: {
|
|
346
|
+
type: "string",
|
|
347
|
+
description: "The competitive analysis ID (required)",
|
|
348
|
+
},
|
|
349
|
+
},
|
|
350
|
+
required: ["id"],
|
|
351
|
+
},
|
|
352
|
+
};
|
|
353
|
+
export async function executeDeleteCompetitiveAnalysis(input, context) {
|
|
354
|
+
const parsed = deleteCompetitiveAnalysisInputSchema.safeParse(input);
|
|
355
|
+
if (!parsed.success) {
|
|
356
|
+
return {
|
|
357
|
+
success: false,
|
|
358
|
+
markdown: `**Error:** Invalid input - ${parsed.error.message}`,
|
|
359
|
+
};
|
|
360
|
+
}
|
|
361
|
+
const { id } = parsed.data;
|
|
362
|
+
try {
|
|
363
|
+
await context.client.delete(`/competitive-analysis/${id}`);
|
|
364
|
+
return {
|
|
365
|
+
success: true,
|
|
366
|
+
markdown: `## Competitive Analysis Deleted\n\n${formatKeyValue({ ID: id, Status: "Deleted" })}`,
|
|
367
|
+
};
|
|
368
|
+
}
|
|
369
|
+
catch (error) {
|
|
370
|
+
const message = error instanceof Error ? error.message : "Unknown error";
|
|
371
|
+
return {
|
|
372
|
+
success: false,
|
|
373
|
+
markdown: `**Error:** Failed to delete competitive analysis - ${message}`,
|
|
374
|
+
};
|
|
375
|
+
}
|
|
376
|
+
}
|
|
377
|
+
const searchLocationsInputSchema = z.object({
|
|
378
|
+
q: z.string().min(2),
|
|
379
|
+
});
|
|
380
|
+
export const searchLocationsTool = {
|
|
381
|
+
name: "search_locations",
|
|
382
|
+
description: "Search for valid DataForSEO location names for use with start_competitive_analysis. Type a city or region name to find the exact location_name value. Tip: append a 2-letter country code after a comma to narrow results (e.g., 'Birm, US').",
|
|
383
|
+
inputSchema: {
|
|
384
|
+
type: "object",
|
|
385
|
+
properties: {
|
|
386
|
+
q: {
|
|
387
|
+
type: "string",
|
|
388
|
+
description: "Search query, at least 2 characters (e.g., 'Birmingham', 'London, GB', 'Abuja, NG')",
|
|
389
|
+
},
|
|
390
|
+
},
|
|
391
|
+
required: ["q"],
|
|
392
|
+
},
|
|
393
|
+
};
|
|
394
|
+
export async function executeSearchLocations(input, context) {
|
|
395
|
+
const parsed = searchLocationsInputSchema.safeParse(input);
|
|
396
|
+
if (!parsed.success) {
|
|
397
|
+
return {
|
|
398
|
+
success: false,
|
|
399
|
+
markdown: `**Error:** Invalid input - query must be at least 2 characters`,
|
|
400
|
+
};
|
|
401
|
+
}
|
|
402
|
+
const { q } = parsed.data;
|
|
403
|
+
try {
|
|
404
|
+
const response = await context.client.get("/competitive-analysis/locations", { q }, CACHE_TTL.resources);
|
|
405
|
+
const locations = response.data?.locations || [];
|
|
406
|
+
if (locations.length === 0) {
|
|
407
|
+
return {
|
|
408
|
+
success: true,
|
|
409
|
+
markdown: `## Location Search: "${q}"\n\nNo matching locations found. Try a different search term or add a country code (e.g., "London, GB").`,
|
|
410
|
+
data: response,
|
|
411
|
+
};
|
|
412
|
+
}
|
|
413
|
+
const headers = ["Location Name", "Type", "Code"];
|
|
414
|
+
const rows = locations.map((loc) => [
|
|
415
|
+
loc.location_name,
|
|
416
|
+
loc.location_type,
|
|
417
|
+
loc.location_code.toString(),
|
|
418
|
+
]);
|
|
419
|
+
const table = formatTable(headers, rows);
|
|
420
|
+
return {
|
|
421
|
+
success: true,
|
|
422
|
+
markdown: `## Location Search: "${q}"\n\n${table}\n\n**Usage:** Pass the exact \`location_name\` value to \`start_competitive_analysis\`.`,
|
|
423
|
+
data: response,
|
|
424
|
+
};
|
|
425
|
+
}
|
|
426
|
+
catch (error) {
|
|
427
|
+
const message = error instanceof Error ? error.message : "Unknown error";
|
|
428
|
+
return {
|
|
429
|
+
success: false,
|
|
430
|
+
markdown: `**Error:** Failed to search locations - ${message}`,
|
|
431
|
+
};
|
|
432
|
+
}
|
|
433
|
+
}
|
|
434
|
+
// ============================================
|
|
435
|
+
// Export all
|
|
436
|
+
// ============================================
|
|
437
|
+
export const competitiveAnalysisTools = [
|
|
438
|
+
listCompetitiveAnalysesTool,
|
|
439
|
+
startCompetitiveAnalysisTool,
|
|
440
|
+
getCompetitiveAnalysisTool,
|
|
441
|
+
generateBriefFromAnalysisTool,
|
|
442
|
+
deleteCompetitiveAnalysisTool,
|
|
443
|
+
searchLocationsTool,
|
|
444
|
+
];
|
|
445
|
+
export const competitiveAnalysisExecutors = {
|
|
446
|
+
list_competitive_analyses: executeListCompetitiveAnalyses,
|
|
447
|
+
start_competitive_analysis: executeStartCompetitiveAnalysis,
|
|
448
|
+
get_competitive_analysis: executeGetCompetitiveAnalysis,
|
|
449
|
+
generate_brief_from_analysis: executeGenerateBriefFromAnalysis,
|
|
450
|
+
delete_competitive_analysis: executeDeleteCompetitiveAnalysis,
|
|
451
|
+
search_locations: executeSearchLocations,
|
|
452
|
+
};
|
|
453
|
+
//# sourceMappingURL=competitive-analysis.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"competitive-analysis.js","sourceRoot":"","sources":["../../src/tools/competitive-analysis.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,iBAAiB,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,iBAAiB,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAsB9E;;GAEG;AACH,eAAO,MAAM,SAAS,EAAE,iBAAiB,EAoCxC,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,cAAc,EAAE,MAAM,CACjC,MAAM,EACN,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,WAAW,KAAK,OAAO,CAAC,UAAU,CAAC,CAqC9D,CAAC;AAEF;;GAEG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,iBAAiB,GAAG,SAAS,CAEzE;AAED;;GAEG;AACH,wBAAgB,eAAe,CAC7B,IAAI,EAAE,MAAM,GACX,CAAC,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,WAAW,KAAK,OAAO,CAAC,UAAU,CAAC,CAAC,GAAG,SAAS,CAE7E;AAED;;GAEG;AACH,wBAAgB,YAAY,IAAI,MAAM,CAErC"}
|
package/dist/tools/index.js
CHANGED
|
@@ -18,6 +18,7 @@ import { aiVisibilityTools, aiVisibilityExecutors } from "./ai-visibility.js";
|
|
|
18
18
|
import { analyticsTools, analyticsExecutors } from "./analytics.js";
|
|
19
19
|
import { optimizationTools, optimizationExecutors } from "./optimizations.js";
|
|
20
20
|
import { webhookTools, webhookExecutors } from "./webhooks.js";
|
|
21
|
+
import { competitiveAnalysisTools, competitiveAnalysisExecutors } from "./competitive-analysis.js";
|
|
21
22
|
// ============================================
|
|
22
23
|
// Tool Registry
|
|
23
24
|
// ============================================
|
|
@@ -47,6 +48,8 @@ export const ALL_TOOLS = [
|
|
|
47
48
|
...optimizationTools,
|
|
48
49
|
// Webhooks (Phase 3)
|
|
49
50
|
...webhookTools,
|
|
51
|
+
// Competitive Analysis (Phase 3)
|
|
52
|
+
...competitiveAnalysisTools,
|
|
50
53
|
];
|
|
51
54
|
/**
|
|
52
55
|
* Tool executor mapping
|
|
@@ -74,6 +77,8 @@ export const TOOL_EXECUTORS = {
|
|
|
74
77
|
...optimizationExecutors,
|
|
75
78
|
// Webhooks (Phase 3)
|
|
76
79
|
...webhookExecutors,
|
|
80
|
+
// Competitive Analysis (Phase 3)
|
|
81
|
+
...competitiveAnalysisExecutors,
|
|
77
82
|
};
|
|
78
83
|
/**
|
|
79
84
|
* Get tool definition by name
|
package/dist/tools/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAIH,sBAAsB;AACtB,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AACtD,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AACzD,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAC9D,OAAO,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AACjE,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAEnD,uBAAuB;AACvB,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AACzD,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AACrD,OAAO,EAAE,iBAAiB,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AAC9E,OAAO,EAAE,cAAc,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AACpE,OAAO,EAAE,iBAAiB,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AAC9E,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAIH,sBAAsB;AACtB,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AACtD,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AACzD,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAC9D,OAAO,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AACjE,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAEnD,uBAAuB;AACvB,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AACzD,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AACrD,OAAO,EAAE,iBAAiB,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AAC9E,OAAO,EAAE,cAAc,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AACpE,OAAO,EAAE,iBAAiB,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AAC9E,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAC/D,OAAO,EAAE,wBAAwB,EAAE,4BAA4B,EAAE,MAAM,2BAA2B,CAAC;AAEnG,+CAA+C;AAC/C,gBAAgB;AAChB,+CAA+C;AAE/C;;GAEG;AACH,MAAM,CAAC,MAAM,SAAS,GAAwB;IAC5C,kBAAkB;IAClB,GAAG,SAAS;IAEZ,mBAAmB;IACnB,GAAG,UAAU;IAEb,oBAAoB;IACpB,GAAG,YAAY;IAEf,qBAAqB;IACrB,GAAG,aAAa;IAEhB,iBAAiB;IACjB,GAAG,QAAQ;IAEX,mBAAmB;IACnB,GAAG,UAAU;IAEb,iBAAiB;IACjB,GAAG,SAAS;IAEZ,0BAA0B;IAC1B,GAAG,iBAAiB;IAEpB,sBAAsB;IACtB,GAAG,cAAc;IAEjB,0BAA0B;IAC1B,GAAG,iBAAiB;IAEpB,qBAAqB;IACrB,GAAG,YAAY;IAEf,iCAAiC;IACjC,GAAG,wBAAwB;CAC5B,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,cAAc,GAGvB;IACF,kBAAkB;IAClB,GAAG,aAAa;IAEhB,mBAAmB;IACnB,GAAG,cAAc;IAEjB,oBAAoB;IACpB,GAAG,gBAAgB;IAEnB,qBAAqB;IACrB,GAAG,iBAAiB;IAEpB,iBAAiB;IACjB,GAAG,YAAY;IAEf,mBAAmB;IACnB,GAAG,cAAc;IAEjB,iBAAiB;IACjB,GAAG,aAAa;IAEhB,0BAA0B;IAC1B,GAAG,qBAAqB;IAExB,sBAAsB;IACtB,GAAG,kBAAkB;IAErB,0BAA0B;IAC1B,GAAG,qBAAqB;IAExB,qBAAqB;IACrB,GAAG,gBAAgB;IAEnB,iCAAiC;IACjC,GAAG,4BAA4B;CAChC,CAAC;AAEF;;GAEG;AACH,MAAM,UAAU,aAAa,CAAC,IAAY;IACxC,OAAO,SAAS,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC;AACtD,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,eAAe,CAC7B,IAAY;IAEZ,OAAO,cAAc,CAAC,IAAI,CAAC,CAAC;AAC9B,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,YAAY;IAC1B,OAAO,SAAS,CAAC,MAAM,CAAC;AAC1B,CAAC"}
|
package/dist/types.d.ts
CHANGED
|
@@ -149,6 +149,18 @@ export interface Optimization {
|
|
|
149
149
|
updated_at: string;
|
|
150
150
|
analyzed_at: string | null;
|
|
151
151
|
}
|
|
152
|
+
/**
|
|
153
|
+
* Competitive Analysis from API
|
|
154
|
+
*/
|
|
155
|
+
export interface CompetitiveAnalysis {
|
|
156
|
+
id: string;
|
|
157
|
+
url: string;
|
|
158
|
+
status: "pending" | "crawling_page" | "fetching_rankings" | "analyzing_competitors" | "generating_report" | "ready" | "failed";
|
|
159
|
+
opportunity_score: number | null;
|
|
160
|
+
error: string | null;
|
|
161
|
+
created_at: string;
|
|
162
|
+
completed_at: string | null;
|
|
163
|
+
}
|
|
152
164
|
/**
|
|
153
165
|
* Paginated response from API
|
|
154
166
|
*/
|
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@frase/mcp-server",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.8",
|
|
4
4
|
"description": "Frase MCP Server - Use Claude Desktop to interact with your Frase account",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -19,7 +19,8 @@
|
|
|
19
19
|
"test:coverage": "vitest run --coverage",
|
|
20
20
|
"test:integration": "vitest run --config vitest.integration.config.ts",
|
|
21
21
|
"test:mcp": "tsx scripts/test-mcp-tools.ts",
|
|
22
|
-
"prepublishOnly": "npm run build"
|
|
22
|
+
"prepublishOnly": "npm run build",
|
|
23
|
+
"build:mcpb": "npm run build && mcpb pack"
|
|
23
24
|
},
|
|
24
25
|
"dependencies": {
|
|
25
26
|
"@modelcontextprotocol/sdk": "^1.0.0",
|
|
@@ -30,7 +31,8 @@
|
|
|
30
31
|
"@types/node": "^22.10.2",
|
|
31
32
|
"tsx": "^4.19.2",
|
|
32
33
|
"typescript": "^5.7.2",
|
|
33
|
-
"vitest": "^2.1.8"
|
|
34
|
+
"vitest": "^2.1.8",
|
|
35
|
+
"@anthropic-ai/mcpb": "^2.1.2"
|
|
34
36
|
},
|
|
35
37
|
"engines": {
|
|
36
38
|
"node": ">=20.0.0"
|