@tensorfeed/mcp-server 1.37.0 → 1.38.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 +24 -0
- package/dist/index.js +6 -6
- package/package.json +1 -1
- package/server.json +6 -2
package/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,30 @@
|
|
|
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.38.0 - 2026-06-03
|
|
6
|
+
|
|
7
|
+
Description-only release. Sharpens the six foundational free tools (get_ai_news,
|
|
8
|
+
get_ai_status, is_service_down, get_model_pricing, get_ai_today, premium_routing)
|
|
9
|
+
so each states what it returns, why to call it instead of polling sources
|
|
10
|
+
directly, and its tier. get_ai_today drops an inaccurate 24-hour-window claim
|
|
11
|
+
(it returns the latest stories, not a strict time window). premium_routing now
|
|
12
|
+
points at its signed sibling route_verdict. No tool, pricing, or behavior
|
|
13
|
+
changes from 1.37.0.
|
|
14
|
+
|
|
15
|
+
## 1.37.0 - 2026-06-02
|
|
16
|
+
|
|
17
|
+
Adds four free agentic-web tools, bringing the catalog to 65 tools (41 free, 24
|
|
18
|
+
premium):
|
|
19
|
+
- `check_agent_ready`: score how agent-ready any tracked site is, 0 to 100, from
|
|
20
|
+
its x402 manifest, agent.json, OpenAPI spec, llms.txt, AI-bot crawlability,
|
|
21
|
+
and ai.txt.
|
|
22
|
+
- `agent_ready_summary`: the cross-domain readiness picture across about 500
|
|
23
|
+
curated domains, with per-surface adoption shares and a top-10 leaderboard.
|
|
24
|
+
- `check_crawler_access`: whether a site allows or blocks GPTBot, ClaudeBot, and
|
|
25
|
+
other AI crawlers, plus its llms.txt and ai.txt signals.
|
|
26
|
+
- `crawler_access_summary`: the aggregate AI-crawler access map across the
|
|
27
|
+
tracked domain set.
|
|
28
|
+
|
|
5
29
|
## 1.36.4 - 2026-05-31
|
|
6
30
|
|
|
7
31
|
Docs-only release. The README now opens with the Route Verdict quickstart: a
|
package/dist/index.js
CHANGED
|
@@ -178,7 +178,7 @@ server.registerResource('latest_news', 'tensorfeed://news/latest', {
|
|
|
178
178
|
};
|
|
179
179
|
});
|
|
180
180
|
// ── Tool: get_ai_news ───────────────────────────────────────────────
|
|
181
|
-
registerTool('get_ai_news', 'Get the latest AI news
|
|
181
|
+
registerTool('get_ai_news', 'Get the latest AI news from TensorFeed.ai as a ranked list with title, source, URL, snippet, and publish time, filterable by category (e.g. "anthropic", "openai", "research", "tools"). Aggregates 15+ sources (Anthropic, OpenAI, Google, TechCrunch, The Verge, arXiv, and more) into one normalized feed, so an agent reads one schema instead of polling each outlet. Free, no auth.', {
|
|
182
182
|
category: z.string().optional().describe('Filter by category (e.g. "anthropic", "openai", "research", "tools")'),
|
|
183
183
|
limit: z.number().min(1).max(50).optional().describe('Number of articles to return (default 10, max 50)'),
|
|
184
184
|
}, async ({ category, limit }) => {
|
|
@@ -193,7 +193,7 @@ registerTool('get_ai_news', 'Get the latest AI news articles from TensorFeed.ai.
|
|
|
193
193
|
return { content: [{ type: 'text', text: text || 'No articles found.' }] };
|
|
194
194
|
});
|
|
195
195
|
// ── Tool: get_ai_status ─────────────────────────────────────────────
|
|
196
|
-
registerTool('get_ai_status', 'Get real-time operational status of major AI services (Claude, OpenAI, Gemini, Mistral, Cohere, Replicate, Hugging Face).', {}, async () => {
|
|
196
|
+
registerTool('get_ai_status', 'Get the real-time operational status of major AI services (Claude, OpenAI, Gemini, Mistral, Cohere, Replicate, Hugging Face), including per-component breakdowns and an operational/degraded/down rollup per provider. One cross-provider status call instead of checking each vendor\'s status page, useful before an agent routes a request to a model that may be impaired. Free, no auth.', {}, async () => {
|
|
197
197
|
const data = await fetchJSON('/status');
|
|
198
198
|
const text = data.services
|
|
199
199
|
.map(s => {
|
|
@@ -206,7 +206,7 @@ registerTool('get_ai_status', 'Get real-time operational status of major AI serv
|
|
|
206
206
|
return { content: [{ type: 'text', text: `AI Service Status:\n${text}` }] };
|
|
207
207
|
});
|
|
208
208
|
// ── Tool: is_service_down ───────────────────────────────────────────
|
|
209
|
-
registerTool('is_service_down', 'Check
|
|
209
|
+
registerTool('is_service_down', 'Check whether one named AI service (e.g. "claude", "openai", "gemini", "mistral", "cohere", "hugging face", "replicate") is currently operational, degraded, or down, with its component-level breakdown. Matches on service or provider name and lists available services if there is no match, so an agent can gate a call on live status before sending traffic. Free, no auth.', {
|
|
210
210
|
service: z.string().describe('Service name to check (e.g. "claude", "openai", "gemini", "mistral", "cohere", "hugging face", "replicate")'),
|
|
211
211
|
}, async ({ service }) => {
|
|
212
212
|
const data = await fetchJSON('/status');
|
|
@@ -282,7 +282,7 @@ registerTool('crawler_access_summary', 'Get the aggregate AI-crawler access map
|
|
|
282
282
|
return { content: [{ type: 'text', text }] };
|
|
283
283
|
});
|
|
284
284
|
// ── Tool: get_model_pricing ─────────────────────────────────────────
|
|
285
|
-
registerTool('get_model_pricing', 'Get AI model pricing
|
|
285
|
+
registerTool('get_model_pricing', 'Get AI model pricing across major providers (Anthropic, OpenAI, Google, Meta, Mistral, Cohere) in one normalized table: input and output price per 1M tokens, context window, and release date per model. One cross-provider comparison instead of scraping six pricing pages, so an agent can pick the cheapest model that fits its context and budget. Free, no auth.', {}, async () => {
|
|
286
286
|
const data = await fetchJSON('/models');
|
|
287
287
|
const text = data.providers
|
|
288
288
|
.map(p => {
|
|
@@ -362,7 +362,7 @@ registerTool('get_model_deprecations', "Get the AI model deprecation calendar. P
|
|
|
362
362
|
return { content: [{ type: 'text', text: header + sections }] };
|
|
363
363
|
});
|
|
364
364
|
// ── Tool: get_ai_today ──────────────────────────────────────────────
|
|
365
|
-
registerTool('get_ai_today', 'Get a
|
|
365
|
+
registerTool('get_ai_today', 'Get a quick digest of the top AI stories from the latest TensorFeed news feed, each with title, source, and URL. A shorter, headline-only companion to get_ai_news for when an agent just needs a fast read on what is happening in AI right now rather than the full article set. Free, no auth.', {
|
|
366
366
|
limit: z.number().min(1).max(20).optional().describe('Number of stories (default 5)'),
|
|
367
367
|
}, async ({ limit }) => {
|
|
368
368
|
const data = await fetchJSON(`/news?limit=${limit || 5}`);
|
|
@@ -612,7 +612,7 @@ registerTool('get_account_usage', 'Show per-endpoint usage for the configured Te
|
|
|
612
612
|
};
|
|
613
613
|
});
|
|
614
614
|
// ── Tool: premium_routing (1 credit) ────────────────────────────────
|
|
615
|
-
registerTool('premium_routing', 'Get a ranked list of recommended AI models for a task with
|
|
615
|
+
registerTool('premium_routing', 'Get a ranked list of recommended AI models for a task (code, reasoning, creative, or general), each with a composite score plus the quality, availability, cost, and latency components that produced it, and the per-model input/output pricing. Constrain with budget, min_quality, and top_n so the ranking reflects your actual limits instead of a generic leaderboard. Costs 1 credit ($0.02), billed against your TENSORFEED_TOKEN. For a single signed routing decision with reasoning, see route_verdict.', {
|
|
616
616
|
task: z.enum(['code', 'reasoning', 'creative', 'general']).optional().describe('Task type the model needs to be good at (default: general)'),
|
|
617
617
|
budget: z.number().optional().describe('Max blended USD per 1M tokens'),
|
|
618
618
|
min_quality: z.number().min(0).max(1).optional().describe('Minimum quality score in [0, 1]'),
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@tensorfeed/mcp-server",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.38.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.38.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": "1.
|
|
23
|
+
"version": "1.38.0",
|
|
24
24
|
"runtimeHint": "npx",
|
|
25
25
|
"transport": {
|
|
26
26
|
"type": "stdio"
|
|
@@ -54,6 +54,10 @@
|
|
|
54
54
|
"get_honeypot_iocs",
|
|
55
55
|
"check_afta_certification",
|
|
56
56
|
"get_agent_reputation_card",
|
|
57
|
+
"check_agent_ready",
|
|
58
|
+
"agent_ready_summary",
|
|
59
|
+
"check_crawler_access",
|
|
60
|
+
"crawler_access_summary",
|
|
57
61
|
"mcp_registry_snapshot",
|
|
58
62
|
"probe_latest",
|
|
59
63
|
"get_ai_papers_trending",
|