@tensorfeed/mcp-server 2.0.4 → 2.0.6
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 +22 -0
- package/README.md +1 -1
- package/dist/index.js +3 -2
- package/dist/pages.d.ts +3 -0
- package/dist/pages.js +29 -0
- package/package.json +3 -3
- package/server.json +2 -2
package/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,28 @@
|
|
|
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
|
+
## 2.0.6 - 2026-10-29
|
|
6
|
+
|
|
7
|
+
Dependency floor raise. `@modelcontextprotocol/sdk` now requires 1.32.2 or
|
|
8
|
+
later and `zod` 4.6.7 or later, so every install resolves past the published
|
|
9
|
+
advisories in both (zod's memory exhaustion on oversized constrained
|
|
10
|
+
collections, and the SDK's OAuth client and experimental tasks issues).
|
|
11
|
+
`npm audit` on production dependencies reports zero. The server still runs
|
|
12
|
+
over stdio only.
|
|
13
|
+
|
|
14
|
+
No tool signatures change.
|
|
15
|
+
|
|
16
|
+
## 2.0.5 - 2026-10-19
|
|
17
|
+
|
|
18
|
+
Results now name the page they came from. A successful call to a tool whose
|
|
19
|
+
data has a tensorfeed.ai page (news, status, model pricing, the verdicts, the
|
|
20
|
+
pricing and benchmark series, compare_models) ends with a separate
|
|
21
|
+
`Source: https://tensorfeed.ai/...` content item, so an assistant citing the
|
|
22
|
+
answer can link a page a person can read. The data text itself is unchanged,
|
|
23
|
+
including any signed payload; error results carry no Source line.
|
|
24
|
+
|
|
25
|
+
No tool signatures change.
|
|
26
|
+
|
|
5
27
|
## 2.0.3 - 2026-07-06
|
|
6
28
|
|
|
7
29
|
Error-path and input hardening, completing the 2.0.2 output work.
|
package/README.md
CHANGED
|
@@ -8,7 +8,7 @@ This subfolder remains in the main `tensorfeed` repo as the **publishing source*
|
|
|
8
8
|
|
|
9
9
|
## Hosted remote endpoint (zero install, wallet-payable)
|
|
10
10
|
|
|
11
|
-
You do not need to install this package to use TensorFeed over MCP. A hosted Streamable HTTP endpoint serves
|
|
11
|
+
You do not need to install this package to use TensorFeed over MCP. A hosted Streamable HTTP endpoint serves the same design as 30 listed tools (15 free, 12 with a free tier and a paid full tier, 3 paid only), and the paid tiers are payable per call with nothing but a funded USDC wallet: no account, no signup, no API key.
|
|
12
12
|
|
|
13
13
|
| Surface | URL |
|
|
14
14
|
| --- | --- |
|
package/dist/index.js
CHANGED
|
@@ -6,6 +6,7 @@ import { readFileSync } from 'node:fs';
|
|
|
6
6
|
import { fileURLToPath } from 'node:url';
|
|
7
7
|
import { dirname, join } from 'node:path';
|
|
8
8
|
import { sanitizeToolResponse, sanitizeForLLM, sanitizeReflectedValue, sanitizeErrorText } from './sanitize.js';
|
|
9
|
+
import { withSourceLine } from './pages.js';
|
|
9
10
|
const API_BASE = 'https://tensorfeed.ai/api';
|
|
10
11
|
// Per-request upstream timeout. fetchJSON is the single HTTP helper behind every
|
|
11
12
|
// MCP tool and the latest_news resource, so a missing timeout would let one
|
|
@@ -162,7 +163,7 @@ function registerTool(name, description, paramsSchema, cb, annotations) {
|
|
|
162
163
|
const wrapped = (async (args, extra) => {
|
|
163
164
|
try {
|
|
164
165
|
const result = await cb(args, extra);
|
|
165
|
-
return sanitizeToolResponse(result);
|
|
166
|
+
return sanitizeToolResponse(withSourceLine(name, result));
|
|
166
167
|
}
|
|
167
168
|
catch (err) {
|
|
168
169
|
// The error path used to bypass the sanitizer entirely: a thrown
|
|
@@ -371,7 +372,7 @@ registerTool('route_verdict', "TensorFeed's signed model-routing decision: the s
|
|
|
371
372
|
model: z.string().max(200).optional().describe('Model id or display name to narrow the verdict to one model (e.g. "Claude Opus 5.5" or "claude-opus-5-5"). Provide task or model.'),
|
|
372
373
|
max_latency_p95_ms: z.number().optional().describe('Full tier only. Drop candidates whose measured p95 latency exceeds this value (ms).'),
|
|
373
374
|
budget: z.number().optional().describe('Full tier only. Max blended USD per 1M tokens.'),
|
|
374
|
-
min_quality: z.number().min(0).max(1).optional().describe('Full tier only. Minimum
|
|
375
|
+
min_quality: z.number().min(0).max(1).optional().describe('Full tier only. Minimum quality in [0, 1] as a share of the best candidate measured on the same benchmark set (0.9 keeps models within 10 percent of the top).'),
|
|
375
376
|
require_operational: z.boolean().optional().describe('Full tier only. Default true. Set false to keep candidates known down or in failover.'),
|
|
376
377
|
exclude_deprecated: z.boolean().optional().describe('Full tier only. Default true. Set false to keep deprecated or sunsetted models.'),
|
|
377
378
|
}, async ({ tier, task, model, max_latency_p95_ms, budget, min_quality, require_operational, exclude_deprecated }) => {
|
package/dist/pages.d.ts
ADDED
package/dist/pages.js
ADDED
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
// The tensorfeed.ai page that shows each tool's data. A successful result
|
|
2
|
+
// ends with a Source line naming it, so an assistant that cites TensorFeed
|
|
3
|
+
// links a page a person can read rather than nothing or a JSON endpoint.
|
|
4
|
+
// Mirrors worker/src/mcp-pages.ts for the tools both servers share.
|
|
5
|
+
export const TOOL_PAGES = {
|
|
6
|
+
get_ai_news: 'https://tensorfeed.ai',
|
|
7
|
+
get_ai_status: 'https://tensorfeed.ai/status',
|
|
8
|
+
is_service_down: 'https://tensorfeed.ai/status',
|
|
9
|
+
get_model_pricing: 'https://tensorfeed.ai/models',
|
|
10
|
+
route_verdict: 'https://tensorfeed.ai/intelligence',
|
|
11
|
+
provider_reliability_verdict: 'https://tensorfeed.ai/status',
|
|
12
|
+
failover_verdict: 'https://tensorfeed.ai/status',
|
|
13
|
+
status_uptime: 'https://tensorfeed.ai/status',
|
|
14
|
+
status_leaderboard: 'https://tensorfeed.ai/status',
|
|
15
|
+
stack_safety_verdict: 'https://tensorfeed.ai/cve-watch',
|
|
16
|
+
ssvc_verdict: 'https://tensorfeed.ai/cve-watch',
|
|
17
|
+
benchmark_trust_verdict: 'https://tensorfeed.ai/benchmarks',
|
|
18
|
+
benchmark_series: 'https://tensorfeed.ai/benchmarks',
|
|
19
|
+
pricing_series: 'https://tensorfeed.ai/models',
|
|
20
|
+
compare_models: 'https://tensorfeed.ai/compare',
|
|
21
|
+
};
|
|
22
|
+
/** Appends the Source line as its own content item, leaving the data text byte-identical. */
|
|
23
|
+
export function withSourceLine(name, result) {
|
|
24
|
+
const page = TOOL_PAGES[name];
|
|
25
|
+
const r = result;
|
|
26
|
+
if (!page || !r || r.isError || !Array.isArray(r.content))
|
|
27
|
+
return result;
|
|
28
|
+
return { ...r, content: [...r.content, { type: 'text', text: `Source: ${page}` }] };
|
|
29
|
+
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@tensorfeed/mcp-server",
|
|
3
|
-
"version": "2.0.
|
|
3
|
+
"version": "2.0.6",
|
|
4
4
|
"mcpName": "ai.tensorfeed/mcp-server",
|
|
5
5
|
"description": "MCP server for TensorFeed.ai - AI news, service status, model pricing, signed decision verdicts, time series, model comparison, webhook watches, and a discovery tool for the full TensorFeed data catalog, for AI agents",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -45,8 +45,8 @@
|
|
|
45
45
|
"url": "https://github.com/RipperMercs/tensorfeed-mcp/issues"
|
|
46
46
|
},
|
|
47
47
|
"dependencies": {
|
|
48
|
-
"@modelcontextprotocol/sdk": "^1.
|
|
49
|
-
"zod": "^4.
|
|
48
|
+
"@modelcontextprotocol/sdk": "^1.32.2",
|
|
49
|
+
"zod": "^4.6.7"
|
|
50
50
|
},
|
|
51
51
|
"devDependencies": {
|
|
52
52
|
"@types/node": "^25.5.0",
|
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": "2.0.
|
|
6
|
+
"version": "2.0.6",
|
|
7
7
|
"websiteUrl": "https://tensorfeed.ai/developers/agent-payments",
|
|
8
8
|
"repository": {
|
|
9
9
|
"url": "https://github.com/RipperMercs/tensorfeed-mcp",
|
|
@@ -20,7 +20,7 @@
|
|
|
20
20
|
"registryType": "npm",
|
|
21
21
|
"registryBaseUrl": "https://registry.npmjs.org",
|
|
22
22
|
"identifier": "@tensorfeed/mcp-server",
|
|
23
|
-
"version": "2.0.
|
|
23
|
+
"version": "2.0.6",
|
|
24
24
|
"runtimeHint": "npx",
|
|
25
25
|
"transport": {
|
|
26
26
|
"type": "stdio"
|