@tenpo/mcp 0.2.1 → 0.2.2

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.
Files changed (3) hide show
  1. package/README.md +55 -43
  2. package/dist/index.js +8 -6
  3. package/package.json +1 -1
package/README.md CHANGED
@@ -9,7 +9,6 @@ Tenpo runs your dashboards *for* you — across every platform, every minute, in
9
9
 
10
10
  [![npm](https://img.shields.io/npm/v/@tenpo/mcp.svg?style=flat-square&color=000)](https://www.npmjs.com/package/@tenpo/mcp)
11
11
  [![license](https://img.shields.io/badge/license-MIT-000.svg?style=flat-square)](LICENSE)
12
- [![docs](https://img.shields.io/badge/docs-tenpo.ai-000.svg?style=flat-square)](https://tenpo.ai)
13
12
 
14
13
  [**Get started in 2 lines →**](#install-in-2-lines) · [**See it think →**](#how-tenpo-thinks) · [**What it covers →**](#what-tenpo-covers)
15
14
 
@@ -35,14 +34,13 @@ When you ask Tenpo something, it doesn't look up a pre-calculated answer. It que
35
34
 
36
35
  It's like having a business partner who:
37
36
 
38
- - Has memorised every order, product, customer, campaign, and supplier
39
- - Monitors your store 24/7, even when you're asleep
37
+ - Has memorised every order, product, customer, campaign, and supplier — once you connect them
40
38
  - Spots problems before they become expensive
41
39
  - Connects dots no human analyst would realistically cross-reference
42
40
  - Knows *when to act* and *when to ask*
43
41
  - Gets smarter about your specific business the longer you work together
44
42
 
45
- You bring an AI host (Claude, Cursor, ChatGPT). Tenpo brings the synapses. **Your AI does the thinking, Tenpo provides the truth.**
43
+ You bring an AI host (Claude Desktop, Cursor, Claude Code, Codex, Hermes, OpenClaw — anything that speaks MCP). Tenpo brings the synapses. **Your AI does the thinking, Tenpo provides the truth.**
46
44
 
47
45
  ---
48
46
 
@@ -158,19 +156,19 @@ What's my true ROAS after COGS + shipping + fees · which campaigns to pause rig
158
156
 
159
157
  <tr><td><b>Customers</b></td><td>
160
158
 
161
- Who's about to churn · predicted next order date per customer · top 1% / 10% / 25% concentration risk · cross-sell next-best-product · win-back the right customers at the right time · respond to support tickets in Gorgias/Zendesk · reply to reviews on Trustpilot/Okendo/Judge.me
159
+ Who's about to churn · predicted next order date per customer · top 1% / 10% / 25% concentration risk · cross-sell next-best-product · win-back the right customers at the right time · respond to support tickets in Gorgias / Zendesk · reply to reviews on Trustpilot / Okendo / Judge.me
162
160
 
163
161
  </td></tr>
164
162
 
165
163
  <tr><td><b>Finance & Operations</b></td><td>
166
164
 
167
- P&L waterfall (gross → COGS → fees → ad spend → operating profit) · what's leaking at each step · process Stripe refunds · push invoices to Xero/QuickBooks · create shipping labels · track shipments · sales-tax nexus monitoring · payout holds and disputes
165
+ P&L waterfall (gross → COGS → fees → ad spend → operating profit) · what's leaking at each step · process Stripe refunds · push invoices to Xero / QuickBooks · create shipping labels · track shipments · sales-tax nexus monitoring · payout holds and disputes
168
166
 
169
167
  </td></tr>
170
168
 
171
169
  <tr><td><b>Competitors</b></td><td>
172
170
 
173
- What's [competitor] priced at right now · who dropped prices this week · what emails are top brands sending this month · new SKUs they launched · their promo cadence · benchmark my AOV / LTV / repurchase rate against peers in my category (k-anonymous)
171
+ What's [competitor] priced at right now · who dropped prices this week · what emails are top brands sending this month · new SKUs they launched · their promo cadence · benchmark my AOV / LTV / repurchase rate against peers in my category (anonymous, k≥3 merchants)
174
172
 
175
173
  </td></tr>
176
174
 
@@ -182,7 +180,7 @@ Every Monday morning, send me a store overview · when revenue drops 30%, ping m
182
180
 
183
181
  </table>
184
182
 
185
- Eight headline sectors. Behind them: **45+ platform integrations, 229 tools your AI can call, 155 specialist skills loaded on demand, and 17 background patterns Tenpo watches for continuously.**
183
+ Eight headline sectors. Behind them: **47 platform integrations, 229 tools your AI can call, and 100+ specialist skills loaded automatically based on what you ask.**
186
184
 
187
185
  ---
188
186
 
@@ -209,23 +207,23 @@ When you ask about pricing, it thinks in a **Velocity × Margin matrix**. When y
209
207
 
210
208
  ---
211
209
 
212
- ## Proactive monitoringTenpo watching when you're not
210
+ ## Background watchersfor connected stores
213
211
 
214
- Every 15 minutes no AI required, just pure logicTenpo runs background checks:
212
+ Once you've connected at least one integration, Tenpo runs background checks on your data automatically no tier upgrade required, no manual setup:
215
213
 
216
- | Watch | What it catches |
214
+ | Watcher | What it catches |
217
215
  |---|---|
218
216
  | **Stock risk** | Products getting dangerously close to selling out before the next supplier delivery |
219
- | **Revenue anomaly** | Unexplained drops in week-over-week revenue |
220
- | **Supplier delays** | POs that didn't arrive by their expected date |
221
- | **Customer churn wave** | Regular customers who've gone quiet |
222
- | **Dead stock growth** | Products sitting in your warehouse not moving |
223
- | **Wasted ad spend** | Campaigns running below breakeven ROAS, ads on out-of-stock products |
224
- | **Concentration risk** | Too much revenue from too few customers |
217
+ | **Revenue cliff** | Unexplained week-over-week revenue drops |
218
+ | **Refund spike** | Today's refund count exceeding the recent baseline |
219
+ | **ROAS death** | Ad campaigns running below breakeven |
220
+ | **Dead stock with active ads** | Ad spend on SKUs that haven't sold in 14+ days while inventory sits |
221
+ | **Payment failure spike** | Stripe / processor anomalies signalling card-data drift or outages |
222
+ | **Inventory desync** | DB stock says "available", Shopify says "out" — pipeline drift |
225
223
 
226
- When it spots something, you get a notification on your preferred channel — Telegram, WhatsApp, Slack, email. When the situation resolves itself, the alert closes automatically.
224
+ When a watcher fires, you get a notification on the channel you set up — Telegram, WhatsApp, Slack, or email. When the situation resolves itself, the alert closes automatically.
227
225
 
228
- By the time you open your phone in the morning, Tenpo has already been watching your store all night.
226
+ > **What this needs:** at least one connected store + a notification channel set up. Watchers don't run for accounts that registered but never connected anything (we don't burn cycles on empty data).
229
227
 
230
228
  ---
231
229
 
@@ -235,7 +233,7 @@ By the time you open your phone in the morning, Tenpo has already been watching
235
233
  npx -y @tenpo/mcp
236
234
  ```
237
235
 
238
- That's the first line. First run auto-issues a free API key (500 calls/day, no expiry, no card).
236
+ That's the first line. **First run auto-issues a free API key** (500 calls/month, no expiry, no card, no signup form). The key prints once in the host's stderr — copy it into your config so it's reused next time.
239
237
 
240
238
  The second line goes into your AI host's config:
241
239
 
@@ -253,7 +251,7 @@ The second line goes into your AI host's config:
253
251
  }
254
252
  ```
255
253
 
256
- Restart Claude Desktop. The first call prints your key — paste it into `env.TENPO_API_KEY` to keep using the same one:
254
+ Restart Claude Desktop. The first call prints your auto-generated key — paste it into `env.TENPO_API_KEY` to keep using the same one across restarts:
257
255
 
258
256
  ```json
259
257
  {
@@ -276,6 +274,8 @@ Restart Claude Desktop. The first call prints your key — paste it into `env.TE
276
274
  claude mcp add tenpo --command "npx -y @tenpo/mcp"
277
275
  ```
278
276
 
277
+ The first call auto-issues your key. Add it to the env if you want it persisted across machines.
278
+
279
279
  </details>
280
280
 
281
281
  <details>
@@ -295,12 +295,23 @@ Settings → MCP → Add new global MCP server:
295
295
  }
296
296
  ```
297
297
 
298
+ Leave `TENPO_API_KEY` blank on first run — it'll be auto-issued and printed. Then paste it in.
299
+
298
300
  </details>
299
301
 
300
302
  <details>
301
- <summary><b>Codex, ChatGPT Desktop, Hermes, OpenClaw, or any MCP-compatible host</b></summary>
303
+ <summary><b>Codex · OpenClaw · Hermes · or any MCP-compatible host</b></summary>
304
+
305
+ Standard stdio transport. Point the client at `npx -y @tenpo/mcp`. The package is a small stdio↔HTTPS proxy — works in any MCP host.
302
306
 
303
- Standard stdio transport. Point the client at `npx -y @tenpo/mcp` with `TENPO_API_KEY` in env. The MCP package is a 15 KB stdio↔HTTPS proxy — works anywhere.
307
+ You don't need to provide an API key on first run. The MCP package will:
308
+
309
+ 1. See no `TENPO_API_KEY` in env
310
+ 2. Call the public `/api/v1/connect/issue-key` endpoint
311
+ 3. Print your new key to stderr in a framed banner
312
+ 4. Use it for the rest of the session
313
+
314
+ Save the key from that banner into `env.TENPO_API_KEY` so subsequent runs reuse it (otherwise a new key is issued each time).
304
315
 
305
316
  </details>
306
317
 
@@ -312,25 +323,27 @@ Once installed, just talk to your AI as you normally would. Say *"connect my sto
312
323
 
313
324
  Tenpo supports any storefront. Just say which one you're on:
314
325
 
315
- | Native, paste-token (90 seconds) | Native OAuth (3 min) | Custom adapters (5 min) | Anything else |
326
+ | Native, paste-token (90 sec) | Native OAuth (3 min) | Custom adapters (5 min) | Anything else |
316
327
  |---|---|---|---|
317
328
  | Shopify, WooCommerce | Amazon, Etsy | Squarespace, Wix, BigCommerce, Magento, Adobe Commerce, Salesforce Commerce Cloud, Webflow | CSV / JSON import — accepts Shopify, Woo, and Stripe export formats as-is |
318
329
 
319
- After your store connects, layer in the platforms that matter to you — Klaviyo, Mailchimp, Omnisend, Meta Ads, Google Ads, TikTok Ads, Google Analytics 4, Stripe, Gorgias, Zendesk, Xero, QuickBooks, Slack, Telegram, WhatsApp, 40+ others. Each one is a one-line ask: *"connect my Klaviyo."*
330
+ After your store connects, layer in the platforms that matter to you — Klaviyo, Mailchimp, Omnisend, Meta Ads, Google Ads, TikTok Ads, Google Analytics 4, Stripe, Gorgias, Zendesk, Xero, QuickBooks, Slack, Telegram, WhatsApp, 30+ others. Each one is a one-line ask: *"connect my Klaviyo."*
320
331
 
321
332
  ---
322
333
 
323
334
  ## Pricing
324
335
 
325
- | Tier | Daily calls | Cost | What you get |
336
+ | Tier | Cap | Price | What you get |
326
337
  |---|---|---|---|
327
- | **Free** | 500 / day | $0 | Every tool. Every integration. 1 connected store. No expiry. No card. |
328
- | **Pro Monthly** | 5,000 / day | $19 / mo | Everything in Free, higher limits, priority support |
329
- | **Pro Yearly** | Unlimited | $190 / yr | Everything in Pro, no daily cap, save $38 |
338
+ | **Free** | 500 calls / **month** | $0 | Every tool. Every integration. 1 connected store. No expiry. No card. |
339
+ | **Pro Monthly** | **Unlimited** | $19 / month | Everything in Free with no monthly cap. |
340
+ | **Pro Yearly** | **Unlimited** | $190 / year | Same as Pro Monthly, save $38. |
341
+
342
+ Your same API key works across tiers — upgrade just lifts the cap server-side. When you hit the free-tier cap, every response includes a one-click upgrade link. Pay → cap lifts in seconds (Dodo Payments).
330
343
 
331
- Your same API key works across tiers — upgrade just changes the server-side limit. When you hit the free-tier cap, every response includes a one-click upgrade link. Pay tier bumps in seconds (Dodo Payments).
344
+ The monthly cap resets on the 1st (UTC). 500 calls is roughly 50–80 user messages a month enough to evaluate, plus comfortable light use.
332
345
 
333
- **You always pay for your AI's tokens. Tenpo runs zero LLMs on our side** — every analytical tool is deterministic SQL or HTTP. That's why the free tier is genuinely free.
346
+ **You always pay for your AI's tokens. Tenpo runs no LLM in the analytical path on our side** — every analytical tool is deterministic SQL or HTTP. That's why the free tier is genuinely free.
334
347
 
335
348
  ---
336
349
 
@@ -338,12 +351,12 @@ Your same API key works across tiers — upgrade just changes the server-side li
338
351
 
339
352
  ```
340
353
  ┌──────────────────────────────────────────────────────────────────┐
341
- │ Claude Desktop · Cursor · Claude Code · ChatGPT · your host AI
354
+ │ Claude Desktop · Cursor · Claude Code · Codex · Hermes · etc.
342
355
  └──────────────────────┬───────────────────────────────────────────┘
343
356
  │ MCP protocol (stdio JSON-RPC)
344
357
 
345
358
  ┌──────────────────────────────────────────────────────────────────┐
346
- │ @tenpo/mcp (this package, 15 KB pure stdio↔HTTPS proxy)
359
+ │ @tenpo/mcp (this package — small stdio↔HTTPS proxy)
347
360
  └──────────────────────┬───────────────────────────────────────────┘
348
361
  │ HTTPS, Bearer tnp_live_*
349
362
 
@@ -351,9 +364,9 @@ Your same API key works across tiers — upgrade just changes the server-side li
351
364
  │ Tenpo backend │
352
365
  │ ├─ 229 deterministic tools (SQL helpers + HTTP integrations) │
353
366
  │ ├─ Per-merchant database (your data, isolated, encrypted) │
354
- │ ├─ Background syncs every 15 min (Klaviyo, Meta, GA4, Stripe…)
355
- │ ├─ Heartbeat monitors (revenue, stock, supplier, churn, ads…)
356
- │ └─ K-anonymous network telemetry (peer benchmarks, k≥3)
367
+ │ ├─ Background syncs every 15 min (only for connected merchants)
368
+ │ ├─ Background watchers (revenue, stock, supplier, churn, ads…)
369
+ │ └─ Anonymous network telemetry (peer benchmarks, k≥3 merchants)
357
370
  └──────────────────────────────────────────────────────────────────┘
358
371
  ```
359
372
 
@@ -366,7 +379,7 @@ Your AI does the synthesis. Tenpo provides the synapses.
366
379
  - **Your data is yours.** Per-merchant database, isolated from every other merchant. No cross-tenant queries are possible.
367
380
  - **Network telemetry is anonymous.** When Tenpo learns from cross-merchant patterns (e.g. "what most stores in your category approve"), merchant IDs are salt-hashed irreversibly. Free-text fields (email, phone, $ amounts, IDs, API tokens) are stripped to placeholders before any aggregation.
368
381
  - **K-anonymity (k≥3).** No stat surfaces until at least 3 distinct merchants contributed to it. You're never the only data point.
369
- - **No LLM on the analytical path.** Your data doesn't get sent to any model — Tenpo runs SQL and returns rows. Your AI (Claude, Cursor, etc.) sees the rows and writes a sentence.
382
+ - **No LLM on the analytical path.** Your data isn't sent to a model — Tenpo runs SQL and returns rows. Your AI host (Claude, Cursor, etc.) sees the rows and writes a sentence.
370
383
  - **Retention.** Raw events expire after 90 days. Aggregates kept indefinitely (already anonymised).
371
384
 
372
385
  ---
@@ -403,18 +416,17 @@ You don't need to know which tool runs. You don't need to learn a syntax. **Just
403
416
 
404
417
  ## Status
405
418
 
406
- - Production. Live at **[tenpo.ai](https://tenpo.ai)**.
407
- - Sub-10ms p50 latency on analytical tools (verified on multi-gigabyte stores).
408
- - 45+ platform integrations.
409
- - K-anonymous network intelligence with peer benchmarks.
410
- - Standard Webhooks signature verification + idempotent billing flow.
419
+ - 🟢 Backend live at `api.tenpo.ai`
420
+ - 🟢 Sub-10ms p50 latency on analytical tools (verified live)
421
+ - 🟢 47 platform integrations
422
+ - 🟢 Anonymous network intelligence with peer benchmarks
423
+ - 🟡 Public-facing site at tenpo.ai is in active development
411
424
 
412
425
  ---
413
426
 
414
427
  ## Support
415
428
 
416
429
  Questions, issues, feedback → **contact@tenpo.ai**
417
- Website → **[tenpo.ai](https://tenpo.ai)**
418
430
 
419
431
  ---
420
432
 
package/dist/index.js CHANGED
@@ -70,7 +70,7 @@ async function tenpoFetch(path, options = {}) {
70
70
  async function ensureApiKey() {
71
71
  if (TENPO_API_KEY)
72
72
  return;
73
- log("No TENPO_API_KEY set. Issuing free-tier key (500 calls/day, no expiry).");
73
+ log("No TENPO_API_KEY set auto-issuing a free key (500 calls/month, no card, no expiry).");
74
74
  try {
75
75
  // /api/v1/connect/issue-key is the current name; backend also accepts the
76
76
  // legacy /trial-key for back-compat with older MCP package versions.
@@ -80,17 +80,19 @@ async function ensureApiKey() {
80
80
  }));
81
81
  if (res.api_key) {
82
82
  TENPO_API_KEY = res.api_key;
83
+ const limit = res.monthly_call_limit ?? res.daily_call_limit ?? 500;
83
84
  log(`\n` +
84
85
  `╔══════════════════════════════════════════════════════════════════════╗\n` +
85
- `║ Tenpo MCP — Free Tier API Key Issued ║\n` +
86
+ `║ Tenpo — Free Key Issued ║\n` +
86
87
  `╠══════════════════════════════════════════════════════════════════════╣\n` +
87
- `║ Save this in your MCP config to keep using the same key: ║\n` +
88
+ `║ Add this to your MCP config so the same key is reused next time: ║\n` +
88
89
  `║ ║\n` +
89
90
  `║ TENPO_API_KEY=${(res.api_key ?? "").padEnd(54)}║\n` +
90
91
  `║ ║\n` +
91
- `║ Free tier: ${(res.daily_call_limit ?? 500).toString().padEnd(4)} calls/day, no expiry.${" ".repeat(28)}║\n` +
92
- `║ Upgrade for higher limits: ${(res.upgrade_url ?? "https://tenpo.ai/billing/upgrade").padEnd(42)}║\n` +
93
- `║ Connect your store: ${(res.connect_url ?? "https://tenpo.ai/connect").padEnd(42)}║\n` +
92
+ `║ Free tier: ${limit.toString().padEnd(4)} calls/month · resets the 1st (UTC) · no expiry.${" ".repeat(2)}║\n` +
93
+ `║ Upgrade ($19/mo unlimited): ${(res.upgrade_url ?? "https://tenpo.ai").padEnd(41)}║\n` +
94
+ `║ Connect your store: ${(res.connect_url ?? "https://tenpo.ai").padEnd(41)}║\n` +
95
+ `║ Questions? contact@tenpo.ai ║\n` +
94
96
  `╚══════════════════════════════════════════════════════════════════════╝\n`);
95
97
  }
96
98
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tenpo/mcp",
3
- "version": "0.2.1",
3
+ "version": "0.2.2",
4
4
  "description": "Tenpo — the operator that runs alongside your store. Connects to 45+ commerce platforms (Shopify, Klaviyo, Meta Ads, GA4, Stripe…) and gives any AI host (Claude Desktop, Cursor, Claude Code, ChatGPT) deterministic answers about your sales, ads, email, inventory, suppliers, customers, finance, and competitors. Free tier, no card required.",
5
5
  "license": "MIT",
6
6
  "homepage": "https://tenpo.ai",