pyxis-mcp 0.4.3 → 0.6.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 +32 -25
- package/dist/time-zone.js +1 -1
- package/dist/time-zone.js.map +1 -1
- package/dist/tools.js +129 -27
- package/dist/tools.js.map +1 -1
- package/package.json +2 -1
package/README.md
CHANGED
|
@@ -11,6 +11,7 @@ reading, through a connection or a token you can revoke at any time.**
|
|
|
11
11
|
[](https://github.com/samuelcsantana/pyxis-mcp/actions/workflows/ci.yml)
|
|
12
12
|
[](https://codecov.io/gh/samuelcsantana/pyxis-mcp)
|
|
13
13
|
[](https://github.com/samuelcsantana/pyxis-mcp/actions/workflows/codeql.yml)
|
|
14
|
+
[](https://scorecard.dev/viewer/?uri=github.com/samuelcsantana/pyxis-mcp)
|
|
14
15
|
<br>
|
|
15
16
|
[](LICENSE)
|
|
16
17
|
[](tsconfig.json)
|
|
@@ -24,26 +25,25 @@ reading, through a connection or a token you can revoke at any time.**
|
|
|
24
25
|
</div>
|
|
25
26
|
|
|
26
27
|
> **Status:** on npm as `pyxis-mcp`, every release published from GitHub Actions with
|
|
27
|
-
> provenance
|
|
28
|
-
> library, and the Pyxis API serves them at `https://api.pyxis-analytics.dev/mcp`, the remote
|
|
29
|
-
> connector that Claude and Claude Code sign in to with OAuth.
|
|
28
|
+
> provenance, and served by the Pyxis API at `https://api.pyxis-analytics.dev/mcp`.
|
|
30
29
|
|
|
31
30
|
## Ecosystem
|
|
32
31
|
|
|
33
|
-
| Repository | Role
|
|
34
|
-
| -------------------------------------------------------- |
|
|
35
|
-
| [pyxis-api](https://github.com/samuelcsantana/pyxis-api) | Ingestion,
|
|
36
|
-
| [pyxis-sdk](https://github.com/samuelcsantana/pyxis-sdk) | Browser tracker published to npm as `pyxis-analytics`
|
|
37
|
-
| [pyxis-web](https://github.com/samuelcsantana/pyxis-web) | The dashboard
|
|
38
|
-
| **pyxis-mcp** (this one) | MCP server
|
|
32
|
+
| Repository | Role |
|
|
33
|
+
| -------------------------------------------------------- | -------------------------------------------------------------------------------------- |
|
|
34
|
+
| [pyxis-api](https://github.com/samuelcsantana/pyxis-api) | Ingestion, sign-in, dashboard queries, accounts and billing, erasure, the MCP endpoint |
|
|
35
|
+
| [pyxis-sdk](https://github.com/samuelcsantana/pyxis-sdk) | Browser tracker published to npm as `pyxis-analytics` |
|
|
36
|
+
| [pyxis-web](https://github.com/samuelcsantana/pyxis-web) | The dashboard and the home page |
|
|
37
|
+
| **pyxis-mcp** (this one) | MCP server: Claude and other agents read the dashboard's numbers |
|
|
39
38
|
|
|
40
39
|
## Why it exists
|
|
41
40
|
|
|
42
41
|
More and more questions about a product are asked to an agent instead of a dashboard: "how did
|
|
43
42
|
last week compare", "where does the sign-up funnel lose people", "which route started failing".
|
|
44
43
|
This server gives Claude Code, Claude Desktop, Cursor and other MCP clients the same numbers the
|
|
45
|
-
Pyxis dashboard shows, and nothing more: it
|
|
46
|
-
|
|
44
|
+
Pyxis dashboard shows, and nothing more: it reads through a Claude connection the admin allows or
|
|
45
|
+
an access token the admin creates, both read-only and revocable in the dashboard's Settings at any
|
|
46
|
+
moment. Like the rest of Pyxis, there
|
|
47
47
|
is no personal data to hand over: events carry no cookies, no addresses and no user agents.
|
|
48
48
|
|
|
49
49
|
## Tools
|
|
@@ -58,19 +58,20 @@ dashboard; with a project that has received no event, the site does not run the
|
|
|
58
58
|
| ------------------ | --------------------------------------------------------------------------------------------------------- |
|
|
59
59
|
| `list_projects` | The projects the token can read: id, name, time zone, today there, conversion event, first and last event |
|
|
60
60
|
| `overview` | Visits, identified users, conversions and failed writes against the previous period; top pages and events |
|
|
61
|
-
| `devices` | Visits and conversions by device type, browser, system, country and
|
|
61
|
+
| `devices` | Visits and conversions by device type, browser, system, country, region and city; the reach of the range |
|
|
62
62
|
| `acquisition` | Visits per day and channel, and the sources and campaigns behind them |
|
|
63
63
|
| `engagement` | Entry and exit pages, single-page visits, visit length |
|
|
64
64
|
| `time_of_day` | Visits by weekday and local hour |
|
|
65
65
|
| `features` | The most used named events or screens, day by day |
|
|
66
66
|
| `event_properties` | How the property values of one named event break down |
|
|
67
|
+
| `property_summary` | The median and quartiles of a numeric property, split by another: how long people read each article |
|
|
67
68
|
| `requests` | Calls to the site's backend per route: failures, statuses, durations, latest errors |
|
|
68
69
|
| `funnel` | How many visits or people reached each step, and the time between steps |
|
|
69
70
|
| `funnel_segments` | The same funnel per device type or channel |
|
|
70
71
|
| `funnel_subjects` | The visits or people who reached, or dropped at, one step |
|
|
71
|
-
| `visits` | The visits of a range, filtered by pages, events, channel, device,
|
|
72
|
+
| `visits` | The visits of a range, filtered by pages, events, channel, device, place, campaign, failed requests |
|
|
72
73
|
| `visit_timeline` | Every event of one visit, or every visit of one identified person |
|
|
73
|
-
| `project_settings` | Time zone, conversion event, allowed origins, retention, live public keys
|
|
74
|
+
| `project_settings` | Time zone, conversion event, allowed origins, retention, whether the city is kept, live public keys |
|
|
74
75
|
|
|
75
76
|
A result is JSON text, `{ "untrusted_visitor_text": "…", "report": … }`: the report is the API's
|
|
76
77
|
answer, and the first field reminds the agent that names, paths and values inside it were written by
|
|
@@ -227,7 +228,7 @@ export function answerMcp(request: Request, callerToken: string): Promise<Respon
|
|
|
227
228
|
| Export | What it does |
|
|
228
229
|
| ------------------------------------------- | --------------------------------------------------------------------- |
|
|
229
230
|
| `handleHttpRequest(request, api, options?)` | Answers one MCP exchange: a web `Request` in, a web `Response` out |
|
|
230
|
-
| `createServer(api, options?)` | The MCP server with the
|
|
231
|
+
| `createServer(api, options?)` | The MCP server with the sixteen tools, for a transport of your choice |
|
|
231
232
|
| `new PyxisApi(options)` | The client the tools read through, one per caller |
|
|
232
233
|
|
|
233
234
|
`PyxisApi` options: `token` and `apiUrl` (required); `userAgent` (default `pyxis-mcp/<version>`);
|
|
@@ -265,9 +266,9 @@ signs Claude in with OAuth and runs the tools at `/mcp`.
|
|
|
265
266
|
|
|
266
267
|
## Tech stack
|
|
267
268
|
|
|
268
|
-
TypeScript (strict) on Node 22 or later, ES modules. Vitest with V8 coverage, ESLint
|
|
269
|
+
TypeScript (strict) on Node 22 or later, ES modules. Vitest with V8 coverage, fast-check, ESLint
|
|
269
270
|
(`typescript-eslint` strict, type-checked) and Prettier, Husky and commitlint, GitHub Actions with
|
|
270
|
-
CodeQL, Dependabot and release-please.
|
|
271
|
+
CodeQL, OpenSSF Scorecard, Dependabot and release-please.
|
|
271
272
|
|
|
272
273
|
## Getting started
|
|
273
274
|
|
|
@@ -282,6 +283,15 @@ npm run lint && npm run typecheck && npm run test:cov && npm run build
|
|
|
282
283
|
functions and lines. The server is tested with a real MCP client over an in-memory transport and
|
|
283
284
|
a fake `fetch`; the HTTP handler with web `Request` objects, from `initialize` to a tool call,
|
|
284
285
|
and every refusal.
|
|
286
|
+
- Property-based tests with [fast-check](https://fast-check.dev) (`src/*.property.test.ts`) check
|
|
287
|
+
the rules over generated inputs: `offsetOf` reads back any offset a time zone can name;
|
|
288
|
+
`inTimeZone` writes, for every time zone, a local time that names the same instant; `localTimes`
|
|
289
|
+
rewrites exactly the UTC instants at the given paths, adds or drops no field and changes nothing
|
|
290
|
+
more on a second pass; `readConfig` fails with nothing but a `ConfigError` for any environment
|
|
291
|
+
and accepts a token exactly when it matches the pattern; `todayIn` is the date of the local
|
|
292
|
+
times the reports write. Each property runs 200 times from a fixed seed
|
|
293
|
+
(`src/property-parameters.ts`, left out of the build), so CI and the pre-commit hook see the same
|
|
294
|
+
inputs, and a failure prints the counterexample with the seed to replay it.
|
|
285
295
|
- One file is left out of the unit coverage: `src/cli.ts`, which only wires the modules to the
|
|
286
296
|
standard input and output. `npm run test:e2e` covers it: after `npm run build`, a real MCP client
|
|
287
297
|
starts `dist/cli.js`, lists the tools and calls them against a local fake of the API, checks that
|
|
@@ -294,7 +304,8 @@ npm run lint && npm run typecheck && npm run test:cov && npm run build
|
|
|
294
304
|
package is also loaded by name with `import` and with `require`.
|
|
295
305
|
- `src/contract.test.ts` checks the tools against `contract/openapi.json`, the API's own contract
|
|
296
306
|
(`npm run contract:sync` copies it from pyxis-api): every route a token may read has a tool,
|
|
297
|
-
|
|
307
|
+
except the arrivals the dashboard polls to show that new data came in, every tool sends only
|
|
308
|
+
declared parameters, with values inside their enums, and every instant an
|
|
298
309
|
answer declares is one its tool writes in the project time zone, read from the answer's
|
|
299
310
|
`timezone`.
|
|
300
311
|
- `npm run test:tooling` tests the lint rule and the scripts.
|
|
@@ -306,7 +317,7 @@ npm run lint && npm run typecheck && npm run test:cov && npm run build
|
|
|
306
317
|
src/
|
|
307
318
|
├── config.ts reads PYXIS_TOKEN and PYXIS_API_URL
|
|
308
319
|
├── pyxis-api.ts one GET to the API, failures as sentences
|
|
309
|
-
├── tools.ts the
|
|
320
|
+
├── tools.ts the sixteen tools: input schemas, routes, requests
|
|
310
321
|
├── time-zone.ts writes the instants of an answer in the project time zone
|
|
311
322
|
├── server.ts registers the tools on the MCP server
|
|
312
323
|
├── http.ts one stateless Streamable HTTP exchange
|
|
@@ -344,12 +355,8 @@ docs/adr/ architecture decision records
|
|
|
344
355
|
|
|
345
356
|
## Roadmap
|
|
346
357
|
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
- [x] First release on npm, with provenance
|
|
350
|
-
- [x] The tools as a library, served over stateless Streamable HTTP by a host
|
|
351
|
-
- [x] A remote endpoint in the Pyxis API, signed in with OAuth, for clients that only take URLs
|
|
352
|
-
- [x] Setup for Claude, Claude Code and clients that send a header
|
|
358
|
+
What shipped, release by release, is in the [CHANGELOG](CHANGELOG.md) and the
|
|
359
|
+
[GitHub releases](https://github.com/samuelcsantana/pyxis-mcp/releases).
|
|
353
360
|
|
|
354
361
|
## Contributing and license
|
|
355
362
|
|
package/dist/time-zone.js
CHANGED
|
@@ -55,7 +55,7 @@ function rewriteAt(value, steps, rewrite) {
|
|
|
55
55
|
? value.map((item) => rewriteAt(item, rest, rewrite))
|
|
56
56
|
: value;
|
|
57
57
|
}
|
|
58
|
-
if (!isRecord(value) || !(step
|
|
58
|
+
if (!isRecord(value) || !Object.hasOwn(value, step)) {
|
|
59
59
|
return value;
|
|
60
60
|
}
|
|
61
61
|
return { ...value, [step]: rewriteAt(value[step], rest, rewrite) };
|
package/dist/time-zone.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"time-zone.js","sourceRoot":"","sources":["../src/time-zone.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"time-zone.js","sourceRoot":"","sources":["../src/time-zone.ts"],"names":[],"mappings":"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"}
|
package/dist/tools.js
CHANGED
|
@@ -9,12 +9,14 @@ const COUNTRY_CODE = /^[A-Z]{2}$/;
|
|
|
9
9
|
const REGION_CODE = /^[A-Z]{2}-[A-Z0-9]{1,3}$/;
|
|
10
10
|
const ROUTE = /^[A-Z]+ \/\S*$/;
|
|
11
11
|
const PROPERTY_FILTER = /^[^=]+=.+$/;
|
|
12
|
+
const PROPERTY_KEY = /^[a-z0-9_]{1,40}$/;
|
|
12
13
|
const MAX_FUNNEL_STEPS = 8;
|
|
13
14
|
const MIN_FUNNEL_STEPS = 2;
|
|
14
15
|
const MAX_VISIT_PAGES = 3;
|
|
15
16
|
const MAX_SOURCE_LENGTH = 128;
|
|
16
17
|
const MAX_CAMPAIGN_LENGTH = 64;
|
|
17
18
|
const MAX_TEXT_LENGTH = 512;
|
|
19
|
+
const MAX_CITY_LENGTH = 100;
|
|
18
20
|
export class ToolInputError extends Error {
|
|
19
21
|
constructor(message) {
|
|
20
22
|
super(message);
|
|
@@ -57,6 +59,51 @@ const eventName = z.string().regex(EVENT_NAME);
|
|
|
57
59
|
const pagePath = z.string().startsWith('/').max(MAX_TEXT_LENGTH);
|
|
58
60
|
const route = z.string().regex(ROUTE).max(MAX_TEXT_LENGTH);
|
|
59
61
|
const cursor = z.string().min(1).max(MAX_TEXT_LENGTH);
|
|
62
|
+
const propertyFilter = z.string().regex(PROPERTY_FILTER).max(MAX_TEXT_LENGTH);
|
|
63
|
+
const pagesFilter = z
|
|
64
|
+
.array(pagePath)
|
|
65
|
+
.max(MAX_VISIT_PAGES)
|
|
66
|
+
.optional()
|
|
67
|
+
.describe('Up to 3 page paths the visit viewed, every one of them; a star matches any characters.');
|
|
68
|
+
const channelFilter = z
|
|
69
|
+
.enum(['paid', 'email', 'social', 'campaign', 'organic', 'referral', 'direct'])
|
|
70
|
+
.optional();
|
|
71
|
+
const deviceFilter = z.enum(['mobile', 'tablet', 'desktop', 'other']).optional();
|
|
72
|
+
const browserFilter = z
|
|
73
|
+
.enum(['chrome', 'safari', 'firefox', 'edge', 'samsung', 'opera', 'other'])
|
|
74
|
+
.optional();
|
|
75
|
+
const osFilter = z
|
|
76
|
+
.enum(['android', 'ios', 'windows', 'macos', 'linux', 'chromeos', 'other'])
|
|
77
|
+
.optional();
|
|
78
|
+
const identityFilter = z.enum(['identified', 'anonymous']).optional();
|
|
79
|
+
const countryFilter = z
|
|
80
|
+
.string()
|
|
81
|
+
.regex(COUNTRY_CODE)
|
|
82
|
+
.optional()
|
|
83
|
+
.describe('Two-letter country code: BR.');
|
|
84
|
+
const regionFilter = z
|
|
85
|
+
.string()
|
|
86
|
+
.regex(REGION_CODE)
|
|
87
|
+
.optional()
|
|
88
|
+
.describe('ISO 3166-2 region code: BR-SP.');
|
|
89
|
+
const cityFilter = z
|
|
90
|
+
.string()
|
|
91
|
+
.min(1)
|
|
92
|
+
.max(MAX_CITY_LENGTH)
|
|
93
|
+
.optional()
|
|
94
|
+
.describe('An approximate city, by its exact name as devices lists it: Salvador. Needs region, since the same name exists in several regions.');
|
|
95
|
+
const sourceFilter = z
|
|
96
|
+
.string()
|
|
97
|
+
.min(1)
|
|
98
|
+
.max(MAX_SOURCE_LENGTH)
|
|
99
|
+
.optional()
|
|
100
|
+
.describe('The source as acquisition names it: campaign source, referring host, (ad click) or (direct).');
|
|
101
|
+
const campaignFilter = z
|
|
102
|
+
.string()
|
|
103
|
+
.min(1)
|
|
104
|
+
.max(MAX_CAMPAIGN_LENGTH)
|
|
105
|
+
.optional()
|
|
106
|
+
.describe('The utm_campaign.');
|
|
60
107
|
const funnelStep = z.discriminatedUnion('type', [
|
|
61
108
|
z.object({
|
|
62
109
|
type: z.literal('page'),
|
|
@@ -76,6 +123,11 @@ const funnelMode = z
|
|
|
76
123
|
.enum(['visit', 'user'])
|
|
77
124
|
.default('visit')
|
|
78
125
|
.describe('visit counts each visit on its own; user follows identified people across visits.');
|
|
126
|
+
function checkCityHasRegion(filters) {
|
|
127
|
+
if (filters.city !== undefined && filters.region === undefined) {
|
|
128
|
+
throw new ToolInputError('city is matched inside a region: give region too.');
|
|
129
|
+
}
|
|
130
|
+
}
|
|
79
131
|
function rangeQuery(args) {
|
|
80
132
|
return { from: args.from, to: args.to };
|
|
81
133
|
}
|
|
@@ -141,7 +193,7 @@ export const PYXIS_TOOLS = [
|
|
|
141
193
|
report: projectsReport,
|
|
142
194
|
}),
|
|
143
195
|
rangeTool('overview', 'Overview', 'overview', 'Visits, identified users, conversions and failed writes of a range against the previous period, the daily activity of both, and the top pages and events. A range that ends today is compared with the previous period up to the same time of day.'),
|
|
144
|
-
rangeTool('devices', 'Devices', 'devices', 'Visits and conversions by device type, browser, operating system, country and region.'),
|
|
196
|
+
rangeTool('devices', 'Devices', 'devices', 'Visits and conversions by device type, browser, operating system, country, region and approximate city, and the reach of the range. regions lists the top 10 regions (ISO 3166-2 codes such as BR-SP, with their names), then "other", then a null value for the visits without a region. cities lists the top 20 cities, each with its region, then "other", then a null value for the visits without a city. The city is kept only for a project whose owner turned it on (city_enabled in project_settings); with it off, every visit counts as without a city. reach counts the visits of the range and the continents (as UN M49 groups the countries: Americas, Europe, Asia, Africa, Oceania), countries, regions and cities they came from, with the country and the region that brought the most visits; unknown places count for none.'),
|
|
145
197
|
rangeTool('acquisition', 'Acquisition', 'acquisition', 'Visits per day and channel (paid, email, social, campaign, organic, referral, direct), and the sources and campaigns that brought them, with their conversions and ad clicks. A source is the campaign source, else the referring host; a visit with neither is (ad click) when it came from an ad click, such as one opened by an app that sends no referrer, and (direct) otherwise.'),
|
|
146
198
|
rangeTool('engagement', 'Engagement', 'engagement', 'The top entry and exit pages, the visits that viewed a single page, and how long visits lasted (median and buckets).'),
|
|
147
199
|
rangeTool('time_of_day', 'Time of day', 'time-of-day', 'The visits of the range by the weekday and the local hour they started.'),
|
|
@@ -176,6 +228,67 @@ export const PYXIS_TOOLS = [
|
|
|
176
228
|
query: { ...rangeQuery(args), name: args.event },
|
|
177
229
|
}),
|
|
178
230
|
}),
|
|
231
|
+
defineTool({
|
|
232
|
+
name: 'property_summary',
|
|
233
|
+
title: 'Property summary',
|
|
234
|
+
description: describeRangeTool('The median, 25th and 75th percentiles of one numeric property of a named event, overall and split by another property of the same event. It answers questions such as how long people read each article: the median of seconds on article_read_100, split by post. Only events whose property is a JSON number count: overall.events says how many, and the figures are null when none does. With by, groups holds the 10 values of that property carried by the most events, and other_count counts the events of every other value; events without it count in overall only. The visit filters keep only the events of the visits that match all of them.'),
|
|
235
|
+
inputSchema: {
|
|
236
|
+
...rangeShape,
|
|
237
|
+
event: eventName.describe('The named event whose property to sum up: article_read_100.'),
|
|
238
|
+
key: z.string().regex(PROPERTY_KEY).describe('The numeric property to sum up: seconds.'),
|
|
239
|
+
by: z
|
|
240
|
+
.string()
|
|
241
|
+
.regex(PROPERTY_KEY)
|
|
242
|
+
.optional()
|
|
243
|
+
.describe('Another property of the same event to split the figures by: post.'),
|
|
244
|
+
pages: pagesFilter,
|
|
245
|
+
visit_event: eventName.optional().describe('Only the visits that sent this named event.'),
|
|
246
|
+
visit_property: propertyFilter
|
|
247
|
+
.optional()
|
|
248
|
+
.describe('key=value: visit_event carried this property value. Needs visit_event.'),
|
|
249
|
+
channel: channelFilter,
|
|
250
|
+
device: deviceFilter,
|
|
251
|
+
browser: browserFilter,
|
|
252
|
+
os: osFilter,
|
|
253
|
+
identity: identityFilter,
|
|
254
|
+
country: countryFilter,
|
|
255
|
+
region: regionFilter,
|
|
256
|
+
city: cityFilter,
|
|
257
|
+
source: sourceFilter,
|
|
258
|
+
campaign: campaignFilter,
|
|
259
|
+
failed: z.boolean().optional().describe('true: only the visits with a failed request.'),
|
|
260
|
+
},
|
|
261
|
+
route: projectRoute('features/properties/summary'),
|
|
262
|
+
request: (args) => {
|
|
263
|
+
if (args.visit_property !== undefined && args.visit_event === undefined) {
|
|
264
|
+
throw new ToolInputError('visit_property filters the values of an event: give visit_event too.');
|
|
265
|
+
}
|
|
266
|
+
checkCityHasRegion(args);
|
|
267
|
+
return {
|
|
268
|
+
path: projectPath(args.project_id, 'features/properties/summary'),
|
|
269
|
+
query: {
|
|
270
|
+
...rangeQuery(args),
|
|
271
|
+
name: args.event,
|
|
272
|
+
key: args.key,
|
|
273
|
+
by: args.by,
|
|
274
|
+
path: args.pages,
|
|
275
|
+
event: args.visit_event,
|
|
276
|
+
property: args.visit_property,
|
|
277
|
+
channel: args.channel,
|
|
278
|
+
device: args.device,
|
|
279
|
+
browser: args.browser,
|
|
280
|
+
os: args.os,
|
|
281
|
+
identity: args.identity,
|
|
282
|
+
country: args.country,
|
|
283
|
+
region: args.region,
|
|
284
|
+
city: args.city,
|
|
285
|
+
source: args.source,
|
|
286
|
+
campaign: args.campaign,
|
|
287
|
+
failed: args.failed,
|
|
288
|
+
},
|
|
289
|
+
};
|
|
290
|
+
},
|
|
291
|
+
}),
|
|
179
292
|
defineTool({
|
|
180
293
|
name: 'requests',
|
|
181
294
|
title: 'Requests',
|
|
@@ -252,35 +365,22 @@ export const PYXIS_TOOLS = [
|
|
|
252
365
|
defineTool({
|
|
253
366
|
name: 'visits',
|
|
254
367
|
title: 'Visits',
|
|
255
|
-
description: describeRangeTool(withLocalTimes('The visits of a range, newest first, 50 a page, each with its entry page, page views, first named events, failed requests, source and
|
|
368
|
+
description: describeRangeTool(withLocalTimes('The visits of a range, newest first, 50 a page, each with its entry page, page views, first named events, failed requests, source, campaign, country, region and approximate city (null unless the project keeps the city), plus the total of matching visits. A visit is one browser tab; nothing links two of them unless the site identified the person.')),
|
|
256
369
|
inputSchema: {
|
|
257
370
|
...rangeShape,
|
|
258
|
-
pages:
|
|
259
|
-
.array(pagePath)
|
|
260
|
-
.max(MAX_VISIT_PAGES)
|
|
261
|
-
.optional()
|
|
262
|
-
.describe('Up to 3 page paths the visit viewed, every one of them; a star matches any characters.'),
|
|
371
|
+
pages: pagesFilter,
|
|
263
372
|
event: eventName.optional().describe('A named event the visit sent.'),
|
|
264
|
-
property:
|
|
265
|
-
.string()
|
|
266
|
-
.regex(PROPERTY_FILTER)
|
|
267
|
-
.max(MAX_TEXT_LENGTH)
|
|
373
|
+
property: propertyFilter
|
|
268
374
|
.optional()
|
|
269
375
|
.describe('key=value: the event above carried this property value. Needs event.'),
|
|
270
|
-
channel:
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
.string()
|
|
279
|
-
.min(1)
|
|
280
|
-
.max(MAX_SOURCE_LENGTH)
|
|
281
|
-
.optional()
|
|
282
|
-
.describe('The source as acquisition names it: campaign source, referring host, (ad click) or (direct).'),
|
|
283
|
-
campaign: z.string().min(1).max(MAX_CAMPAIGN_LENGTH).optional().describe('The utm_campaign.'),
|
|
376
|
+
channel: channelFilter,
|
|
377
|
+
device: deviceFilter,
|
|
378
|
+
identity: identityFilter,
|
|
379
|
+
country: countryFilter,
|
|
380
|
+
region: regionFilter,
|
|
381
|
+
city: cityFilter,
|
|
382
|
+
source: sourceFilter,
|
|
383
|
+
campaign: campaignFilter,
|
|
284
384
|
route: route.optional().describe('A request the visit made: POST /orders/:id.'),
|
|
285
385
|
failed: z
|
|
286
386
|
.boolean()
|
|
@@ -294,6 +394,7 @@ export const PYXIS_TOOLS = [
|
|
|
294
394
|
if (args.property !== undefined && args.event === undefined) {
|
|
295
395
|
throw new ToolInputError('property filters the values of an event: give event too.');
|
|
296
396
|
}
|
|
397
|
+
checkCityHasRegion(args);
|
|
297
398
|
return {
|
|
298
399
|
path: projectPath(args.project_id, 'visits'),
|
|
299
400
|
query: {
|
|
@@ -306,6 +407,7 @@ export const PYXIS_TOOLS = [
|
|
|
306
407
|
identity: args.identity,
|
|
307
408
|
country: args.country,
|
|
308
409
|
region: args.region,
|
|
410
|
+
city: args.city,
|
|
309
411
|
source: args.source,
|
|
310
412
|
campaign: args.campaign,
|
|
311
413
|
route: args.route,
|
|
@@ -318,7 +420,7 @@ export const PYXIS_TOOLS = [
|
|
|
318
420
|
defineTool({
|
|
319
421
|
name: 'visit_timeline',
|
|
320
422
|
title: 'Visit timeline',
|
|
321
|
-
description: `${withLocalTimes('Every event of one visit, or every visit of one identified person (the anonymous part of the visit they identified in included), newest first, 20 visits a page. It takes exactly one of session_id (a visit id from visits or funnel_subjects) or user_id.')}\n\n${VISITOR_TEXT_NOTE}`,
|
|
423
|
+
description: `${withLocalTimes('Every event of one visit, or every visit of one identified person (the anonymous part of the visit they identified in included), newest first, 20 visits a page; each visit names its country, region and approximate city (null unless the project keeps the city). It takes exactly one of session_id (a visit id from visits or funnel_subjects) or user_id.')}\n\n${VISITOR_TEXT_NOTE}`,
|
|
322
424
|
inputSchema: {
|
|
323
425
|
project_id: projectId,
|
|
324
426
|
session_id: z.uuid().optional().describe('A visit id, from visits or funnel_subjects.'),
|
|
@@ -357,7 +459,7 @@ export const PYXIS_TOOLS = [
|
|
|
357
459
|
defineTool({
|
|
358
460
|
name: 'project_settings',
|
|
359
461
|
title: 'Project settings',
|
|
360
|
-
description: withLocalTimes(
|
|
462
|
+
description: withLocalTimes("The settings of one project: time zone, conversion event, allowed origins, first and latest event, how many months events are kept, whether the visitor's approximate city is kept, the live public keys, and when each live secret key was created (never the secret key itself)."),
|
|
361
463
|
inputSchema: { project_id: projectId },
|
|
362
464
|
route: projectRoute('settings'),
|
|
363
465
|
instants: [
|
package/dist/tools.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tools.js","sourceRoot":"","sources":["../src/tools.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"tools.js","sourceRoot":"","sources":["../src/tools.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "pyxis-mcp",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.6.0",
|
|
4
4
|
"description": "MCP server for Pyxis, privacy-first product analytics: lets an AI agent read your dashboard's numbers with a read-only token, locally over stdio or hosted over HTTP.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"mcp",
|
|
@@ -61,6 +61,7 @@
|
|
|
61
61
|
"ajv-formats": "^3.0.1",
|
|
62
62
|
"eslint": "^10.12.0",
|
|
63
63
|
"eslint-config-prettier": "^10.1.8",
|
|
64
|
+
"fast-check": "^4.10.2",
|
|
64
65
|
"husky": "^9.1.7",
|
|
65
66
|
"lint-staged": "^17.6.0",
|
|
66
67
|
"prettier": "^3.9.10",
|