@tensorfeed/mcp-server 1.23.0 → 1.24.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,11 @@
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.24.0 - 2026-05-06
6
+
7
+ ### Added
8
+ - `get_model_deprecations` tool (free). Wraps the new `/api/model-deprecations` endpoint. Returns the provider-by-provider model retirement and deprecation calendar with announced / deprecation / sunset dates, recommended replacement model id, and a source URL pointing at the provider's own announcement. Optional `provider` and `status` filters. Agents that depend on a specific model id can now ask one question and learn whether the model will keep accepting traffic and, if not, what to migrate to. Closes the most-frequent agent-operator surprise in the production lifecycle.
9
+
5
10
  ## 1.23.0 - 2026-05-05
6
11
 
7
12
  ### Added
package/dist/index.js CHANGED
@@ -134,6 +134,66 @@ registerTool('get_model_pricing', 'Get AI model pricing comparison across all ma
134
134
  .join('\n\n');
135
135
  return { content: [{ type: 'text', text: `AI Model Pricing (per 1M tokens):\n\n${text}` }] };
136
136
  });
137
+ // ── Tool: get_model_deprecations ────────────────────────────────────
138
+ registerTool('get_model_deprecations', "Get the AI model deprecation calendar. Provider-by-provider registry of model retirements and deprecation announcements (OpenAI, Anthropic, Google, Cohere, and others). Each entry carries the announced/deprecation/sunset dates, the recommended replacement model, and a source URL pointing at the provider's own announcement. Useful for agents who need to know when a model they depend on will stop accepting traffic and what to migrate to.", {
139
+ provider: z
140
+ .string()
141
+ .optional()
142
+ .describe('Filter to a single provider (e.g. "OpenAI", "Anthropic", "Google", "Cohere"). Case-insensitive.'),
143
+ status: z
144
+ .enum(['announced', 'deprecated', 'sunsetted'])
145
+ .optional()
146
+ .describe('Filter by lifecycle stage. announced = deprecation announced but model still serves at full capacity; deprecated = past deprecation date, migration required; sunsetted = no longer accepts traffic.'),
147
+ }, async ({ provider, status }) => {
148
+ const params = new URLSearchParams();
149
+ if (provider)
150
+ params.set('provider', provider);
151
+ if (status)
152
+ params.set('status', status);
153
+ const qs = params.toString();
154
+ const data = await fetchJSON(`/model-deprecations${qs ? `?${qs}` : ''}`);
155
+ const entries = data.deprecations ?? [];
156
+ if (entries.length === 0) {
157
+ return {
158
+ content: [
159
+ {
160
+ type: 'text',
161
+ text: 'No model deprecations matched the filter. The full calendar is at https://tensorfeed.ai/model-deprecations.',
162
+ },
163
+ ],
164
+ };
165
+ }
166
+ // Group by provider for readable output.
167
+ const byProvider = new Map();
168
+ for (const d of entries) {
169
+ const list = byProvider.get(d.provider) ?? [];
170
+ list.push(d);
171
+ byProvider.set(d.provider, list);
172
+ }
173
+ const sections = Array.from(byProvider.entries())
174
+ .sort(([a], [b]) => a.localeCompare(b))
175
+ .map(([prov, list]) => {
176
+ const rows = list
177
+ .map(d => {
178
+ const dates = [
179
+ d.announcedDate ? `announced ${d.announcedDate}` : null,
180
+ d.deprecationDate ? `deprecated ${d.deprecationDate}` : null,
181
+ d.sunsetDate ? `sunset ${d.sunsetDate}` : null,
182
+ ]
183
+ .filter(Boolean)
184
+ .join(', ');
185
+ const display = d.modelDisplay ? ` (${d.modelDisplay})` : '';
186
+ const repl = d.replacement ? `\n replacement: ${d.replacement}` : '';
187
+ const note = d.notes ? `\n note: ${d.notes}` : '';
188
+ return ` ${d.model}${display} [${d.status.toUpperCase()}]\n ${dates}${repl}${note}\n source: ${d.sourceUrl}`;
189
+ })
190
+ .join('\n');
191
+ return `${prov}:\n${rows}`;
192
+ })
193
+ .join('\n\n');
194
+ const header = `AI Model Deprecation Calendar (${entries.length} ${entries.length === 1 ? 'entry' : 'entries'}, last updated ${data.lastUpdated ?? 'recently'}):\n\n`;
195
+ return { content: [{ type: 'text', text: header + sections }] };
196
+ });
137
197
  // ── Tool: get_ai_today ──────────────────────────────────────────────
138
198
  registerTool('get_ai_today', 'Get a summary of what happened in AI today. Returns the top stories from the last 24 hours.', {
139
199
  limit: z.number().min(1).max(20).optional().describe('Number of stories (default 5)'),
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tensorfeed/mcp-server",
3
- "version": "1.23.0",
3
+ "version": "1.24.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.23.0",
6
+ "version": "1.24.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.23.0",
17
+ "version": "1.24.0",
18
18
  "runtimeHint": "npx",
19
19
  "transport": {
20
20
  "type": "stdio"