mcp-server-peecai 0.2.0 → 0.3.0
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 +24 -30
- 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 +38 -20
- package/dist/index.js.map +1 -1
- package/dist/prompts.d.ts +1 -1
- package/dist/prompts.js +19 -10
- package/dist/prompts.js.map +1 -1
- package/dist/tools/brands.js +8 -4
- package/dist/tools/brands.js.map +1 -1
- package/dist/tools/chat-content.js +7 -3
- package/dist/tools/chat-content.js.map +1 -1
- package/dist/tools/chats.js +10 -6
- package/dist/tools/chats.js.map +1 -1
- package/dist/tools/models.js +8 -4
- package/dist/tools/models.js.map +1 -1
- package/dist/tools/projects.js +7 -3
- package/dist/tools/projects.js.map +1 -1
- package/dist/tools/prompts.js +8 -4
- package/dist/tools/prompts.js.map +1 -1
- package/dist/tools/report-brands.js +17 -15
- package/dist/tools/report-brands.js.map +1 -1
- package/dist/tools/report-domains.js +17 -15
- package/dist/tools/report-domains.js.map +1 -1
- package/dist/tools/report-urls.js +17 -15
- package/dist/tools/report-urls.js.map +1 -1
- package/dist/tools/tags.js +8 -4
- package/dist/tools/tags.js.map +1 -1
- package/dist/tools/topics.js +8 -4
- package/dist/tools/topics.js.map +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 +8 -3
package/README.md
CHANGED
|
@@ -1,24 +1,28 @@
|
|
|
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
|
|
|
8
8
|
<p align="center">
|
|
9
|
+
<a href="https://github.com/thein-art/mcp-server-peecai/actions/workflows/ci.yml"><img src="https://img.shields.io/github/actions/workflow/status/thein-art/mcp-server-peecai/ci.yml?branch=main&style=flat-square&label=CI" alt="CI"></a>
|
|
9
10
|
<img src="https://img.shields.io/badge/node-%3E%3D22-brightgreen?style=flat-square&logo=node.js&logoColor=white" alt="Node.js >= 22">
|
|
10
11
|
<img src="https://img.shields.io/badge/MCP-compatible-0098FF?style=flat-square" alt="MCP compatible">
|
|
12
|
+
<a href="./LICENSE"><img src="https://img.shields.io/github/license/thein-art/mcp-server-peecai?style=flat-square" alt="License"></a>
|
|
13
|
+
<a href="https://www.npmjs.com/package/mcp-server-peecai"><img src="https://img.shields.io/npm/v/mcp-server-peecai?style=flat-square" alt="npm"></a>
|
|
14
|
+
<a href="https://www.npmjs.com/package/mcp-server-peecai"><img src="https://img.shields.io/npm/dm/mcp-server-peecai?style=flat-square" alt="Downloads"></a>
|
|
11
15
|
</p>
|
|
12
16
|
|
|
13
|
-
> **Note:** This is an unofficial community project, not affiliated with or endorsed by Peec.
|
|
17
|
+
> **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
18
|
|
|
15
|
-
> **API Beta:** The Peec
|
|
19
|
+
> **API Beta:** The Peec AI API is currently in beta — endpoints, payloads, and responses may change. Access is limited to Enterprise customers.
|
|
16
20
|
|
|
17
21
|
---
|
|
18
22
|
|
|
19
23
|
## What it does
|
|
20
24
|
|
|
21
|
-
Peec
|
|
25
|
+
Peec AI tracks how brands appear in AI-generated answers. This MCP server gives any MCP-compatible client direct access to that data — 11 tools covering projects, brands, prompts, chats, and analytics reports.
|
|
22
26
|
|
|
23
27
|
**Key capabilities:**
|
|
24
28
|
- Query brand visibility, sentiment, and position across AI models
|
|
@@ -32,30 +36,20 @@ Peec.ai tracks how brands appear in AI-generated answers. This MCP server gives
|
|
|
32
36
|
|
|
33
37
|
Sign up at [app.peec.ai](https://app.peec.ai) and create an API key under **Settings > API Keys**.
|
|
34
38
|
|
|
35
|
-
### 2.
|
|
36
|
-
|
|
37
|
-
```bash
|
|
38
|
-
git clone https://github.com/thein-art/mcp-server-peecai.git
|
|
39
|
-
cd mcp-server-peecai
|
|
40
|
-
npm install && npm run build
|
|
41
|
-
```
|
|
42
|
-
|
|
43
|
-
### 3. Configure
|
|
39
|
+
### 2. Configure
|
|
44
40
|
|
|
45
41
|
<details open>
|
|
46
42
|
<summary><strong>Claude Code</strong></summary>
|
|
47
43
|
|
|
48
|
-
The repository includes a `.mcp.json` for automatic setup. Set the environment variables and Claude Code will pick it up:
|
|
49
|
-
|
|
50
44
|
```bash
|
|
51
|
-
|
|
52
|
-
export PEECAI_PROJECT_ID="your-project-id" # optional default
|
|
45
|
+
claude mcp add --transport stdio peecai -- npx -y mcp-server-peecai
|
|
53
46
|
```
|
|
54
47
|
|
|
55
|
-
|
|
48
|
+
Set environment variables:
|
|
56
49
|
|
|
57
50
|
```bash
|
|
58
|
-
|
|
51
|
+
export PEECAI_API_KEY="your-api-key"
|
|
52
|
+
export PEECAI_PROJECT_ID="your-project-id" # optional default
|
|
59
53
|
```
|
|
60
54
|
|
|
61
55
|
</details>
|
|
@@ -69,8 +63,8 @@ Add to your `claude_desktop_config.json`:
|
|
|
69
63
|
{
|
|
70
64
|
"mcpServers": {
|
|
71
65
|
"peecai": {
|
|
72
|
-
"command": "
|
|
73
|
-
"args": ["
|
|
66
|
+
"command": "npx",
|
|
67
|
+
"args": ["-y", "mcp-server-peecai"],
|
|
74
68
|
"env": {
|
|
75
69
|
"PEECAI_API_KEY": "your-api-key",
|
|
76
70
|
"PEECAI_PROJECT_ID": "your-project-id"
|
|
@@ -91,8 +85,8 @@ Add to `.vscode/mcp.json` in your workspace:
|
|
|
91
85
|
{
|
|
92
86
|
"servers": {
|
|
93
87
|
"peecai": {
|
|
94
|
-
"command": "
|
|
95
|
-
"args": ["
|
|
88
|
+
"command": "npx",
|
|
89
|
+
"args": ["-y", "mcp-server-peecai"],
|
|
96
90
|
"env": {
|
|
97
91
|
"PEECAI_API_KEY": "your-api-key",
|
|
98
92
|
"PEECAI_PROJECT_ID": "your-project-id"
|
|
@@ -104,9 +98,9 @@ Add to `.vscode/mcp.json` in your workspace:
|
|
|
104
98
|
|
|
105
99
|
</details>
|
|
106
100
|
|
|
107
|
-
###
|
|
101
|
+
### 3. Verify
|
|
108
102
|
|
|
109
|
-
|
|
103
|
+
Confirm the `peecai` server is connected — in Claude Code run `/mcp`, in VS Code/Cursor check the MCP server status in the output panel.
|
|
110
104
|
|
|
111
105
|
## Tools
|
|
112
106
|
|
|
@@ -178,12 +172,12 @@ All report tools support `dimensions` for multi-level breakdowns: `prompt_id`, `
|
|
|
178
172
|
|------|:---------:|:----------:|:-----------:|
|
|
179
173
|
| All 11 tools | Yes | Yes | No |
|
|
180
174
|
|
|
181
|
-
All tools are read-only GET/POST queries against the Peec
|
|
175
|
+
All tools are read-only GET/POST queries against the Peec AI API. No data is modified.
|
|
182
176
|
|
|
183
177
|
## Example Prompts
|
|
184
178
|
|
|
185
179
|
```
|
|
186
|
-
"List my Peec
|
|
180
|
+
"List my Peec AI projects"
|
|
187
181
|
"Show brand visibility for the last 30 days"
|
|
188
182
|
"Which domains get cited most in AI search results?"
|
|
189
183
|
"Compare brand sentiment across ChatGPT and Perplexity"
|
|
@@ -200,7 +194,7 @@ All tools are read-only GET/POST queries against the Peec.ai API. No data is mod
|
|
|
200
194
|
|
|
201
195
|
## API Drift Detection
|
|
202
196
|
|
|
203
|
-
The Peec
|
|
197
|
+
The Peec AI API is in beta and may change. A drift detection script compares the live OpenAPI spec against a committed snapshot:
|
|
204
198
|
|
|
205
199
|
```bash
|
|
206
200
|
npm run check:api-drift
|
|
@@ -240,7 +234,7 @@ npm run check:api-drift # Check for API spec changes
|
|
|
240
234
|
```
|
|
241
235
|
src/
|
|
242
236
|
├── index.ts # Server entry point, tool registration
|
|
243
|
-
├── api-client.ts # HTTP client for Peec
|
|
237
|
+
├── api-client.ts # HTTP client for Peec AI Customer API
|
|
244
238
|
├── types.ts # TypeScript interfaces for API responses
|
|
245
239
|
├── util.ts # Shared validation, date handling, MCP response helpers
|
|
246
240
|
├── 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,15 +21,21 @@ 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");
|
|
27
30
|
process.exit(1);
|
|
28
31
|
}
|
|
29
32
|
const client = new PeecApiClient(apiKey);
|
|
30
|
-
const server = new McpServer({
|
|
31
|
-
|
|
32
|
-
|
|
33
|
+
const server = new McpServer({ name: "peecai", version }, {
|
|
34
|
+
instructions: "This server provides AI search analytics from Peec AI. " +
|
|
35
|
+
"Most tools require a project_id parameter — call list_projects first to find available project IDs. " +
|
|
36
|
+
"If PEECAI_PROJECT_ID is set, it will be used as the default when project_id is omitted. " +
|
|
37
|
+
"For reports (brands, domains, URLs), specify date ranges with start_date/end_date. " +
|
|
38
|
+
"Use list_brands, list_models, list_prompts to resolve IDs returned in reports.",
|
|
33
39
|
});
|
|
34
40
|
// Register tools
|
|
35
41
|
registerProjectsTool(server, client);
|
|
@@ -46,34 +52,46 @@ registerUrlsReportTool(server, client);
|
|
|
46
52
|
// Register MCP prompts (guided workflows)
|
|
47
53
|
registerPromptTemplates(server);
|
|
48
54
|
// Register resource: projects://list
|
|
49
|
-
server.
|
|
50
|
-
description: "List all available Peec
|
|
55
|
+
server.registerResource("projects-list", "projects://list", {
|
|
56
|
+
description: "List all available Peec AI projects for the authenticated account.",
|
|
51
57
|
mimeType: "application/json",
|
|
52
58
|
}, async () => {
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
59
|
+
try {
|
|
60
|
+
const projects = await client.get("/projects", { limit: 1000 });
|
|
61
|
+
return {
|
|
62
|
+
contents: [{
|
|
63
|
+
uri: "projects://list",
|
|
64
|
+
mimeType: "application/json",
|
|
65
|
+
text: JSON.stringify(projects),
|
|
66
|
+
}],
|
|
67
|
+
};
|
|
68
|
+
}
|
|
69
|
+
catch (e) {
|
|
70
|
+
const message = e instanceof Error ? e.message : String(e);
|
|
71
|
+
throw new Error(`Failed to fetch projects: ${message}`);
|
|
72
|
+
}
|
|
61
73
|
});
|
|
62
74
|
async function main() {
|
|
63
75
|
const transport = new StdioServerTransport();
|
|
64
76
|
await server.connect(transport);
|
|
65
|
-
console.error("Peec
|
|
66
|
-
// Graceful shutdown
|
|
77
|
+
console.error("Peec AI MCP server running on stdio");
|
|
78
|
+
// Graceful shutdown with timeout fallback
|
|
67
79
|
const shutdown = async () => {
|
|
68
|
-
console.error("Shutting down Peec
|
|
69
|
-
|
|
80
|
+
console.error("Shutting down Peec AI MCP server…");
|
|
81
|
+
const forceExit = setTimeout(() => process.exit(1), 5_000);
|
|
82
|
+
try {
|
|
83
|
+
await server.close();
|
|
84
|
+
}
|
|
85
|
+
finally {
|
|
86
|
+
clearTimeout(forceExit);
|
|
87
|
+
}
|
|
70
88
|
process.exit(0);
|
|
71
89
|
};
|
|
72
90
|
process.on("SIGINT", shutdown);
|
|
73
91
|
process.on("SIGTERM", shutdown);
|
|
74
92
|
}
|
|
75
93
|
main().catch((e) => {
|
|
76
|
-
console.error("Fatal error:", e);
|
|
94
|
+
console.error("Fatal error:", e instanceof Error ? e.message : e);
|
|
77
95
|
process.exit(1);
|
|
78
96
|
});
|
|
79
97
|
//# 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,10 +1,13 @@
|
|
|
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
|
-
server.
|
|
6
|
-
|
|
7
|
-
|
|
5
|
+
server.registerPrompt("brand-visibility-analysis", {
|
|
6
|
+
description: "Analyze brand visibility, sentiment, and position across AI models for a project.",
|
|
7
|
+
argsSchema: {
|
|
8
|
+
project_id: z.string().describe("Project ID (uses PEECAI_PROJECT_ID env if omitted)").optional(),
|
|
9
|
+
period: z.enum(["7d", "28d", "90d"]).default("28d").describe("Analysis period"),
|
|
10
|
+
},
|
|
8
11
|
}, ({ project_id, period }) => {
|
|
9
12
|
const days = { "7d": 7, "28d": 28, "90d": 90 }[period];
|
|
10
13
|
const endDate = new Date().toISOString().slice(0, 10);
|
|
@@ -32,9 +35,12 @@ export function registerPromptTemplates(server) {
|
|
|
32
35
|
}],
|
|
33
36
|
};
|
|
34
37
|
});
|
|
35
|
-
server.
|
|
36
|
-
|
|
37
|
-
|
|
38
|
+
server.registerPrompt("competitive-gap-analysis", {
|
|
39
|
+
description: "Compare own brand vs competitors — identify visibility gaps across prompts and models.",
|
|
40
|
+
argsSchema: {
|
|
41
|
+
project_id: z.string().describe("Project ID (uses PEECAI_PROJECT_ID env if omitted)").optional(),
|
|
42
|
+
period: z.enum(["7d", "28d", "90d"]).default("28d").describe("Analysis period"),
|
|
43
|
+
},
|
|
38
44
|
}, ({ project_id, period }) => {
|
|
39
45
|
const days = { "7d": 7, "28d": 28, "90d": 90 }[period];
|
|
40
46
|
const endDate = new Date().toISOString().slice(0, 10);
|
|
@@ -64,9 +70,12 @@ export function registerPromptTemplates(server) {
|
|
|
64
70
|
}],
|
|
65
71
|
};
|
|
66
72
|
});
|
|
67
|
-
server.
|
|
68
|
-
|
|
69
|
-
|
|
73
|
+
server.registerPrompt("ai-search-citation-report", {
|
|
74
|
+
description: "Analyze which URLs and domains get cited in AI responses — find content optimization opportunities.",
|
|
75
|
+
argsSchema: {
|
|
76
|
+
project_id: z.string().describe("Project ID (uses PEECAI_PROJECT_ID env if omitted)").optional(),
|
|
77
|
+
period: z.enum(["7d", "28d", "90d"]).default("28d").describe("Analysis period"),
|
|
78
|
+
},
|
|
70
79
|
}, ({ project_id, period }) => {
|
|
71
80
|
const days = { "7d": 7, "28d": 28, "90d": 90 }[period];
|
|
72
81
|
const endDate = new Date().toISOString().slice(0, 10);
|
package/dist/prompts.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prompts.js","sourceRoot":"","sources":["../src/prompts.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,4EAA4E;AAC5E,MAAM,UAAU,uBAAuB,CAAC,MAAiB;IACvD,MAAM,CAAC,
|
|
1
|
+
{"version":3,"file":"prompts.js","sourceRoot":"","sources":["../src/prompts.ts"],"names":[],"mappings":"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"}
|
package/dist/tools/brands.js
CHANGED
|
@@ -4,10 +4,14 @@ 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.
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
7
|
+
server.registerTool("list_brands", {
|
|
8
|
+
description: "List tracked brands for a Peec AI project. Returns brand IDs, names, and associated domains.",
|
|
9
|
+
inputSchema: {
|
|
10
|
+
project_id: z.string().describe("Project ID (uses PEECAI_PROJECT_ID env if omitted). Call list_projects to find IDs.").optional(),
|
|
11
|
+
limit: z.number().min(1).max(10000).default(1000).describe("Max results (1-10000)").optional(),
|
|
12
|
+
offset: z.number().min(0).default(0).describe("Results to skip").optional(),
|
|
13
|
+
},
|
|
14
|
+
annotations: { readOnlyHint: true, idempotentHint: true, destructiveHint: false, openWorldHint: false },
|
|
11
15
|
}, async ({ project_id, limit, offset }) => {
|
|
12
16
|
try {
|
|
13
17
|
const data = await client.get("/brands", {
|
package/dist/tools/brands.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"brands.js","sourceRoot":"","sources":["../../src/tools/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,cAAc,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAGrF,sFAAsF;AACtF,MAAM,UAAU,kBAAkB,CAAC,MAAiB,EAAE,MAAqB;IACzE,MAAM,CAAC,
|
|
1
|
+
{"version":3,"file":"brands.js","sourceRoot":"","sources":["../../src/tools/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,cAAc,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAGrF,sFAAsF;AACtF,MAAM,UAAU,kBAAkB,CAAC,MAAiB,EAAE,MAAqB;IACzE,MAAM,CAAC,YAAY,CACjB,aAAa,EACb;QACE,WAAW,EAAE,8FAA8F;QAC3G,WAAW,EAAE;YACX,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,qFAAqF,CAAC,CAAC,QAAQ,EAAE;YACjI,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,uBAAuB,CAAC,CAAC,QAAQ,EAAE;YAC9F,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,iBAAiB,CAAC,CAAC,QAAQ,EAAE;SAC5E;QACD,WAAW,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE,eAAe,EAAE,KAAK,EAAE,aAAa,EAAE,KAAK,EAAE;KACxG,EACD,KAAK,EAAE,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE;QACtC,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,GAAG,CAAU,SAAS,EAAE;gBAChD,UAAU,EAAE,gBAAgB,CAAC,UAAU,CAAC;gBACxC,KAAK;gBACL,MAAM;aACP,CAAC,CAAC;YACH,OAAO,UAAU,CAAC,EAAE,QAAQ,EAAE,cAAc,CAAC,QAAQ,EAAE,IAAI,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;QAChF,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,OAAO,SAAS,CAAC,CAAC,CAAC,CAAC;QACtB,CAAC;IACH,CAAC,CACF,CAAC;AACJ,CAAC"}
|
|
@@ -4,9 +4,13 @@ import { PeecApiClient } from "../api-client.js";
|
|
|
4
4
|
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
|
-
server.
|
|
8
|
-
|
|
9
|
-
|
|
7
|
+
server.registerTool("get_chat_content", {
|
|
8
|
+
description: "Get full content of a specific AI chat. Returns sources, brands mentioned, messages, queries, and products.",
|
|
9
|
+
inputSchema: {
|
|
10
|
+
chat_id: z.string().max(200).regex(/^[\w-]+$/, "Invalid chat_id format").describe("Chat ID to retrieve"),
|
|
11
|
+
project_id: z.string().describe("Project ID (uses PEECAI_PROJECT_ID env if omitted). Call list_projects to find IDs.").optional(),
|
|
12
|
+
},
|
|
13
|
+
annotations: { readOnlyHint: true, idempotentHint: true, destructiveHint: false, openWorldHint: false },
|
|
10
14
|
}, async ({ chat_id, project_id }) => {
|
|
11
15
|
try {
|
|
12
16
|
const data = await client.getRaw(`/chats/${chat_id}/content`, {
|
|
@@ -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,
|
|
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,YAAY,CACjB,kBAAkB,EAClB;QACE,WAAW,EAAE,6GAA6G;QAC1H,WAAW,EAAE;YACX,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,UAAU,EAAE,wBAAwB,CAAC,CAAC,QAAQ,CAAC,qBAAqB,CAAC;YACxG,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,qFAAqF,CAAC,CAAC,QAAQ,EAAE;SAClI;QACD,WAAW,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE,eAAe,EAAE,KAAK,EAAE,aAAa,EAAE,KAAK,EAAE;KACxG,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,12 +4,16 @@ 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.
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
7
|
+
server.registerTool("list_chats", {
|
|
8
|
+
description: "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.",
|
|
9
|
+
inputSchema: {
|
|
10
|
+
project_id: z.string().describe("Project ID (uses PEECAI_PROJECT_ID env if omitted). Call list_projects to find IDs.").optional(),
|
|
11
|
+
start_date: dateSchema.describe("Start date filter (YYYY-MM-DD). Omit for no lower bound.").optional(),
|
|
12
|
+
end_date: dateSchema.describe("End date filter (YYYY-MM-DD). Omit for no upper bound.").optional(),
|
|
13
|
+
limit: z.number().min(1).max(10000).default(100).describe("Max results (1-10000, default: 100)").optional(),
|
|
14
|
+
offset: z.number().min(0).default(0).describe("Results to skip").optional(),
|
|
15
|
+
},
|
|
16
|
+
annotations: { readOnlyHint: true, idempotentHint: true, destructiveHint: false, openWorldHint: false },
|
|
13
17
|
}, async ({ project_id, start_date, end_date, limit, offset }) => {
|
|
14
18
|
try {
|
|
15
19
|
const dates = validateDateRange(start_date, end_date);
|
package/dist/tools/chats.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chats.js","sourceRoot":"","sources":["../../src/tools/chats.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,iBAAiB,EAAE,cAAc,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAGpH,sGAAsG;AACtG,MAAM,UAAU,iBAAiB,CAAC,MAAiB,EAAE,MAAqB;IACxE,MAAM,CAAC,
|
|
1
|
+
{"version":3,"file":"chats.js","sourceRoot":"","sources":["../../src/tools/chats.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,iBAAiB,EAAE,cAAc,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAGpH,sGAAsG;AACtG,MAAM,UAAU,iBAAiB,CAAC,MAAiB,EAAE,MAAqB;IACxE,MAAM,CAAC,YAAY,CACjB,YAAY,EACZ;QACE,WAAW,EAAE,8NAA8N;QAC3O,WAAW,EAAE;YACX,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,qFAAqF,CAAC,CAAC,QAAQ,EAAE;YACjI,UAAU,EAAE,UAAU,CAAC,QAAQ,CAAC,0DAA0D,CAAC,CAAC,QAAQ,EAAE;YACtG,QAAQ,EAAE,UAAU,CAAC,QAAQ,CAAC,wDAAwD,CAAC,CAAC,QAAQ,EAAE;YAClG,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,CAAC,QAAQ,EAAE;YAC3G,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,iBAAiB,CAAC,CAAC,QAAQ,EAAE;SAC5E;QACD,WAAW,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE,eAAe,EAAE,KAAK,EAAE,aAAa,EAAE,KAAK,EAAE;KACxG,EACD,KAAK,EAAE,EAAE,UAAU,EAAE,UAAU,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE;QAC5D,IAAI,CAAC;YACH,MAAM,KAAK,GAAG,iBAAiB,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;YACtD,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,GAAG,CAAS,QAAQ,EAAE;gBAC9C,UAAU,EAAE,gBAAgB,CAAC,UAAU,CAAC;gBACxC,UAAU,EAAE,KAAK,CAAC,UAAU;gBAC5B,QAAQ,EAAE,KAAK,CAAC,QAAQ;gBACxB,KAAK;gBACL,MAAM;aACP,CAAC,CAAC;YACH,OAAO,UAAU,CAAC,EAAE,QAAQ,EAAE,cAAc,CAAC,OAAO,EAAE,IAAI,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;QAC9E,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,OAAO,SAAS,CAAC,CAAC,CAAC,CAAC;QACtB,CAAC;IACH,CAAC,CACF,CAAC;AACJ,CAAC"}
|
package/dist/tools/models.js
CHANGED
|
@@ -4,10 +4,14 @@ 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.
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
7
|
+
server.registerTool("list_models", {
|
|
8
|
+
description: "List AI models tracked by Peec AI (ChatGPT, Perplexity, etc.). Returns model IDs and active status.",
|
|
9
|
+
inputSchema: {
|
|
10
|
+
project_id: z.string().describe("Project ID (uses PEECAI_PROJECT_ID env if omitted). Call list_projects to find IDs.").optional(),
|
|
11
|
+
limit: z.number().min(1).max(10000).default(1000).describe("Max results (1-10000)").optional(),
|
|
12
|
+
offset: z.number().min(0).default(0).describe("Results to skip").optional(),
|
|
13
|
+
},
|
|
14
|
+
annotations: { readOnlyHint: true, idempotentHint: true, destructiveHint: false, openWorldHint: false },
|
|
11
15
|
}, async ({ project_id, limit, offset }) => {
|
|
12
16
|
try {
|
|
13
17
|
const data = await client.get("/models", {
|
package/dist/tools/models.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"models.js","sourceRoot":"","sources":["../../src/tools/models.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,cAAc,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAGrF,uEAAuE;AACvE,MAAM,UAAU,kBAAkB,CAAC,MAAiB,EAAE,MAAqB;IACzE,MAAM,CAAC,
|
|
1
|
+
{"version":3,"file":"models.js","sourceRoot":"","sources":["../../src/tools/models.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,cAAc,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAGrF,uEAAuE;AACvE,MAAM,UAAU,kBAAkB,CAAC,MAAiB,EAAE,MAAqB;IACzE,MAAM,CAAC,YAAY,CACjB,aAAa,EACb;QACE,WAAW,EAAE,qGAAqG;QAClH,WAAW,EAAE;YACX,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,qFAAqF,CAAC,CAAC,QAAQ,EAAE;YACjI,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,uBAAuB,CAAC,CAAC,QAAQ,EAAE;YAC9F,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,iBAAiB,CAAC,CAAC,QAAQ,EAAE;SAC5E;QACD,WAAW,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE,eAAe,EAAE,KAAK,EAAE,aAAa,EAAE,KAAK,EAAE;KACxG,EACD,KAAK,EAAE,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE;QACtC,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,GAAG,CAAU,SAAS,EAAE;gBAChD,UAAU,EAAE,gBAAgB,CAAC,UAAU,CAAC;gBACxC,KAAK;gBACL,MAAM;aACP,CAAC,CAAC;YACH,OAAO,UAAU,CAAC,EAAE,QAAQ,EAAE,cAAc,CAAC,QAAQ,EAAE,IAAI,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;QAChF,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,OAAO,SAAS,CAAC,CAAC,CAAC,CAAC;QACtB,CAAC;IACH,CAAC,CACF,CAAC;AACJ,CAAC"}
|
package/dist/tools/projects.js
CHANGED
|
@@ -4,9 +4,13 @@ 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.
|
|
8
|
-
|
|
9
|
-
|
|
7
|
+
server.registerTool("list_projects", {
|
|
8
|
+
description: "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.",
|
|
9
|
+
inputSchema: {
|
|
10
|
+
limit: z.number().min(1).max(10000).default(1000).describe("Max results to return (1-10000)").optional(),
|
|
11
|
+
offset: z.number().min(0).default(0).describe("Number of results to skip").optional(),
|
|
12
|
+
},
|
|
13
|
+
annotations: { readOnlyHint: true, idempotentHint: true, destructiveHint: false, openWorldHint: false },
|
|
10
14
|
}, async ({ limit, offset }) => {
|
|
11
15
|
try {
|
|
12
16
|
const data = await client.get("/projects", { limit, offset });
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"projects.js","sourceRoot":"","sources":["../../src/tools/projects.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,cAAc,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAGnE,4EAA4E;AAC5E,MAAM,UAAU,oBAAoB,CAAC,MAAiB,EAAE,MAAqB;IAC3E,MAAM,CAAC,
|
|
1
|
+
{"version":3,"file":"projects.js","sourceRoot":"","sources":["../../src/tools/projects.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,cAAc,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAGnE,4EAA4E;AAC5E,MAAM,UAAU,oBAAoB,CAAC,MAAiB,EAAE,MAAqB;IAC3E,MAAM,CAAC,YAAY,CACjB,eAAe,EACf;QACE,WAAW,EAAE,gSAAgS;QAC7S,WAAW,EAAE;YACX,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,iCAAiC,CAAC,CAAC,QAAQ,EAAE;YACxG,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,2BAA2B,CAAC,CAAC,QAAQ,EAAE;SACtF;QACD,WAAW,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE,eAAe,EAAE,KAAK,EAAE,aAAa,EAAE,KAAK,EAAE;KACxG,EACD,KAAK,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE;QAC1B,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,GAAG,CAAY,WAAW,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC;YACzE,OAAO,UAAU,CAAC,EAAE,QAAQ,EAAE,cAAc,CAAC,UAAU,EAAE,IAAI,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;QACpF,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,OAAO,SAAS,CAAC,CAAC,CAAC,CAAC;QACtB,CAAC;IACH,CAAC,CACF,CAAC;AACJ,CAAC"}
|
package/dist/tools/prompts.js
CHANGED
|
@@ -4,10 +4,14 @@ 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.
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
7
|
+
server.registerTool("list_prompts", {
|
|
8
|
+
description: "List search prompts for a Peec AI project. Returns prompt IDs, messages, tags, topics, locations, and search volume.",
|
|
9
|
+
inputSchema: {
|
|
10
|
+
project_id: z.string().describe("Project ID (uses PEECAI_PROJECT_ID env if omitted). Call list_projects to find IDs.").optional(),
|
|
11
|
+
limit: z.number().min(1).max(10000).default(1000).describe("Max results (1-10000)").optional(),
|
|
12
|
+
offset: z.number().min(0).default(0).describe("Results to skip").optional(),
|
|
13
|
+
},
|
|
14
|
+
annotations: { readOnlyHint: true, idempotentHint: true, destructiveHint: false, openWorldHint: false },
|
|
11
15
|
}, async ({ project_id, limit, offset }) => {
|
|
12
16
|
try {
|
|
13
17
|
const data = await client.get("/prompts", {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prompts.js","sourceRoot":"","sources":["../../src/tools/prompts.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,cAAc,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAGrF,mFAAmF;AACnF,MAAM,UAAU,mBAAmB,CAAC,MAAiB,EAAE,MAAqB;IAC1E,MAAM,CAAC,
|
|
1
|
+
{"version":3,"file":"prompts.js","sourceRoot":"","sources":["../../src/tools/prompts.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,cAAc,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAGrF,mFAAmF;AACnF,MAAM,UAAU,mBAAmB,CAAC,MAAiB,EAAE,MAAqB;IAC1E,MAAM,CAAC,YAAY,CACjB,cAAc,EACd;QACE,WAAW,EAAE,sHAAsH;QACnI,WAAW,EAAE;YACX,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,qFAAqF,CAAC,CAAC,QAAQ,EAAE;YACjI,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,uBAAuB,CAAC,CAAC,QAAQ,EAAE;YAC9F,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,iBAAiB,CAAC,CAAC,QAAQ,EAAE;SAC5E;QACD,WAAW,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE,eAAe,EAAE,KAAK,EAAE,aAAa,EAAE,KAAK,EAAE;KACxG,EACD,KAAK,EAAE,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE;QACtC,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,GAAG,CAAW,UAAU,EAAE;gBAClD,UAAU,EAAE,gBAAgB,CAAC,UAAU,CAAC;gBACxC,KAAK;gBACL,MAAM;aACP,CAAC,CAAC;YACH,OAAO,UAAU,CAAC,EAAE,QAAQ,EAAE,cAAc,CAAC,SAAS,EAAE,IAAI,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;QAClF,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,OAAO,SAAS,CAAC,CAAC,CAAC,CAAC;QACtB,CAAC;IACH,CAAC,CACF,CAAC;AACJ,CAAC"}
|
|
@@ -5,17 +5,21 @@ import { requireProjectId, dateSchema, dimensionsSchema, filterSchema, mergeFilt
|
|
|
5
5
|
const BRANDS_FILTER_FIELDS = ["model_id", "tag_id", "topic_id", "prompt_id", "brand_id"];
|
|
6
6
|
/** Registers the get_brands_report tool for brand visibility, sentiment, and position analytics. */
|
|
7
7
|
export function registerBrandsReportTool(server, client) {
|
|
8
|
-
server.
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
.
|
|
15
|
-
.
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
8
|
+
server.registerTool("get_brands_report", {
|
|
9
|
+
description: "Get brand analytics report per brand. Metrics: visibility (visibility_count/visibility_total), share_of_voice (0-1), mention_count, sentiment (0-100 scale, 50=neutral), position (avg rank when mentioned, lower=better). Returns up to limit results (default: 100). Use brand_id shortcut or filters array for server-side filtering. Supports date filtering and dimensional breakdowns. Without date filters, returns data across all available dates.",
|
|
10
|
+
inputSchema: {
|
|
11
|
+
project_id: z.string().describe("Project ID (uses PEECAI_PROJECT_ID env if omitted). Call list_projects to find IDs.").optional(),
|
|
12
|
+
start_date: dateSchema.describe("Start date (YYYY-MM-DD). Omit for no lower bound.").optional(),
|
|
13
|
+
end_date: dateSchema.describe("End date (YYYY-MM-DD). Omit for no upper bound.").optional(),
|
|
14
|
+
dimensions: dimensionsSchema.optional(),
|
|
15
|
+
brand_id: z.string()
|
|
16
|
+
.describe("Convenience filter for a single brand (converted to server-side filter). Use list_brands to find IDs.")
|
|
17
|
+
.optional(),
|
|
18
|
+
filters: filterSchema(BRANDS_FILTER_FIELDS).optional(),
|
|
19
|
+
limit: z.number().min(1).max(10000).default(100).describe("Max results (1-10000, default: 100)"),
|
|
20
|
+
offset: z.number().min(0).default(0).describe("Results to skip"),
|
|
21
|
+
},
|
|
22
|
+
annotations: { readOnlyHint: true, idempotentHint: true, destructiveHint: false, openWorldHint: false },
|
|
19
23
|
}, async ({ project_id, start_date, end_date, dimensions, brand_id, filters, limit, offset }) => {
|
|
20
24
|
try {
|
|
21
25
|
const dates = validateDateRange(start_date, end_date);
|
|
@@ -28,10 +32,8 @@ export function registerBrandsReportTool(server, client) {
|
|
|
28
32
|
body.end_date = dates.end_date;
|
|
29
33
|
if (dimensions)
|
|
30
34
|
body.dimensions = dimensions;
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
if (offset !== undefined)
|
|
34
|
-
body.offset = offset;
|
|
35
|
+
body.limit = limit;
|
|
36
|
+
body.offset = offset;
|
|
35
37
|
const merged = mergeFilters(filters, { field: "brand_id", value: brand_id });
|
|
36
38
|
if (merged)
|
|
37
39
|
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,
|
|
1
|
+
{"version":3,"file":"report-brands.js","sourceRoot":"","sources":["../../src/tools/report-brands.ts"],"names":[],"mappings":"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"}
|
|
@@ -5,17 +5,21 @@ import { requireProjectId, dateSchema, dimensionsSchema, filterSchema, mergeFilt
|
|
|
5
5
|
const DOMAINS_FILTER_FIELDS = ["model_id", "tag_id", "topic_id", "prompt_id", "domain", "url"];
|
|
6
6
|
/** Registers the get_domains_report tool for domain classification, usage, and citation analytics. */
|
|
7
7
|
export function registerDomainsReportTool(server, client) {
|
|
8
|
-
server.
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
.
|
|
15
|
-
.
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
8
|
+
server.registerTool("get_domains_report", {
|
|
9
|
+
description: "Get domain analytics report: usage_rate (0-1, share of chats citing this domain) and citation_avg (avg citations per chat). Classification values: OWN, CORPORATE, COMPETITOR, EDITORIAL, REFERENCE, INSTITUTIONAL, UGC, OTHER. Returns up to limit results (default: 100). Use classification shortcut or filters array for server-side filtering. Without date filters, returns data across all available dates.",
|
|
10
|
+
inputSchema: {
|
|
11
|
+
project_id: z.string().describe("Project ID (uses PEECAI_PROJECT_ID env if omitted). Call list_projects to find IDs.").optional(),
|
|
12
|
+
start_date: dateSchema.describe("Start date (YYYY-MM-DD). Omit for no lower bound.").optional(),
|
|
13
|
+
end_date: dateSchema.describe("End date (YYYY-MM-DD). Omit for no upper bound.").optional(),
|
|
14
|
+
dimensions: dimensionsSchema.optional(),
|
|
15
|
+
classification: z.enum(["OWN", "CORPORATE", "COMPETITOR", "EDITORIAL", "REFERENCE", "INSTITUTIONAL", "UGC", "OTHER"])
|
|
16
|
+
.describe("Convenience filter by domain classification (converted to server-side filter).")
|
|
17
|
+
.optional(),
|
|
18
|
+
filters: filterSchema(DOMAINS_FILTER_FIELDS).optional(),
|
|
19
|
+
limit: z.number().min(1).max(10000).default(100).describe("Max results (1-10000, default: 100)"),
|
|
20
|
+
offset: z.number().min(0).default(0).describe("Results to skip"),
|
|
21
|
+
},
|
|
22
|
+
annotations: { readOnlyHint: true, idempotentHint: true, destructiveHint: false, openWorldHint: false },
|
|
19
23
|
}, async ({ project_id, start_date, end_date, dimensions, classification, filters, limit, offset }) => {
|
|
20
24
|
try {
|
|
21
25
|
const dates = validateDateRange(start_date, end_date);
|
|
@@ -28,10 +32,8 @@ export function registerDomainsReportTool(server, client) {
|
|
|
28
32
|
body.end_date = dates.end_date;
|
|
29
33
|
if (dimensions)
|
|
30
34
|
body.dimensions = dimensions;
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
if (offset !== undefined)
|
|
34
|
-
body.offset = offset;
|
|
35
|
+
body.limit = limit;
|
|
36
|
+
body.offset = offset;
|
|
35
37
|
const merged = mergeFilters(filters, { field: "classification", value: classification });
|
|
36
38
|
if (merged)
|
|
37
39
|
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,
|
|
1
|
+
{"version":3,"file":"report-domains.js","sourceRoot":"","sources":["../../src/tools/report-domains.ts"],"names":[],"mappings":"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"}
|
|
@@ -5,17 +5,21 @@ import { requireProjectId, dateSchema, dimensionsSchema, filterSchema, mergeFilt
|
|
|
5
5
|
const URLS_FILTER_FIELDS = ["model_id", "tag_id", "topic_id", "prompt_id", "domain", "url"];
|
|
6
6
|
/** Registers the get_urls_report tool for URL classification, usage, and citation analytics. */
|
|
7
7
|
export function registerUrlsReportTool(server, client) {
|
|
8
|
-
server.
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
.
|
|
15
|
-
.
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
8
|
+
server.registerTool("get_urls_report", {
|
|
9
|
+
description: "Get URL analytics report: usage_count (chats citing this URL), citation_count (total citations), citation_avg (avg citations per chat). Classification values: HOMEPAGE, CATEGORY_PAGE, PRODUCT_PAGE, LISTICLE, COMPARISON, PROFILE, ALTERNATIVE, DISCUSSION, HOW_TO_GUIDE, ARTICLE, OTHER. Returns up to limit results (default: 100). Use classification shortcut or filters array for server-side filtering. Without date filters, returns data across all available dates.",
|
|
10
|
+
inputSchema: {
|
|
11
|
+
project_id: z.string().describe("Project ID (uses PEECAI_PROJECT_ID env if omitted). Call list_projects to find IDs.").optional(),
|
|
12
|
+
start_date: dateSchema.describe("Start date (YYYY-MM-DD). Omit for no lower bound.").optional(),
|
|
13
|
+
end_date: dateSchema.describe("End date (YYYY-MM-DD). Omit for no upper bound.").optional(),
|
|
14
|
+
dimensions: dimensionsSchema.optional(),
|
|
15
|
+
classification: z.enum(["HOMEPAGE", "CATEGORY_PAGE", "PRODUCT_PAGE", "LISTICLE", "COMPARISON", "PROFILE", "ALTERNATIVE", "DISCUSSION", "HOW_TO_GUIDE", "ARTICLE", "OTHER"])
|
|
16
|
+
.describe("Convenience filter by URL classification (converted to server-side filter).")
|
|
17
|
+
.optional(),
|
|
18
|
+
filters: filterSchema(URLS_FILTER_FIELDS).optional(),
|
|
19
|
+
limit: z.number().min(1).max(10000).default(100).describe("Max results (1-10000, default: 100)"),
|
|
20
|
+
offset: z.number().min(0).default(0).describe("Results to skip"),
|
|
21
|
+
},
|
|
22
|
+
annotations: { readOnlyHint: true, idempotentHint: true, destructiveHint: false, openWorldHint: false },
|
|
19
23
|
}, async ({ project_id, start_date, end_date, dimensions, classification, filters, limit, offset }) => {
|
|
20
24
|
try {
|
|
21
25
|
const dates = validateDateRange(start_date, end_date);
|
|
@@ -28,10 +32,8 @@ export function registerUrlsReportTool(server, client) {
|
|
|
28
32
|
body.end_date = dates.end_date;
|
|
29
33
|
if (dimensions)
|
|
30
34
|
body.dimensions = dimensions;
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
if (offset !== undefined)
|
|
34
|
-
body.offset = offset;
|
|
35
|
+
body.limit = limit;
|
|
36
|
+
body.offset = offset;
|
|
35
37
|
const merged = mergeFilters(filters, { field: "classification", value: classification });
|
|
36
38
|
if (merged)
|
|
37
39
|
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,
|
|
1
|
+
{"version":3,"file":"report-urls.js","sourceRoot":"","sources":["../../src/tools/report-urls.ts"],"names":[],"mappings":"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"}
|
package/dist/tools/tags.js
CHANGED
|
@@ -4,10 +4,14 @@ 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.
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
7
|
+
server.registerTool("list_tags", {
|
|
8
|
+
description: "List category tags for a Peec AI project. Returns tag IDs and names.",
|
|
9
|
+
inputSchema: {
|
|
10
|
+
project_id: z.string().describe("Project ID (uses PEECAI_PROJECT_ID env if omitted). Call list_projects to find IDs.").optional(),
|
|
11
|
+
limit: z.number().min(1).max(10000).default(1000).describe("Max results (1-10000)").optional(),
|
|
12
|
+
offset: z.number().min(0).default(0).describe("Results to skip").optional(),
|
|
13
|
+
},
|
|
14
|
+
annotations: { readOnlyHint: true, idempotentHint: true, destructiveHint: false, openWorldHint: false },
|
|
11
15
|
}, async ({ project_id, limit, offset }) => {
|
|
12
16
|
try {
|
|
13
17
|
const data = await client.get("/tags", {
|
package/dist/tools/tags.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tags.js","sourceRoot":"","sources":["../../src/tools/tags.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,cAAc,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAGrF,iEAAiE;AACjE,MAAM,UAAU,gBAAgB,CAAC,MAAiB,EAAE,MAAqB;IACvE,MAAM,CAAC,
|
|
1
|
+
{"version":3,"file":"tags.js","sourceRoot":"","sources":["../../src/tools/tags.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,cAAc,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAGrF,iEAAiE;AACjE,MAAM,UAAU,gBAAgB,CAAC,MAAiB,EAAE,MAAqB;IACvE,MAAM,CAAC,YAAY,CACjB,WAAW,EACX;QACE,WAAW,EAAE,sEAAsE;QACnF,WAAW,EAAE;YACX,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,qFAAqF,CAAC,CAAC,QAAQ,EAAE;YACjI,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,uBAAuB,CAAC,CAAC,QAAQ,EAAE;YAC9F,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,iBAAiB,CAAC,CAAC,QAAQ,EAAE;SAC5E;QACD,WAAW,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE,eAAe,EAAE,KAAK,EAAE,aAAa,EAAE,KAAK,EAAE;KACxG,EACD,KAAK,EAAE,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE;QACtC,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,GAAG,CAAQ,OAAO,EAAE;gBAC5C,UAAU,EAAE,gBAAgB,CAAC,UAAU,CAAC;gBACxC,KAAK;gBACL,MAAM;aACP,CAAC,CAAC;YACH,OAAO,UAAU,CAAC,EAAE,QAAQ,EAAE,cAAc,CAAC,MAAM,EAAE,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;QAC5E,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,OAAO,SAAS,CAAC,CAAC,CAAC,CAAC;QACtB,CAAC;IACH,CAAC,CACF,CAAC;AACJ,CAAC"}
|
package/dist/tools/topics.js
CHANGED
|
@@ -4,10 +4,14 @@ 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.
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
7
|
+
server.registerTool("list_topics", {
|
|
8
|
+
description: "List topic groupings for a Peec AI project. Returns topic IDs and names.",
|
|
9
|
+
inputSchema: {
|
|
10
|
+
project_id: z.string().describe("Project ID (uses PEECAI_PROJECT_ID env if omitted). Call list_projects to find IDs.").optional(),
|
|
11
|
+
limit: z.number().min(1).max(10000).default(1000).describe("Max results (1-10000)").optional(),
|
|
12
|
+
offset: z.number().min(0).default(0).describe("Results to skip").optional(),
|
|
13
|
+
},
|
|
14
|
+
annotations: { readOnlyHint: true, idempotentHint: true, destructiveHint: false, openWorldHint: false },
|
|
11
15
|
}, async ({ project_id, limit, offset }) => {
|
|
12
16
|
try {
|
|
13
17
|
const data = await client.get("/topics", {
|
package/dist/tools/topics.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"topics.js","sourceRoot":"","sources":["../../src/tools/topics.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,cAAc,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAGrF,qEAAqE;AACrE,MAAM,UAAU,kBAAkB,CAAC,MAAiB,EAAE,MAAqB;IACzE,MAAM,CAAC,
|
|
1
|
+
{"version":3,"file":"topics.js","sourceRoot":"","sources":["../../src/tools/topics.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,cAAc,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAGrF,qEAAqE;AACrE,MAAM,UAAU,kBAAkB,CAAC,MAAiB,EAAE,MAAqB;IACzE,MAAM,CAAC,YAAY,CACjB,aAAa,EACb;QACE,WAAW,EAAE,0EAA0E;QACvF,WAAW,EAAE;YACX,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,qFAAqF,CAAC,CAAC,QAAQ,EAAE;YACjI,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,uBAAuB,CAAC,CAAC,QAAQ,EAAE;YAC9F,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,iBAAiB,CAAC,CAAC,QAAQ,EAAE;SAC5E;QACD,WAAW,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE,eAAe,EAAE,KAAK,EAAE,aAAa,EAAE,KAAK,EAAE;KACxG,EACD,KAAK,EAAE,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE;QACtC,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,GAAG,CAAU,SAAS,EAAE;gBAChD,UAAU,EAAE,gBAAgB,CAAC,UAAU,CAAC;gBACxC,KAAK;gBACL,MAAM;aACP,CAAC,CAAC;YACH,OAAO,UAAU,CAAC,EAAE,QAAQ,EAAE,cAAc,CAAC,QAAQ,EAAE,IAAI,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;QAChF,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,OAAO,SAAS,CAAC,CAAC,CAAC,CAAC;QACtB,CAAC;IACH,CAAC,CACF,CAAC;AACJ,CAAC"}
|
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.
|
|
4
|
-
"description": "Community MCP server for the Peec
|
|
3
|
+
"version": "0.3.0",
|
|
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,15 @@
|
|
|
45
45
|
"zod": "^4.3.6"
|
|
46
46
|
},
|
|
47
47
|
"devDependencies": {
|
|
48
|
-
"@types/node": "^25.3.
|
|
48
|
+
"@types/node": "^25.3.5",
|
|
49
|
+
"semantic-release": "^25.0.3",
|
|
49
50
|
"typescript": "^5.7.0",
|
|
50
51
|
"vitest": "^4.0.18"
|
|
51
52
|
},
|
|
53
|
+
"publishConfig": {
|
|
54
|
+
"access": "public",
|
|
55
|
+
"registry": "https://registry.npmjs.org/"
|
|
56
|
+
},
|
|
52
57
|
"engines": {
|
|
53
58
|
"node": ">=22.0.0"
|
|
54
59
|
},
|