@tensorfeed/mcp-server 2.0.6 → 2.1.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 CHANGED
@@ -2,6 +2,19 @@
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.1.0 - 2026-11-15
6
+
7
+ New tool: `ask_tensorfeed`. Ask a plain-language question about AI models,
8
+ providers, or AI security and get the answer itself, with the supporting data,
9
+ sources to cite, and up to three follow-up calls (paid ones carry their price).
10
+ It covers the best or cheapest model for a task, the price and specs of one
11
+ model, two models side by side, provider status, the latest AI news on a
12
+ topic, model deprecations, and CVE or CISA KEV lookups. It calls the free
13
+ `GET /api/ask` endpoint, so it needs no token.
14
+
15
+ `find_tensorfeed_data` stays, unchanged, for anything ask cannot answer. The
16
+ server now registers 25 tools. No other tool signatures change.
17
+
5
18
  ## 2.0.6 - 2026-10-29
6
19
 
7
20
  Dependency floor raise. `@modelcontextprotocol/sdk` now requires 1.32.2 or
package/README.md CHANGED
@@ -93,7 +93,7 @@ Models, prices, and latency move week to week. `route_verdict` is one signed cal
93
93
 
94
94
  ## Catalog
95
95
 
96
- 24 tools on this stdio package. The core flagships, the eight signed verdicts, the time-series tools, and the webhook watches are dedicated tools; the rest of the 100+ TensorFeed endpoints are reachable through the `find_tensorfeed_data` discovery tool and callable over HTTP. Free tiers need no token; paid tiers charge USDC on Base via x402 and return an AFTA-signed receipt. The hosted HTTP endpoint above carries a different, broader 27-tool set (SEC EDGAR, openFDA, EIA, USGS, NWS, AI papers, and more). The full tool reference lives in the [standalone repo](https://github.com/RipperMercs/tensorfeed-mcp).
96
+ 25 tools on this stdio package. `ask_tensorfeed` answers a plain-language question directly from free data (best or cheapest model for a task, model specs, provider status, news, deprecations, AI CVEs). The core flagships, the eight signed verdicts, the time-series tools, and the webhook watches are dedicated tools; the rest of the 100+ TensorFeed endpoints are reachable through the `find_tensorfeed_data` discovery tool and callable over HTTP. Free tiers need no token; paid tiers charge USDC on Base via x402 and return an AFTA-signed receipt. The hosted HTTP endpoint above carries a different, broader 30-tool set (SEC EDGAR, openFDA, EIA, USGS, NWS, AI papers, and more). The full tool reference lives in the [standalone repo](https://github.com/RipperMercs/tensorfeed-mcp).
97
97
 
98
98
  ### Verdict family
99
99
 
package/dist/index.js CHANGED
@@ -254,6 +254,36 @@ registerTool('get_ai_news', 'Get the latest AI news from TensorFeed.ai as a rank
254
254
  .join('\n\n');
255
255
  return { content: [{ type: 'text', text: text || 'No articles found.' }] };
256
256
  });
257
+ registerTool('ask_tensorfeed', 'Ask TensorFeed a plain-language question about AI models, providers, or AI security and get the answer itself, not a list of endpoints. Answers from free live data: the best or cheapest model for a task (coding, reasoning, writing), the price, context window, and specs of one model, two models side by side, whether an AI provider or service is down right now, the latest AI news on a topic, upcoming model deprecations and shutdowns, and CVE or CISA KEV lookups including AI packages like vllm. Returns a one or two sentence answer, the supporting data, sources with a tensorfeed.ai page to cite, and up to three follow-up calls (paid ones carry their price and what they add). When no direct answer applies it says so and returns the best-matching TensorFeed endpoints instead. Free, no auth. Examples: "cheapest model for coding with vision", "is OpenAI down right now?". Use this first for any AI model, pricing, status, news, or security question.', {
258
+ question: z.string().min(1).max(300).describe('The question, in plain language (300 characters max).'),
259
+ }, async ({ question }) => {
260
+ const a = (await fetchJSON(`/ask?q=${encodeURIComponent(question)}`));
261
+ const lines = [];
262
+ lines.push(a.answer ?? 'TensorFeed returned no answer for that question.');
263
+ if (a.intent || a.confidence)
264
+ lines.push('', `Intent: ${a.intent ?? 'unknown'} (confidence ${a.confidence ?? 'unknown'})${a.as_of ? `, data as of ${a.as_of}` : ''}`);
265
+ if (a.data !== undefined && a.data !== null) {
266
+ const json = JSON.stringify(a.data);
267
+ lines.push('', `Data: ${json.length > 4000 ? `${json.slice(0, 4000)}...` : json}`);
268
+ }
269
+ if (a.sources && a.sources.length > 0) {
270
+ lines.push('', 'Sources:');
271
+ for (const src of a.sources.slice(0, 5))
272
+ lines.push(`- ${src.page_url ?? src.endpoint} (data: ${src.endpoint})`);
273
+ }
274
+ if (a.next && a.next.length > 0) {
275
+ lines.push('', 'Next:');
276
+ for (const n of a.next.slice(0, 3)) {
277
+ const label = n.tool ? `${n.tool} tool or ${n.endpoint}` : n.endpoint;
278
+ lines.push(`- ${label} (${n.tier === 'paid' ? `paid, ${n.price ?? 'see pricing'}` : 'free'})${n.adds ? `: ${n.adds}` : ''}`);
279
+ }
280
+ }
281
+ if (a.limits && a.limits.length > 0)
282
+ lines.push('', `Limits: ${a.limits.join(' ')}`);
283
+ if (a.page_url)
284
+ lines.push('', `Source: ${a.page_url}`);
285
+ return { content: [{ type: 'text', text: lines.join(String.fromCharCode(10)) }] };
286
+ });
257
287
  // ── Tool: find_tensorfeed_data (discovery, long-tail surface) ───────
258
288
  registerTool('find_tensorfeed_data', 'Discover which TensorFeed endpoint answers a data need. Describe what you want in plain language (e.g. "trending AI papers", "is OpenAI down", "model price history") and this returns the 2 to 3 best-matching TensorFeed endpoints, each with its HTTP path, what it returns, and whether it is free or paid. TensorFeed exposes 100+ AI-ecosystem data and signed-verdict endpoints; the core ones are also dedicated tools, but the full catalog is reachable here and callable over HTTP (paid ones via x402 or a credits token). Free, no auth. Use this first when no dedicated tool obviously fits.', {
259
289
  query: z.string().max(500).describe('Plain-language description of the data or decision you need.'),
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tensorfeed/mcp-server",
3
- "version": "2.0.6",
3
+ "version": "2.1.0",
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",
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",
6
+ "version": "2.1.0",
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.6",
23
+ "version": "2.1.0",
24
24
  "runtimeHint": "npx",
25
25
  "transport": {
26
26
  "type": "stdio"