@tensorfeed/mcp-server 1.21.0 → 1.22.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/CHANGELOG.md +6 -0
- package/dist/index.js +52 -0
- package/package.json +1 -1
- package/server.json +5 -3
package/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,12 @@
|
|
|
2
2
|
|
|
3
3
|
All notable changes to the [TensorFeed.ai MCP server](https://github.com/RipperMercs/tensorfeed-mcp). Free tools work without configuration; premium tools require a bearer token via the `TENSORFEED_TOKEN` env var. Buy credits at [tensorfeed.ai/developers/agent-payments](https://tensorfeed.ai/developers/agent-payments).
|
|
4
4
|
|
|
5
|
+
## 1.22.0 - 2026-05-04
|
|
6
|
+
|
|
7
|
+
### Added
|
|
8
|
+
- Cross-provider uptime leaderboard tools: `status_leaderboard_free` (free, 7-day cap) and `status_leaderboard` (premium, 1 credit, up to 90 days). Returns providers ranked by uptime % DESC computed from minute-resolution counters (~720 samples per provider per day at the 2-min poll cadence). Premium adds `incident_count` and `mttr_minutes` (mean time to recover) per provider. Aimed at SRE/ops/procurement teams comparing AI vendor reliability for vendor selection or post-incident reviews.
|
|
9
|
+
- 4 new monitored providers behind every status tool: Google Gemini (via Google Cloud incidents), GitHub Copilot, Perplexity (via Instatus), and Groq. Brings total monitored to 10 major LLM providers.
|
|
10
|
+
|
|
5
11
|
## 1.21.0 - 2026-05-04
|
|
6
12
|
|
|
7
13
|
### Added
|
package/dist/index.js
CHANGED
|
@@ -298,6 +298,32 @@ registerTool('status_uptime_free', 'Daily uptime rollup for one provider over th
|
|
|
298
298
|
],
|
|
299
299
|
};
|
|
300
300
|
});
|
|
301
|
+
// ── Tool: status_leaderboard_free (free, 7-day cap) ─────────────────
|
|
302
|
+
registerTool('status_leaderboard_free', 'Cross-provider uptime leaderboard, ranked by uptime % DESC. Free, 7-day cap. Computed from minute-resolution counters (~720 samples per provider per day). For 90-day windows plus incident_count and mttr_minutes per provider use status_leaderboard (1 credit).', {
|
|
303
|
+
days: z.number().min(1).max(7).optional().describe('Rolling window length 1 to 7 days (default 7)'),
|
|
304
|
+
}, async ({ days }) => {
|
|
305
|
+
const params = new URLSearchParams();
|
|
306
|
+
if (typeof days === 'number')
|
|
307
|
+
params.set('days', String(days));
|
|
308
|
+
const qs = params.toString();
|
|
309
|
+
const data = (await fetchJSON(`/status/leaderboard${qs ? `?${qs}` : ''}`));
|
|
310
|
+
if (!data.ok) {
|
|
311
|
+
return {
|
|
312
|
+
content: [{ type: 'text', text: `Leaderboard unavailable: ${data.error ?? 'unknown'} - ${data.message ?? ''}` }],
|
|
313
|
+
};
|
|
314
|
+
}
|
|
315
|
+
const lines = (data.entries ?? [])
|
|
316
|
+
.slice(0, 10)
|
|
317
|
+
.map((e) => `#${e.rank} ${e.provider}: ${e.uptime_pct}% (${e.downtime_minutes}m downtime, ${e.hard_down_minutes}m hard-down)`);
|
|
318
|
+
return {
|
|
319
|
+
content: [
|
|
320
|
+
{
|
|
321
|
+
type: 'text',
|
|
322
|
+
text: `AI provider uptime leaderboard ${data.range?.from} to ${data.range?.to}\n${lines.join('\n')}`,
|
|
323
|
+
},
|
|
324
|
+
],
|
|
325
|
+
};
|
|
326
|
+
});
|
|
301
327
|
// ── Tool: pricing_series (1 credit) ─────────────────────────────────
|
|
302
328
|
registerTool('pricing_series', 'Daily price points for one AI model with min/max/delta summary. Default range = last 30 days, max 90 days. Costs 1 credit.', {
|
|
303
329
|
model: z.string().describe('Model id or display name (e.g. "Claude Opus 4.7" or "claude-opus-4-7")'),
|
|
@@ -376,6 +402,32 @@ registerTool('status_uptime', 'Daily uptime rollup for one provider with operati
|
|
|
376
402
|
],
|
|
377
403
|
};
|
|
378
404
|
});
|
|
405
|
+
// ── Tool: status_leaderboard (1 credit) ─────────────────────────────
|
|
406
|
+
registerTool('status_leaderboard', 'Cross-provider uptime leaderboard for a custom date range up to 90 days. Same minute-resolution counter source as status_leaderboard_free, but adds incident_count and mttr_minutes (mean time to recover) per provider. Sorted by uptime % DESC. Costs 1 credit.', {
|
|
407
|
+
from: z.string().optional().describe('Start date YYYY-MM-DD UTC (default: 30 days ago)'),
|
|
408
|
+
to: z.string().optional().describe('End date YYYY-MM-DD UTC (default: today)'),
|
|
409
|
+
}, async ({ from, to }) => {
|
|
410
|
+
const params = new URLSearchParams();
|
|
411
|
+
if (from)
|
|
412
|
+
params.set('from', from);
|
|
413
|
+
if (to)
|
|
414
|
+
params.set('to', to);
|
|
415
|
+
const data = (await fetchJSON(`/premium/status/leaderboard?${params}`, { auth: true }));
|
|
416
|
+
if (!data.ok) {
|
|
417
|
+
return {
|
|
418
|
+
content: [{ type: 'text', text: `Leaderboard unavailable: ${data.error ?? 'unknown'} - ${data.message ?? ''}` }],
|
|
419
|
+
};
|
|
420
|
+
}
|
|
421
|
+
const lines = (data.entries ?? []).map((e) => `#${e.rank} ${e.provider}: ${e.uptime_pct}% uptime, ${e.downtime_minutes}m downtime (${e.hard_down_minutes}m hard-down), ${e.incident_count ?? 0} incidents, MTTR ${e.mttr_minutes ?? 'n/a'}m`);
|
|
422
|
+
return {
|
|
423
|
+
content: [
|
|
424
|
+
{
|
|
425
|
+
type: 'text',
|
|
426
|
+
text: `AI provider uptime leaderboard ${data.range?.from} to ${data.range?.to}\n${lines.join('\n')}\n\nCredits remaining: ${data.billing?.credits_remaining ?? '?'}`,
|
|
427
|
+
},
|
|
428
|
+
],
|
|
429
|
+
};
|
|
430
|
+
});
|
|
379
431
|
// ── Tool: premium_agents_directory (1 credit) ───────────────────────
|
|
380
432
|
registerTool('premium_agents_directory', 'Enriched AI agents catalog joined with live status, recent news, agent traffic, flagship pricing, and a 0-100 trending_score. Costs 1 credit.', {
|
|
381
433
|
category: z.string().optional().describe('coding, research, general, creative, frameworks'),
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@tensorfeed/mcp-server",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.22.0",
|
|
4
4
|
"mcpName": "ai.tensorfeed/mcp-server",
|
|
5
5
|
"description": "MCP server for TensorFeed.ai - AI news, status, model data, and premium endpoints (routing, cost projection, forecast, history series, news search, webhook watches with digest tier, enriched directory) for AI agents",
|
|
6
6
|
"main": "dist/index.js",
|
package/server.json
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
"name": "ai.tensorfeed/mcp-server",
|
|
4
4
|
"title": "TensorFeed",
|
|
5
5
|
"description": "AI news, model pricing, service status, and machine-payable premium tools. AFTA-certified.",
|
|
6
|
-
"version": "1.
|
|
6
|
+
"version": "1.22.0",
|
|
7
7
|
"websiteUrl": "https://tensorfeed.ai/developers/agent-payments",
|
|
8
8
|
"repository": {
|
|
9
9
|
"url": "https://github.com/RipperMercs/tensorfeed-mcp",
|
|
@@ -14,7 +14,7 @@
|
|
|
14
14
|
"registryType": "npm",
|
|
15
15
|
"registryBaseUrl": "https://registry.npmjs.org",
|
|
16
16
|
"identifier": "@tensorfeed/mcp-server",
|
|
17
|
-
"version": "1.
|
|
17
|
+
"version": "1.22.0",
|
|
18
18
|
"runtimeHint": "npx",
|
|
19
19
|
"transport": {
|
|
20
20
|
"type": "stdio"
|
|
@@ -55,13 +55,15 @@
|
|
|
55
55
|
"get_ai_ecosystem_today",
|
|
56
56
|
"pricing_series_free",
|
|
57
57
|
"benchmark_series_free",
|
|
58
|
-
"status_uptime_free"
|
|
58
|
+
"status_uptime_free",
|
|
59
|
+
"status_leaderboard_free"
|
|
59
60
|
],
|
|
60
61
|
"premiumTools": [
|
|
61
62
|
"premium_routing",
|
|
62
63
|
"pricing_series",
|
|
63
64
|
"benchmark_series",
|
|
64
65
|
"status_uptime",
|
|
66
|
+
"status_leaderboard",
|
|
65
67
|
"premium_agents_directory",
|
|
66
68
|
"news_search",
|
|
67
69
|
"cost_projection",
|