mcp-server-peecai 0.2.0 → 0.2.1
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 +9 -9
- package/dist/api-client.d.ts +1 -1
- package/dist/api-client.js +2 -2
- package/dist/api-client.js.map +1 -1
- package/dist/index.d.ts +2 -2
- package/dist/index.js +18 -9
- package/dist/index.js.map +1 -1
- package/dist/prompts.d.ts +1 -1
- package/dist/prompts.js +1 -1
- package/dist/tools/brands.js +1 -1
- package/dist/tools/chat-content.js +1 -1
- package/dist/tools/chat-content.js.map +1 -1
- package/dist/tools/chats.js +1 -1
- package/dist/tools/models.js +1 -1
- package/dist/tools/projects.js +1 -1
- package/dist/tools/prompts.js +1 -1
- package/dist/tools/report-brands.js +4 -6
- package/dist/tools/report-brands.js.map +1 -1
- package/dist/tools/report-domains.js +4 -6
- package/dist/tools/report-domains.js.map +1 -1
- package/dist/tools/report-urls.js +4 -6
- package/dist/tools/report-urls.js.map +1 -1
- package/dist/tools/tags.js +1 -1
- package/dist/tools/topics.js +1 -1
- package/dist/types.d.ts +4 -4
- package/dist/util.d.ts +2 -2
- package/dist/util.js +16 -7
- package/dist/util.js.map +1 -1
- package/package.json +10 -3
package/README.md
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
<p align="center">
|
|
2
|
-
<h1 align="center">Peec
|
|
2
|
+
<h1 align="center">Peec AI MCP Server</h1>
|
|
3
3
|
<p align="center">
|
|
4
|
-
Community-built MCP server for the <a href="https://peec.ai">Peec
|
|
4
|
+
Community-built MCP server for the <a href="https://peec.ai">Peec AI</a> API — AI Search Analytics for brand visibility, sentiment, and citations across ChatGPT, Perplexity, and other AI models.
|
|
5
5
|
</p>
|
|
6
6
|
</p>
|
|
7
7
|
|
|
@@ -10,15 +10,15 @@
|
|
|
10
10
|
<img src="https://img.shields.io/badge/MCP-compatible-0098FF?style=flat-square" alt="MCP compatible">
|
|
11
11
|
</p>
|
|
12
12
|
|
|
13
|
-
> **Note:** This is an unofficial community project, not affiliated with or endorsed by Peec.
|
|
13
|
+
> **Note:** This is an unofficial community project, not affiliated with or endorsed by Peec AI. It requires a [Peec AI](https://peec.ai) account and API key.
|
|
14
14
|
|
|
15
|
-
> **API Beta:** The Peec
|
|
15
|
+
> **API Beta:** The Peec AI API is currently in beta — endpoints, payloads, and responses may change. Access is limited to Enterprise customers.
|
|
16
16
|
|
|
17
17
|
---
|
|
18
18
|
|
|
19
19
|
## What it does
|
|
20
20
|
|
|
21
|
-
Peec
|
|
21
|
+
Peec AI tracks how brands appear in AI-generated answers. This MCP server gives Claude direct access to that data — 11 tools covering projects, brands, prompts, chats, and analytics reports.
|
|
22
22
|
|
|
23
23
|
**Key capabilities:**
|
|
24
24
|
- Query brand visibility, sentiment, and position across AI models
|
|
@@ -178,12 +178,12 @@ All report tools support `dimensions` for multi-level breakdowns: `prompt_id`, `
|
|
|
178
178
|
|------|:---------:|:----------:|:-----------:|
|
|
179
179
|
| All 11 tools | Yes | Yes | No |
|
|
180
180
|
|
|
181
|
-
All tools are read-only GET/POST queries against the Peec
|
|
181
|
+
All tools are read-only GET/POST queries against the Peec AI API. No data is modified.
|
|
182
182
|
|
|
183
183
|
## Example Prompts
|
|
184
184
|
|
|
185
185
|
```
|
|
186
|
-
"List my Peec
|
|
186
|
+
"List my Peec AI projects"
|
|
187
187
|
"Show brand visibility for the last 30 days"
|
|
188
188
|
"Which domains get cited most in AI search results?"
|
|
189
189
|
"Compare brand sentiment across ChatGPT and Perplexity"
|
|
@@ -200,7 +200,7 @@ All tools are read-only GET/POST queries against the Peec.ai API. No data is mod
|
|
|
200
200
|
|
|
201
201
|
## API Drift Detection
|
|
202
202
|
|
|
203
|
-
The Peec
|
|
203
|
+
The Peec AI API is in beta and may change. A drift detection script compares the live OpenAPI spec against a committed snapshot:
|
|
204
204
|
|
|
205
205
|
```bash
|
|
206
206
|
npm run check:api-drift
|
|
@@ -240,7 +240,7 @@ npm run check:api-drift # Check for API spec changes
|
|
|
240
240
|
```
|
|
241
241
|
src/
|
|
242
242
|
├── index.ts # Server entry point, tool registration
|
|
243
|
-
├── api-client.ts # HTTP client for Peec
|
|
243
|
+
├── api-client.ts # HTTP client for Peec AI Customer API
|
|
244
244
|
├── types.ts # TypeScript interfaces for API responses
|
|
245
245
|
├── util.ts # Shared validation, date handling, MCP response helpers
|
|
246
246
|
├── prompts.ts # MCP prompt templates (guided workflows)
|
package/dist/api-client.d.ts
CHANGED
package/dist/api-client.js
CHANGED
|
@@ -2,7 +2,7 @@ const BASE_URL = "https://api.peec.ai/customer/v1";
|
|
|
2
2
|
const REQUEST_TIMEOUT_MS = 30_000;
|
|
3
3
|
const MAX_ERROR_LENGTH = 500;
|
|
4
4
|
/**
|
|
5
|
-
* HTTP client for the Peec
|
|
5
|
+
* HTTP client for the Peec AI Customer API.
|
|
6
6
|
* Handles authentication, query parameters, timeouts, and error formatting.
|
|
7
7
|
*/
|
|
8
8
|
export class PeecApiClient {
|
|
@@ -77,7 +77,7 @@ export class PeecApiClient {
|
|
|
77
77
|
if (message.length > MAX_ERROR_LENGTH) {
|
|
78
78
|
message = message.slice(0, MAX_ERROR_LENGTH) + "…";
|
|
79
79
|
}
|
|
80
|
-
return `Peec API error ${response.status}: ${message}`;
|
|
80
|
+
return `Peec AI API error ${response.status}: ${message}`;
|
|
81
81
|
}
|
|
82
82
|
}
|
|
83
83
|
//# sourceMappingURL=api-client.js.map
|
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/index.d.ts
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
/**
|
|
3
|
-
* Peec
|
|
3
|
+
* Peec AI MCP Server
|
|
4
4
|
*
|
|
5
|
-
* Exposes the Peec
|
|
5
|
+
* Exposes the Peec AI Customer API as MCP tools for AI Search Analytics —
|
|
6
6
|
* brand visibility, sentiment, citations, and domain/URL analysis across
|
|
7
7
|
* AI models like ChatGPT and Perplexity.
|
|
8
8
|
*/
|
package/dist/index.js
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
/**
|
|
3
|
-
* Peec
|
|
3
|
+
* Peec AI MCP Server
|
|
4
4
|
*
|
|
5
|
-
* Exposes the Peec
|
|
5
|
+
* Exposes the Peec AI Customer API as MCP tools for AI Search Analytics —
|
|
6
6
|
* brand visibility, sentiment, citations, and domain/URL analysis across
|
|
7
7
|
* AI models like ChatGPT and Perplexity.
|
|
8
8
|
*/
|
|
@@ -21,6 +21,9 @@ import { registerBrandsReportTool } from "./tools/report-brands.js";
|
|
|
21
21
|
import { registerDomainsReportTool } from "./tools/report-domains.js";
|
|
22
22
|
import { registerUrlsReportTool } from "./tools/report-urls.js";
|
|
23
23
|
import { registerPromptTemplates } from "./prompts.js";
|
|
24
|
+
import { createRequire } from "node:module";
|
|
25
|
+
const require = createRequire(import.meta.url);
|
|
26
|
+
const { version } = require("../package.json");
|
|
24
27
|
const apiKey = process.env.PEECAI_API_KEY;
|
|
25
28
|
if (!apiKey) {
|
|
26
29
|
console.error("PEECAI_API_KEY environment variable is required");
|
|
@@ -29,7 +32,7 @@ if (!apiKey) {
|
|
|
29
32
|
const client = new PeecApiClient(apiKey);
|
|
30
33
|
const server = new McpServer({
|
|
31
34
|
name: "peecai",
|
|
32
|
-
version
|
|
35
|
+
version,
|
|
33
36
|
});
|
|
34
37
|
// Register tools
|
|
35
38
|
registerProjectsTool(server, client);
|
|
@@ -47,7 +50,7 @@ registerUrlsReportTool(server, client);
|
|
|
47
50
|
registerPromptTemplates(server);
|
|
48
51
|
// Register resource: projects://list
|
|
49
52
|
server.resource("projects-list", "projects://list", {
|
|
50
|
-
description: "List all available Peec
|
|
53
|
+
description: "List all available Peec AI projects for the authenticated account.",
|
|
51
54
|
mimeType: "application/json",
|
|
52
55
|
}, async () => {
|
|
53
56
|
const projects = await client.get("/projects", { limit: 1000 });
|
|
@@ -62,18 +65,24 @@ server.resource("projects-list", "projects://list", {
|
|
|
62
65
|
async function main() {
|
|
63
66
|
const transport = new StdioServerTransport();
|
|
64
67
|
await server.connect(transport);
|
|
65
|
-
console.error("Peec
|
|
66
|
-
// Graceful shutdown
|
|
68
|
+
console.error("Peec AI MCP server running on stdio");
|
|
69
|
+
// Graceful shutdown with timeout fallback
|
|
67
70
|
const shutdown = async () => {
|
|
68
|
-
console.error("Shutting down Peec
|
|
69
|
-
|
|
71
|
+
console.error("Shutting down Peec AI MCP server…");
|
|
72
|
+
const forceExit = setTimeout(() => process.exit(1), 5_000);
|
|
73
|
+
try {
|
|
74
|
+
await server.close();
|
|
75
|
+
}
|
|
76
|
+
finally {
|
|
77
|
+
clearTimeout(forceExit);
|
|
78
|
+
}
|
|
70
79
|
process.exit(0);
|
|
71
80
|
};
|
|
72
81
|
process.on("SIGINT", shutdown);
|
|
73
82
|
process.on("SIGTERM", shutdown);
|
|
74
83
|
}
|
|
75
84
|
main().catch((e) => {
|
|
76
|
-
console.error("Fatal error:", e);
|
|
85
|
+
console.error("Fatal error:", e instanceof Error ? e.message : e);
|
|
77
86
|
process.exit(1);
|
|
78
87
|
});
|
|
79
88
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AACA;;;;;;GAMG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AACjF,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACnD,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,EAAE,uBAAuB,EAAE,MAAM,yBAAyB,CAAC;AAClE,OAAO,EAAE,wBAAwB,EAAE,MAAM,0BAA0B,CAAC;AACpE,OAAO,EAAE,yBAAyB,EAAE,MAAM,2BAA2B,CAAC;AACtE,OAAO,EAAE,sBAAsB,EAAE,MAAM,wBAAwB,CAAC;AAChE,OAAO,EAAE,uBAAuB,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/prompts.d.ts
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
|
|
2
|
-
/** Registers guided workflow prompts for common Peec
|
|
2
|
+
/** Registers guided workflow prompts for common Peec AI analytics tasks. */
|
|
3
3
|
export declare function registerPromptTemplates(server: McpServer): void;
|
package/dist/prompts.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
|
|
2
2
|
import { z } from "zod";
|
|
3
|
-
/** Registers guided workflow prompts for common Peec
|
|
3
|
+
/** Registers guided workflow prompts for common Peec AI analytics tasks. */
|
|
4
4
|
export function registerPromptTemplates(server) {
|
|
5
5
|
server.prompt("brand-visibility-analysis", "Analyze brand visibility, sentiment, and position across AI models for a project.", {
|
|
6
6
|
project_id: z.string().describe("Project ID (uses PEECAI_PROJECT_ID env if omitted)").optional(),
|
package/dist/tools/brands.js
CHANGED
|
@@ -4,7 +4,7 @@ import { PeecApiClient } from "../api-client.js";
|
|
|
4
4
|
import { requireProjectId, summaryForList, toolResult, toolError } from "../util.js";
|
|
5
5
|
/** Registers the list_brands tool for retrieving tracked brands and their domains. */
|
|
6
6
|
export function registerBrandsTool(server, client) {
|
|
7
|
-
server.tool("list_brands", "List tracked brands for a Peec
|
|
7
|
+
server.tool("list_brands", "List tracked brands for a Peec AI project. Returns brand IDs, names, and associated domains.", {
|
|
8
8
|
project_id: z.string().describe("Project ID (uses PEECAI_PROJECT_ID env if omitted). Call list_projects to find IDs.").optional(),
|
|
9
9
|
limit: z.number().min(1).max(10000).default(1000).describe("Max results (1-10000)").optional(),
|
|
10
10
|
offset: z.number().min(0).default(0).describe("Results to skip").optional(),
|
|
@@ -5,7 +5,7 @@ import { requireProjectId, toolResult, toolError } from "../util.js";
|
|
|
5
5
|
/** Registers the get_chat_content tool for retrieving full chat details. */
|
|
6
6
|
export function registerChatContentTool(server, client) {
|
|
7
7
|
server.tool("get_chat_content", "Get full content of a specific AI chat. Returns sources, brands mentioned, messages, queries, and products.", {
|
|
8
|
-
chat_id: z.string().regex(/^[\w-]+$/, "Invalid chat_id format").describe("Chat ID to retrieve"),
|
|
8
|
+
chat_id: z.string().max(200).regex(/^[\w-]+$/, "Invalid chat_id format").describe("Chat ID to retrieve"),
|
|
9
9
|
project_id: z.string().describe("Project ID (uses PEECAI_PROJECT_ID env if omitted). Call list_projects to find IDs.").optional(),
|
|
10
10
|
}, async ({ chat_id, project_id }) => {
|
|
11
11
|
try {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chat-content.js","sourceRoot":"","sources":["../../src/tools/chat-content.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAE,gBAAgB,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAGrE,4EAA4E;AAC5E,MAAM,UAAU,uBAAuB,CAAC,MAAiB,EAAE,MAAqB;IAC9E,MAAM,CAAC,IAAI,CACT,kBAAkB,EAClB,6GAA6G,EAC7G;QACE,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,UAAU,EAAE,wBAAwB,CAAC,CAAC,QAAQ,CAAC,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"chat-content.js","sourceRoot":"","sources":["../../src/tools/chat-content.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAE,gBAAgB,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAGrE,4EAA4E;AAC5E,MAAM,UAAU,uBAAuB,CAAC,MAAiB,EAAE,MAAqB;IAC9E,MAAM,CAAC,IAAI,CACT,kBAAkB,EAClB,6GAA6G,EAC7G;QACE,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,UAAU,EAAE,wBAAwB,CAAC,CAAC,QAAQ,CAAC,qBAAqB,CAAC;QACxG,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,qFAAqF,CAAC,CAAC,QAAQ,EAAE;KAClI,EACD,KAAK,EAAE,EAAE,OAAO,EAAE,UAAU,EAAE,EAAE,EAAE;QAChC,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,MAAM,CAAc,UAAU,OAAO,UAAU,EAAE;gBACzE,UAAU,EAAE,gBAAgB,CAAC,UAAU,CAAC;aACzC,CAAC,CAAC;YACH,MAAM,QAAQ,GAAG,QAAQ,OAAO,KAAK,IAAI,CAAC,QAAQ,CAAC,MAAM,cAAc,IAAI,CAAC,OAAO,CAAC,MAAM,aAAa,IAAI,CAAC,gBAAgB,CAAC,MAAM,SAAS,CAAC;YAC7I,OAAO,UAAU,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;QAC9C,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,OAAO,SAAS,CAAC,CAAC,CAAC,CAAC;QACtB,CAAC;IACH,CAAC,CACF,CAAC;AACJ,CAAC"}
|
package/dist/tools/chats.js
CHANGED
|
@@ -4,7 +4,7 @@ import { PeecApiClient } from "../api-client.js";
|
|
|
4
4
|
import { requireProjectId, dateSchema, validateDateRange, summaryForList, toolResult, toolError } from "../util.js";
|
|
5
5
|
/** Registers the list_chats tool for retrieving AI chat interactions with optional date filtering. */
|
|
6
6
|
export function registerChatsTool(server, client) {
|
|
7
|
-
server.tool("list_chats", "List AI chat interactions tracked by Peec.
|
|
7
|
+
server.tool("list_chats", "List AI chat interactions tracked by Peec AI. Returns up to limit results (default: 100). Always use date filters to scope results. Returns chat IDs, prompt/model refs, and dates. Without date filters, returns all chats.", {
|
|
8
8
|
project_id: z.string().describe("Project ID (uses PEECAI_PROJECT_ID env if omitted). Call list_projects to find IDs.").optional(),
|
|
9
9
|
start_date: dateSchema.describe("Start date filter (YYYY-MM-DD). Omit for no lower bound.").optional(),
|
|
10
10
|
end_date: dateSchema.describe("End date filter (YYYY-MM-DD). Omit for no upper bound.").optional(),
|
package/dist/tools/models.js
CHANGED
|
@@ -4,7 +4,7 @@ import { PeecApiClient } from "../api-client.js";
|
|
|
4
4
|
import { requireProjectId, summaryForList, toolResult, toolError } from "../util.js";
|
|
5
5
|
/** Registers the list_models tool for retrieving tracked AI models. */
|
|
6
6
|
export function registerModelsTool(server, client) {
|
|
7
|
-
server.tool("list_models", "List AI models tracked by Peec
|
|
7
|
+
server.tool("list_models", "List AI models tracked by Peec AI (ChatGPT, Perplexity, etc.). Returns model IDs and active status.", {
|
|
8
8
|
project_id: z.string().describe("Project ID (uses PEECAI_PROJECT_ID env if omitted). Call list_projects to find IDs.").optional(),
|
|
9
9
|
limit: z.number().min(1).max(10000).default(1000).describe("Max results (1-10000)").optional(),
|
|
10
10
|
offset: z.number().min(0).default(0).describe("Results to skip").optional(),
|
package/dist/tools/projects.js
CHANGED
|
@@ -4,7 +4,7 @@ import { PeecApiClient } from "../api-client.js";
|
|
|
4
4
|
import { summaryForList, toolResult, toolError } from "../util.js";
|
|
5
5
|
/** Registers the list_projects tool for retrieving all company projects. */
|
|
6
6
|
export function registerProjectsTool(server, client) {
|
|
7
|
-
server.tool("list_projects", "List all Peec
|
|
7
|
+
server.tool("list_projects", "List all Peec AI projects for the company. Returns project IDs, names, and statuses. Status values: CUSTOMER (active, ongoing monitoring), CUSTOMER_ENDED, PITCH (active demo), PITCH_ENDED (completed demo), TRIAL, TRIAL_ENDED, ONBOARDING, DELETED. Use CUSTOMER projects for current data.", {
|
|
8
8
|
limit: z.number().min(1).max(10000).default(1000).describe("Max results to return (1-10000)").optional(),
|
|
9
9
|
offset: z.number().min(0).default(0).describe("Number of results to skip").optional(),
|
|
10
10
|
}, async ({ limit, offset }) => {
|
package/dist/tools/prompts.js
CHANGED
|
@@ -4,7 +4,7 @@ import { PeecApiClient } from "../api-client.js";
|
|
|
4
4
|
import { requireProjectId, summaryForList, toolResult, toolError } from "../util.js";
|
|
5
5
|
/** Registers the list_prompts tool for retrieving search prompts with metadata. */
|
|
6
6
|
export function registerPromptsTool(server, client) {
|
|
7
|
-
server.tool("list_prompts", "List search prompts for a Peec
|
|
7
|
+
server.tool("list_prompts", "List search prompts for a Peec AI project. Returns prompt IDs, messages, tags, topics, locations, and search volume.", {
|
|
8
8
|
project_id: z.string().describe("Project ID (uses PEECAI_PROJECT_ID env if omitted). Call list_projects to find IDs.").optional(),
|
|
9
9
|
limit: z.number().min(1).max(10000).default(1000).describe("Max results (1-10000)").optional(),
|
|
10
10
|
offset: z.number().min(0).default(0).describe("Results to skip").optional(),
|
|
@@ -14,8 +14,8 @@ export function registerBrandsReportTool(server, client) {
|
|
|
14
14
|
.describe("Convenience filter for a single brand (converted to server-side filter). Use list_brands to find IDs.")
|
|
15
15
|
.optional(),
|
|
16
16
|
filters: filterSchema(BRANDS_FILTER_FIELDS).optional(),
|
|
17
|
-
limit: z.number().min(1).max(10000).default(100).describe("Max results (1-10000, default: 100)")
|
|
18
|
-
offset: z.number().min(0).default(0).describe("Results to skip")
|
|
17
|
+
limit: z.number().min(1).max(10000).default(100).describe("Max results (1-10000, default: 100)"),
|
|
18
|
+
offset: z.number().min(0).default(0).describe("Results to skip"),
|
|
19
19
|
}, async ({ project_id, start_date, end_date, dimensions, brand_id, filters, limit, offset }) => {
|
|
20
20
|
try {
|
|
21
21
|
const dates = validateDateRange(start_date, end_date);
|
|
@@ -28,10 +28,8 @@ export function registerBrandsReportTool(server, client) {
|
|
|
28
28
|
body.end_date = dates.end_date;
|
|
29
29
|
if (dimensions)
|
|
30
30
|
body.dimensions = dimensions;
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
if (offset !== undefined)
|
|
34
|
-
body.offset = offset;
|
|
31
|
+
body.limit = limit;
|
|
32
|
+
body.offset = offset;
|
|
35
33
|
const merged = mergeFilters(filters, { field: "brand_id", value: brand_id });
|
|
36
34
|
if (merged)
|
|
37
35
|
body.filters = merged;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"report-brands.js","sourceRoot":"","sources":["../../src/tools/report-brands.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAE,gBAAgB,EAAE,UAAU,EAAE,gBAAgB,EAAE,YAAY,EAAE,YAAY,EAAE,iBAAiB,EAAE,cAAc,EAAE,sBAAsB,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAG1L,MAAM,oBAAoB,GAAG,CAAC,UAAU,EAAE,QAAQ,EAAE,UAAU,EAAE,WAAW,EAAE,UAAU,CAAU,CAAC;AAElG,oGAAoG;AACpG,MAAM,UAAU,wBAAwB,CAAC,MAAiB,EAAE,MAAqB;IAC/E,MAAM,CAAC,IAAI,CACT,mBAAmB,EACnB,6bAA6b,EAC7b;QACE,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,qFAAqF,CAAC,CAAC,QAAQ,EAAE;QACjI,UAAU,EAAE,UAAU,CAAC,QAAQ,CAAC,mDAAmD,CAAC,CAAC,QAAQ,EAAE;QAC/F,QAAQ,EAAE,UAAU,CAAC,QAAQ,CAAC,iDAAiD,CAAC,CAAC,QAAQ,EAAE;QAC3F,UAAU,EAAE,gBAAgB,CAAC,QAAQ,EAAE;QACvC,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE;aACjB,QAAQ,CAAC,uGAAuG,CAAC;aACjH,QAAQ,EAAE;QACb,OAAO,EAAE,YAAY,CAAC,oBAAoB,CAAC,CAAC,QAAQ,EAAE;QACtD,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,qCAAqC,CAAC
|
|
1
|
+
{"version":3,"file":"report-brands.js","sourceRoot":"","sources":["../../src/tools/report-brands.ts"],"names":[],"mappings":"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"}
|
|
@@ -14,8 +14,8 @@ export function registerDomainsReportTool(server, client) {
|
|
|
14
14
|
.describe("Convenience filter by domain classification (converted to server-side filter).")
|
|
15
15
|
.optional(),
|
|
16
16
|
filters: filterSchema(DOMAINS_FILTER_FIELDS).optional(),
|
|
17
|
-
limit: z.number().min(1).max(10000).default(100).describe("Max results (1-10000, default: 100)")
|
|
18
|
-
offset: z.number().min(0).default(0).describe("Results to skip")
|
|
17
|
+
limit: z.number().min(1).max(10000).default(100).describe("Max results (1-10000, default: 100)"),
|
|
18
|
+
offset: z.number().min(0).default(0).describe("Results to skip"),
|
|
19
19
|
}, async ({ project_id, start_date, end_date, dimensions, classification, filters, limit, offset }) => {
|
|
20
20
|
try {
|
|
21
21
|
const dates = validateDateRange(start_date, end_date);
|
|
@@ -28,10 +28,8 @@ export function registerDomainsReportTool(server, client) {
|
|
|
28
28
|
body.end_date = dates.end_date;
|
|
29
29
|
if (dimensions)
|
|
30
30
|
body.dimensions = dimensions;
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
if (offset !== undefined)
|
|
34
|
-
body.offset = offset;
|
|
31
|
+
body.limit = limit;
|
|
32
|
+
body.offset = offset;
|
|
35
33
|
const merged = mergeFilters(filters, { field: "classification", value: classification });
|
|
36
34
|
if (merged)
|
|
37
35
|
body.filters = merged;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"report-domains.js","sourceRoot":"","sources":["../../src/tools/report-domains.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAE,gBAAgB,EAAE,UAAU,EAAE,gBAAgB,EAAE,YAAY,EAAE,YAAY,EAAE,iBAAiB,EAAE,cAAc,EAAE,uBAAuB,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAG3L,MAAM,qBAAqB,GAAG,CAAC,UAAU,EAAE,QAAQ,EAAE,UAAU,EAAE,WAAW,EAAE,QAAQ,EAAE,KAAK,CAAU,CAAC;AAExG,sGAAsG;AACtG,MAAM,UAAU,yBAAyB,CAAC,MAAiB,EAAE,MAAqB;IAChF,MAAM,CAAC,IAAI,CACT,oBAAoB,EACpB,oZAAoZ,EACpZ;QACE,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,qFAAqF,CAAC,CAAC,QAAQ,EAAE;QACjI,UAAU,EAAE,UAAU,CAAC,QAAQ,CAAC,mDAAmD,CAAC,CAAC,QAAQ,EAAE;QAC/F,QAAQ,EAAE,UAAU,CAAC,QAAQ,CAAC,iDAAiD,CAAC,CAAC,QAAQ,EAAE;QAC3F,UAAU,EAAE,gBAAgB,CAAC,QAAQ,EAAE;QACvC,cAAc,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,WAAW,EAAE,YAAY,EAAE,WAAW,EAAE,WAAW,EAAE,eAAe,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC;aAClH,QAAQ,CAAC,gFAAgF,CAAC;aAC1F,QAAQ,EAAE;QACb,OAAO,EAAE,YAAY,CAAC,qBAAqB,CAAC,CAAC,QAAQ,EAAE;QACvD,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,qCAAqC,CAAC
|
|
1
|
+
{"version":3,"file":"report-domains.js","sourceRoot":"","sources":["../../src/tools/report-domains.ts"],"names":[],"mappings":"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"}
|
|
@@ -14,8 +14,8 @@ export function registerUrlsReportTool(server, client) {
|
|
|
14
14
|
.describe("Convenience filter by URL classification (converted to server-side filter).")
|
|
15
15
|
.optional(),
|
|
16
16
|
filters: filterSchema(URLS_FILTER_FIELDS).optional(),
|
|
17
|
-
limit: z.number().min(1).max(10000).default(100).describe("Max results (1-10000, default: 100)")
|
|
18
|
-
offset: z.number().min(0).default(0).describe("Results to skip")
|
|
17
|
+
limit: z.number().min(1).max(10000).default(100).describe("Max results (1-10000, default: 100)"),
|
|
18
|
+
offset: z.number().min(0).default(0).describe("Results to skip"),
|
|
19
19
|
}, async ({ project_id, start_date, end_date, dimensions, classification, filters, limit, offset }) => {
|
|
20
20
|
try {
|
|
21
21
|
const dates = validateDateRange(start_date, end_date);
|
|
@@ -28,10 +28,8 @@ export function registerUrlsReportTool(server, client) {
|
|
|
28
28
|
body.end_date = dates.end_date;
|
|
29
29
|
if (dimensions)
|
|
30
30
|
body.dimensions = dimensions;
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
if (offset !== undefined)
|
|
34
|
-
body.offset = offset;
|
|
31
|
+
body.limit = limit;
|
|
32
|
+
body.offset = offset;
|
|
35
33
|
const merged = mergeFilters(filters, { field: "classification", value: classification });
|
|
36
34
|
if (merged)
|
|
37
35
|
body.filters = merged;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"report-urls.js","sourceRoot":"","sources":["../../src/tools/report-urls.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAE,gBAAgB,EAAE,UAAU,EAAE,gBAAgB,EAAE,YAAY,EAAE,YAAY,EAAE,iBAAiB,EAAE,cAAc,EAAE,oBAAoB,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAGxL,MAAM,kBAAkB,GAAG,CAAC,UAAU,EAAE,QAAQ,EAAE,UAAU,EAAE,WAAW,EAAE,QAAQ,EAAE,KAAK,CAAU,CAAC;AAErG,gGAAgG;AAChG,MAAM,UAAU,sBAAsB,CAAC,MAAiB,EAAE,MAAqB;IAC7E,MAAM,CAAC,IAAI,CACT,iBAAiB,EACjB,gdAAgd,EAChd;QACE,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,qFAAqF,CAAC,CAAC,QAAQ,EAAE;QACjI,UAAU,EAAE,UAAU,CAAC,QAAQ,CAAC,mDAAmD,CAAC,CAAC,QAAQ,EAAE;QAC/F,QAAQ,EAAE,UAAU,CAAC,QAAQ,CAAC,iDAAiD,CAAC,CAAC,QAAQ,EAAE;QAC3F,UAAU,EAAE,gBAAgB,CAAC,QAAQ,EAAE;QACvC,cAAc,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,UAAU,EAAE,eAAe,EAAE,cAAc,EAAE,UAAU,EAAE,YAAY,EAAE,SAAS,EAAE,aAAa,EAAE,YAAY,EAAE,cAAc,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;aACxK,QAAQ,CAAC,6EAA6E,CAAC;aACvF,QAAQ,EAAE;QACb,OAAO,EAAE,YAAY,CAAC,kBAAkB,CAAC,CAAC,QAAQ,EAAE;QACpD,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,qCAAqC,CAAC
|
|
1
|
+
{"version":3,"file":"report-urls.js","sourceRoot":"","sources":["../../src/tools/report-urls.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAE,gBAAgB,EAAE,UAAU,EAAE,gBAAgB,EAAE,YAAY,EAAE,YAAY,EAAE,iBAAiB,EAAE,cAAc,EAAE,oBAAoB,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAGxL,MAAM,kBAAkB,GAAG,CAAC,UAAU,EAAE,QAAQ,EAAE,UAAU,EAAE,WAAW,EAAE,QAAQ,EAAE,KAAK,CAAU,CAAC;AAErG,gGAAgG;AAChG,MAAM,UAAU,sBAAsB,CAAC,MAAiB,EAAE,MAAqB;IAC7E,MAAM,CAAC,IAAI,CACT,iBAAiB,EACjB,gdAAgd,EAChd;QACE,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,qFAAqF,CAAC,CAAC,QAAQ,EAAE;QACjI,UAAU,EAAE,UAAU,CAAC,QAAQ,CAAC,mDAAmD,CAAC,CAAC,QAAQ,EAAE;QAC/F,QAAQ,EAAE,UAAU,CAAC,QAAQ,CAAC,iDAAiD,CAAC,CAAC,QAAQ,EAAE;QAC3F,UAAU,EAAE,gBAAgB,CAAC,QAAQ,EAAE;QACvC,cAAc,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,UAAU,EAAE,eAAe,EAAE,cAAc,EAAE,UAAU,EAAE,YAAY,EAAE,SAAS,EAAE,aAAa,EAAE,YAAY,EAAE,cAAc,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;aACxK,QAAQ,CAAC,6EAA6E,CAAC;aACvF,QAAQ,EAAE;QACb,OAAO,EAAE,YAAY,CAAC,kBAAkB,CAAC,CAAC,QAAQ,EAAE;QACpD,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,qCAAqC,CAAC;QAChG,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,iBAAiB,CAAC;KACjE,EACD,KAAK,EAAE,EAAE,UAAU,EAAE,UAAU,EAAE,QAAQ,EAAE,UAAU,EAAE,cAAc,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE;QACjG,IAAI,CAAC;YACH,MAAM,KAAK,GAAG,iBAAiB,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;YACtD,MAAM,IAAI,GAA4B;gBACpC,UAAU,EAAE,gBAAgB,CAAC,UAAU,CAAC;aACzC,CAAC;YACF,IAAI,KAAK,CAAC,UAAU;gBAAE,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC,UAAU,CAAC;YACzD,IAAI,KAAK,CAAC,QAAQ;gBAAE,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAC;YACnD,IAAI,UAAU;gBAAE,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;YAC7C,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;YACnB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;YAErB,MAAM,MAAM,GAAG,YAAY,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,gBAAgB,EAAE,KAAK,EAAE,cAAc,EAAE,CAAC,CAAC;YACzF,IAAI,MAAM;gBAAE,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;YAElC,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,IAAI,CAAiB,eAAe,EAAE,IAAI,CAAC,CAAC;YACtE,MAAM,IAAI,GAAG,cAAc,CAAC,IAAI,CAAC,CAAC;YAClC,OAAO,UAAU,CAAC,EAAE,QAAQ,EAAE,oBAAoB,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC;QACpE,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,OAAO,SAAS,CAAC,CAAC,CAAC,CAAC;QACtB,CAAC;IACH,CAAC,CACF,CAAC;AACJ,CAAC"}
|
package/dist/tools/tags.js
CHANGED
|
@@ -4,7 +4,7 @@ import { PeecApiClient } from "../api-client.js";
|
|
|
4
4
|
import { requireProjectId, summaryForList, toolResult, toolError } from "../util.js";
|
|
5
5
|
/** Registers the list_tags tool for retrieving category tags. */
|
|
6
6
|
export function registerTagsTool(server, client) {
|
|
7
|
-
server.tool("list_tags", "List category tags for a Peec
|
|
7
|
+
server.tool("list_tags", "List category tags for a Peec AI project. Returns tag IDs and names.", {
|
|
8
8
|
project_id: z.string().describe("Project ID (uses PEECAI_PROJECT_ID env if omitted). Call list_projects to find IDs.").optional(),
|
|
9
9
|
limit: z.number().min(1).max(10000).default(1000).describe("Max results (1-10000)").optional(),
|
|
10
10
|
offset: z.number().min(0).default(0).describe("Results to skip").optional(),
|
package/dist/tools/topics.js
CHANGED
|
@@ -4,7 +4,7 @@ import { PeecApiClient } from "../api-client.js";
|
|
|
4
4
|
import { requireProjectId, summaryForList, toolResult, toolError } from "../util.js";
|
|
5
5
|
/** Registers the list_topics tool for retrieving topic groupings. */
|
|
6
6
|
export function registerTopicsTool(server, client) {
|
|
7
|
-
server.tool("list_topics", "List topic groupings for a Peec
|
|
7
|
+
server.tool("list_topics", "List topic groupings for a Peec AI project. Returns topic IDs and names.", {
|
|
8
8
|
project_id: z.string().describe("Project ID (uses PEECAI_PROJECT_ID env if omitted). Call list_projects to find IDs.").optional(),
|
|
9
9
|
limit: z.number().min(1).max(10000).default(1000).describe("Max results (1-10000)").optional(),
|
|
10
10
|
offset: z.number().min(0).default(0).describe("Results to skip").optional(),
|
package/dist/types.d.ts
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
/** Standard Peec
|
|
1
|
+
/** Standard Peec AI API envelope — most list/report endpoints wrap results in `{ data: T }`. */
|
|
2
2
|
export interface ApiResponse<T> {
|
|
3
3
|
data: T;
|
|
4
4
|
}
|
|
5
|
-
/** A Peec
|
|
5
|
+
/** A Peec AI project representing a tracked brand or campaign. */
|
|
6
6
|
export interface Project {
|
|
7
7
|
id: string;
|
|
8
8
|
name: string;
|
|
@@ -18,7 +18,7 @@ export interface Brand {
|
|
|
18
18
|
export interface PromptMessage {
|
|
19
19
|
content: string;
|
|
20
20
|
}
|
|
21
|
-
/** A search prompt that Peec
|
|
21
|
+
/** A search prompt that Peec AI monitors across AI models. */
|
|
22
22
|
export interface Prompt {
|
|
23
23
|
id: string;
|
|
24
24
|
messages: PromptMessage[];
|
|
@@ -38,7 +38,7 @@ export interface Topic {
|
|
|
38
38
|
id: string;
|
|
39
39
|
name: string;
|
|
40
40
|
}
|
|
41
|
-
/** An AI model tracked by Peec
|
|
41
|
+
/** An AI model tracked by Peec AI (e.g. ChatGPT, Perplexity). */
|
|
42
42
|
export interface Model {
|
|
43
43
|
id: string;
|
|
44
44
|
is_active: boolean;
|
package/dist/util.d.ts
CHANGED
|
@@ -20,12 +20,12 @@ export declare function filterSchema(allowedFields: readonly string[]): z.ZodArr
|
|
|
20
20
|
}>;
|
|
21
21
|
values: z.ZodArray<z.ZodString>;
|
|
22
22
|
}, z.core.$strip>>;
|
|
23
|
-
/** Merges convenience shortcut parameters into a filters array. */
|
|
23
|
+
/** Merges convenience shortcut parameters into a filters array. Skips shortcuts whose field already exists in filters. */
|
|
24
24
|
export declare function mergeFilters(filters: ReportFilter[] | undefined, ...shortcuts: Array<{
|
|
25
25
|
field: string;
|
|
26
26
|
value: string | undefined;
|
|
27
27
|
}>): ReportFilter[] | undefined;
|
|
28
|
-
/** YYYY-MM-DD date string validated by regex. */
|
|
28
|
+
/** YYYY-MM-DD date string validated by regex and real-date check. */
|
|
29
29
|
export declare const dateSchema: z.ZodString;
|
|
30
30
|
/**
|
|
31
31
|
* Allowed breakdown dimensions for analytics reports.
|
package/dist/util.js
CHANGED
|
@@ -10,20 +10,27 @@ export function filterSchema(allowedFields) {
|
|
|
10
10
|
values: z.array(z.string()).min(1),
|
|
11
11
|
})).describe("Server-side filters. Multiple filters are AND'd together.");
|
|
12
12
|
}
|
|
13
|
-
/** Merges convenience shortcut parameters into a filters array. */
|
|
13
|
+
/** Merges convenience shortcut parameters into a filters array. Skips shortcuts whose field already exists in filters. */
|
|
14
14
|
export function mergeFilters(filters, ...shortcuts) {
|
|
15
15
|
const merged = filters ? [...filters] : [];
|
|
16
|
+
const existingFields = new Set(merged.map((f) => f.field));
|
|
16
17
|
for (const { field, value } of shortcuts) {
|
|
17
|
-
if (value !== undefined) {
|
|
18
|
+
if (value !== undefined && !existingFields.has(field)) {
|
|
18
19
|
merged.push({ field, operator: "in", values: [value] });
|
|
20
|
+
existingFields.add(field);
|
|
19
21
|
}
|
|
20
22
|
}
|
|
21
23
|
return merged.length > 0 ? merged : undefined;
|
|
22
24
|
}
|
|
23
|
-
/** YYYY-MM-DD date string validated by regex. */
|
|
25
|
+
/** YYYY-MM-DD date string validated by regex and real-date check. */
|
|
24
26
|
export const dateSchema = z
|
|
25
27
|
.string()
|
|
26
|
-
.regex(/^\d{4}-\d{2}-\d{2}$/, "Must be YYYY-MM-DD")
|
|
28
|
+
.regex(/^\d{4}-\d{2}-\d{2}$/, "Must be YYYY-MM-DD")
|
|
29
|
+
.refine((s) => {
|
|
30
|
+
const [y, m, d] = s.split("-").map(Number);
|
|
31
|
+
const date = new Date(Date.UTC(y, m - 1, d));
|
|
32
|
+
return date.getUTCFullYear() === y && date.getUTCMonth() === m - 1 && date.getUTCDate() === d;
|
|
33
|
+
}, "Invalid calendar date");
|
|
27
34
|
/**
|
|
28
35
|
* Allowed breakdown dimensions for analytics reports.
|
|
29
36
|
* Each adds a grouping level: prompt_id (by search prompt), model_id (by AI model),
|
|
@@ -43,7 +50,8 @@ export function requireProjectId(explicit) {
|
|
|
43
50
|
throw new Error("Missing project_id. Either pass project_id as parameter or set PEECAI_PROJECT_ID environment variable. Use list_projects to find available project IDs.");
|
|
44
51
|
}
|
|
45
52
|
if (!PROJECT_ID_PATTERN.test(pid)) {
|
|
46
|
-
|
|
53
|
+
const safe = pid.length > 60 ? pid.slice(0, 60) + "…" : pid;
|
|
54
|
+
throw new Error(`Invalid project_id format: "${safe}". Expected format: or_xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx. Use list_projects to find valid project IDs.`);
|
|
47
55
|
}
|
|
48
56
|
return pid;
|
|
49
57
|
}
|
|
@@ -104,7 +112,8 @@ export function slimReportRows(rows) {
|
|
|
104
112
|
// ── Summary helpers for LLM-friendly _summary fields ──
|
|
105
113
|
/** Summary for list endpoints: "3 projects returned" */
|
|
106
114
|
export function summaryForList(entity, items) {
|
|
107
|
-
|
|
115
|
+
const label = items.length === 1 ? entity.replace(/s$/, "") : entity;
|
|
116
|
+
return `${items.length} ${label} returned`;
|
|
108
117
|
}
|
|
109
118
|
/** Summary for brand report: "5 brands, top 'BrandX' 82% visibility, 45% SoV" */
|
|
110
119
|
export function summaryForBrandsReport(rows) {
|
|
@@ -143,7 +152,7 @@ export function toolResult(data) {
|
|
|
143
152
|
* Uses `e.message` instead of `String(e)` to avoid exposing stack traces.
|
|
144
153
|
*/
|
|
145
154
|
export function toolError(e) {
|
|
146
|
-
const message = e instanceof Error ? e.message :
|
|
155
|
+
const message = e instanceof Error ? e.message : String(e);
|
|
147
156
|
return {
|
|
148
157
|
content: [{ type: "text", text: message }],
|
|
149
158
|
isError: true,
|
package/dist/util.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"util.js","sourceRoot":"","sources":["../src/util.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAUxB;;;GAGG;AACH,MAAM,UAAU,YAAY,CAAC,aAAgC;IAC3D,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC;QACtB,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,aAAsC,CAAC;QACrD,QAAQ,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;QAClC,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;KACnC,CAAC,CAAC,CAAC,QAAQ,CAAC,2DAA2D,CAAC,CAAC;AAC5E,CAAC;AAED,
|
|
1
|
+
{"version":3,"file":"util.js","sourceRoot":"","sources":["../src/util.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "mcp-server-peecai",
|
|
3
|
-
"version": "0.2.
|
|
4
|
-
"description": "Community MCP server for the Peec
|
|
3
|
+
"version": "0.2.1",
|
|
4
|
+
"description": "Community MCP server for the Peec AI API - AI Search Analytics",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"license": "MIT",
|
|
7
7
|
"author": "Tobias Hein (https://artaxo.com)",
|
|
@@ -45,10 +45,17 @@
|
|
|
45
45
|
"zod": "^4.3.6"
|
|
46
46
|
},
|
|
47
47
|
"devDependencies": {
|
|
48
|
-
"@
|
|
48
|
+
"@semantic-release/changelog": "^6.0.3",
|
|
49
|
+
"@semantic-release/git": "^10.0.1",
|
|
50
|
+
"@types/node": "^25.3.5",
|
|
51
|
+
"semantic-release": "^25.0.3",
|
|
49
52
|
"typescript": "^5.7.0",
|
|
50
53
|
"vitest": "^4.0.18"
|
|
51
54
|
},
|
|
55
|
+
"publishConfig": {
|
|
56
|
+
"access": "public",
|
|
57
|
+
"registry": "https://registry.npmjs.org/"
|
|
58
|
+
},
|
|
52
59
|
"engines": {
|
|
53
60
|
"node": ">=22.0.0"
|
|
54
61
|
},
|