@tenpo/mcp 0.2.0 → 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 +302 -100
  2. package/dist/index.js +8 -6
  3. package/package.json +2 -2
package/README.md CHANGED
@@ -1,70 +1,244 @@
1
- # @tenpo/mcp
1
+ <div align="center">
2
2
 
3
- > The commerce intelligence layer for any AI agent.
4
- > 229 deterministic tools across orders, ads, email, inventory, suppliers, customers, finance, and competitors —
5
- > exposed as a Model Context Protocol server that plugs into Claude Code, Cursor, Claude Desktop, ChatGPT, or any MCP host.
3
+ # Tenpo
6
4
 
7
- [![npm](https://img.shields.io/npm/v/@tenpo/mcp.svg)](https://www.npmjs.com/package/@tenpo/mcp)
8
- [![license](https://img.shields.io/badge/license-MIT-blue.svg)](LICENSE)
5
+ **The operator that runs alongside your store.**
9
6
 
10
- ```bash
11
- npx -y @tenpo/mcp
12
- ```
7
+ Most "AI for e-commerce" tools answer questions about your dashboard.
8
+ Tenpo runs your dashboards *for* you — across every platform, every minute, in plain English.
9
+
10
+ [![npm](https://img.shields.io/npm/v/@tenpo/mcp.svg?style=flat-square&color=000)](https://www.npmjs.com/package/@tenpo/mcp)
11
+ [![license](https://img.shields.io/badge/license-MIT-000.svg?style=flat-square)](LICENSE)
12
+
13
+ [**Get started in 2 lines →**](#install-in-2-lines) · [**See it think →**](#how-tenpo-thinks) · [**What it covers →**](#what-tenpo-covers)
14
+
15
+ </div>
16
+
17
+ ---
18
+
19
+ ## The problem every store owner has
20
+
21
+ Your orders are in Shopify. Your marketing is split across Meta, Google, and TikTok. Customer support lives in Gorgias. Email is in Klaviyo. Inventory is somewhere else. Accounting is in Xero.
22
+
23
+ You can see that revenue dropped. You can't easily see **why**. Is it a stock issue? An ad problem? A supplier delay? A churn wave? You'd need hours of cross-referencing — and most store owners don't have those hours.
24
+
25
+ Decisions get made on gut feel. Problems get spotted late. Opportunities get missed entirely.
26
+
27
+ ---
28
+
29
+ ## What Tenpo is
30
+
31
+ Not a dashboard. Not a chatbot. **An operator that runs your store next to you.**
32
+
33
+ When you ask Tenpo something, it doesn't look up a pre-calculated answer. It queries your live data across every connected platform, traces the cause back through every related signal, attaches a financial impact, and tells you exactly what to do — in one message.
13
34
 
14
- That's it. First run auto-issues a free API key (500 calls/day, no expiry, no card).
35
+ It's like having a business partner who:
36
+
37
+ - Has memorised every order, product, customer, campaign, and supplier — once you connect them
38
+ - Spots problems before they become expensive
39
+ - Connects dots no human analyst would realistically cross-reference
40
+ - Knows *when to act* and *when to ask*
41
+ - Gets smarter about your specific business the longer you work together
42
+
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.**
15
44
 
16
45
  ---
17
46
 
18
- ## Why Tenpo MCP
47
+ ## How Tenpo thinks
48
+
49
+ The thing that makes Tenpo different isn't a feature. It's how it reasons.
50
+
51
+ Most tools answer the question you asked. Tenpo answers the question that **matters** — which is usually a different one.
52
+
53
+ You ask: *"Why is revenue down this week?"*
54
+
55
+ A normal tool says "revenue dropped 31% vs last week." Accurate but useless.
56
+
57
+ Tenpo runs this instead:
58
+
59
+ ```
60
+ "Revenue is down 31% this week"
61
+
62
+ ┌─────────┴──────────┐
63
+ ▼ ▼
64
+ When did it drop? What drove last
65
+ → Tuesday week's revenue?
66
+ │ │
67
+ ▼ ▼
68
+ What happened Are those products
69
+ on Tuesday? still in stock?
70
+ │ │
71
+ ▼ ▼
72
+ 3 top SKUs went NO — all 3 went OOS
73
+ out of stock on Tuesday
74
+ │ │
75
+ └─────────┬──────────┘
76
+
77
+ Are ads still running on those OOS products?
78
+
79
+
80
+ YES — $840/week wasted
81
+
82
+ ┌─────────┴──────────┐
83
+ ▼ ▼
84
+ When's the next Are customers
85
+ PO arriving? churning because of this?
86
+ │ │
87
+ ▼ ▼
88
+ 14 days away Repeat purchase rate
89
+ $22K/day at risk dropped 68% → 51%
90
+ = $3.1K total risk = frustrated buyers
91
+ going to competitors
92
+ ```
19
93
 
20
- Most "AI for ecommerce" tools wrap an LLM around your store. **We don't.**
94
+ One question. Seven angles investigated. A full causal chain from symptom to root, with dollars attached at every step.
21
95
 
22
- Tenpo is a **stateless commerce-ops backend** that your AI of choice calls directly. The tools return real data + grounded analysis; your AI does the reasoning and writes the response. You pay for *your* AI's tokens Tenpo never spins up an LLM on our side, so the free tier is genuinely free.
96
+ This is **multi-directional thinking**. Tenpo keeps pulling threads until it finds the *full* answer, not just *an* answer. Every response follows the same four-part shape:
23
97
 
24
- What that means in practice:
25
- - **Your AI gets factual answers**: tools execute SQL against your store, hit Klaviyo's API, ping Meta Ad Manager — never hallucinate
26
- - **Multi-source joins are cheap**: ask *"true ROAS after fees"* and Tenpo joins Shopify orders × Meta spend × Stripe fees deterministically — no LLM in the join path
27
- - **Latency is sub-10ms p50** for the analytics tools — they're SQL helpers, not LLM calls
28
- - **Privacy is default-on**: per-merchant DuckDB, no cross-tenant leakage, k-anonymous network telemetry
98
+ > **What I'm seeing** → **Why this is happening** → **What this means** **What I'd do about it**
29
99
 
30
100
  ---
31
101
 
32
- ## What you get
102
+ ## The cascade effect
103
+
104
+ In real businesses, nothing happens in isolation. Tenpo knows this.
33
105
 
34
- ### 4 god-mode intelligence tools
106
+ You say four words: *"I received PO #42."*
35
107
 
36
- | Tool | What it returns |
108
+ Here's what happens automatically:
109
+
110
+ | Step | Action |
37
111
  |---|---|
38
- | `tenpo_inventory_intelligence` | Working capital aging by SKU + bundle-affinity OOS impact + lead-time-adjusted reorder priorities (CRITICAL/URGENT/PLAN/OK). Sub-100ms even on large catalogs. |
39
- | `tenpo_supplier_scorecard` | Per-supplier A/B/C/D/F grade combining on-time rate, lead-time variance, price drift QoQ, and lifetime spend. |
40
- | `tenpo_customer_intelligence` | Predicted next-order date + churn-risk score (0–100) + top-1%/10%/25% concentration risk + cross-sell next-best-product. |
41
- | `tenpo_creative_dna` | Library of 10 proven email/ad patterns + draft mode generates 3 variants with **explicit hypothesis per variant** + analyze-winners mode extracts patterns from your past top performers. |
112
+ | 1 | Marks PO #42 received, updates stock levels |
113
+ | 2 | Finds 3 waiting orders for those SKUs fulfils them |
114
+ | 3 | Notices Meta + Google ads were paused on those SKUs (because they were OOS) resumes them |
115
+ | 4 | Records the $48,000 expense in Xero |
116
+ | 5 | Updates the supplier's reliability score for next time |
117
+ | 6 | Notes: "Klaviyo not connected — back-in-stock email would have triggered for 47 customers" |
118
+
119
+ Nine things across five platforms. **Every action triggers a chain reaction.** You did nothing but say four words.
120
+
121
+ ---
122
+
123
+ ## What Tenpo covers
124
+
125
+ Eight sectors. One operator. **You don't need to know which tool to call — just describe the outcome you want.**
126
+
127
+ <table>
128
+ <tr>
129
+ <th align="left">Sector</th>
130
+ <th align="left">What you can ask</th>
131
+ </tr>
132
+
133
+ <tr><td><b>Sales & Revenue</b></td><td>
134
+
135
+ How is my store doing this week · what's driving / killing revenue · best and worst products by margin · daily business overview · forecast next month's revenue · why did Tuesday spike
136
+
137
+ </td></tr>
138
+
139
+ <tr><td><b>Inventory & Suppliers</b></td><td>
140
+
141
+ What's about to run out · what to reorder (and how much) · which products are dead stock tying up cash · supplier reliability scorecards (A/B/C/D/F) · generate a PO and email it to my supplier · read incoming supplier emails and extract quotes · compare quotes from 3 suppliers · mark PO #42 received → cascade everything
142
+
143
+ </td></tr>
144
+
145
+ <tr><td><b>Marketing & Email</b></td><td>
146
+
147
+ Draft a winback campaign for lapsed champions · send a Klaviyo campaign · design a 30-day content calendar · A/B test subject lines · build a flash-sale flow · find cross-sell opportunities · which customers haven't bought in 60 days
148
+
149
+ </td></tr>
150
+
151
+ <tr><td><b>Paid Ads</b></td><td>
152
+
153
+ What's my true ROAS after COGS + shipping + fees · which campaigns to pause right now · reallocate budget from underperformers to winners · pause ads on out-of-stock products · auto-pause if ROAS drops below 2× · generate ad copy and creative concepts · campaign performance with revenue attribution
154
+
155
+ </td></tr>
156
+
157
+ <tr><td><b>Customers</b></td><td>
158
+
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
160
+
161
+ </td></tr>
162
+
163
+ <tr><td><b>Finance & Operations</b></td><td>
164
+
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
42
166
 
43
- ### 25 commerce primitives (always loaded)
167
+ </td></tr>
44
168
 
45
- Storefront, orders, products, customers, segments, suppliers, POs, ad spend, email campaigns, charts, drafts, approvals, integrations connect/disconnect/sync, workflows, web search, SQL queries.
169
+ <tr><td><b>Competitors</b></td><td>
46
170
 
47
- ### ~200 specialist tools (loaded on demand by your AI)
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)
48
172
 
49
- Ad-spend pause, PO generation + email, refund processing, abandoned-cart flows, Shopify GraphQL/Admin, Meta/Google/TikTok ads, Klaviyo campaign create + execute, Gorgias support reply, bulk Shopify operations, custom-platform adapters, more.
173
+ </td></tr>
50
174
 
51
- ### Network intelligence
175
+ <tr><td><b>Automation</b></td><td>
52
176
 
53
- `tenpo_network_intelligence` exposes 6 sections of **k-anonymous (k≥3 merchants)** signals from across the network top intents merchants ask, tool health (call-count, p50/p95 latency, error rate), per-detector signal/noise grades, creative pattern effectiveness (drafts launches revenue), and peer benchmarks (`category × metric` median/p20/p80).
177
+ Every Monday morning, send me a store overview · when revenue drops 30%, ping me on WhatsApp · auto-pause ads on OOS products · trigger the win-back flow when a customer hits 60 days quiet · let me approve once and never ask again for the same pattern
178
+
179
+ </td></tr>
180
+
181
+ </table>
182
+
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.**
54
184
 
55
185
  ---
56
186
 
57
- ## Installation
187
+ ## Beyond data — built-in expertise
188
+
189
+ Tenpo isn't just retrieving data. It applies deep, structured expertise to interpret it.
190
+
191
+ When you ask Tenpo to write a campaign, it doesn't just write copy — it picks the right **psychological framework** for the moment:
192
+
193
+ | You're trying to… | Tenpo reaches for… |
194
+ |---|---|
195
+ | Convert hesitant first-time visitors | Loss Aversion + Social Proof |
196
+ | Move slow-selling inventory | Decoy Effect + Scarcity |
197
+ | Bring back lapsed customers | Zeigarnik Effect + Reciprocity |
198
+ | Increase average order value | Anchoring + Bundling Psychology |
199
+ | Reduce cart abandonment | Endowment Effect + Commitment Consistency |
200
+ | Launch a new product | Authority Bias + Social Proof |
201
+ | Run a flash sale | Scarcity + Urgency + Peak-End Rule |
202
+ | Re-engage a cold email list | Curiosity Gap + Reciprocity |
203
+
204
+ When you ask about pricing, it thinks in a **Velocity × Margin matrix**. When you ask about churn, it knows the recovery probability decays from 25% at 30 days to <1% at 180+ days, and routes each customer to the right message at the right time. When you ask about conversion, it audits the full funnel — traffic quality → landing experience → product page → checkout → post-purchase → retention — not just the headline number.
205
+
206
+ **No human campaign manager coordinates all of this in a single pass. Tenpo does it every time, in seconds.**
207
+
208
+ ---
209
+
210
+ ## Background watchers — for connected stores
211
+
212
+ Once you've connected at least one integration, Tenpo runs background checks on your data automatically — no tier upgrade required, no manual setup:
58
213
 
59
- ### Claude Code (CLI)
214
+ | Watcher | What it catches |
215
+ |---|---|
216
+ | **Stock risk** | Products getting dangerously close to selling out before the next supplier delivery |
217
+ | **Revenue cliff** | Unexplained week-over-week revenue drops |
218
+ | **Refund spike** | Today's refund count exceeding 3× 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 |
223
+
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.
225
+
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).
227
+
228
+ ---
229
+
230
+ ## Install in 2 lines
60
231
 
61
232
  ```bash
62
- claude mcp add tenpo --command "npx -y @tenpo/mcp"
233
+ npx -y @tenpo/mcp
63
234
  ```
64
235
 
65
- ### Claude Desktop
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.
237
+
238
+ The second line goes into your AI host's config:
66
239
 
67
- Edit `~/Library/Application Support/Claude/claude_desktop_config.json` (Mac) or `%APPDATA%\Claude\claude_desktop_config.json` (Windows):
240
+ <details>
241
+ <summary><b>Claude Desktop</b> · <code>claude_desktop_config.json</code></summary>
68
242
 
69
243
  ```json
70
244
  {
@@ -77,7 +251,7 @@ Edit `~/Library/Application Support/Claude/claude_desktop_config.json` (Mac) or
77
251
  }
78
252
  ```
79
253
 
80
- Restart Claude Desktop. The first call auto-issues a free key and prints it to your terminal save it to `env.TENPO_API_KEY` to keep using the same key permanently:
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:
81
255
 
82
256
  ```json
83
257
  {
@@ -91,7 +265,21 @@ Restart Claude Desktop. The first call auto-issues a free key and prints it to y
91
265
  }
92
266
  ```
93
267
 
94
- ### Cursor
268
+ </details>
269
+
270
+ <details>
271
+ <summary><b>Claude Code</b> (CLI)</summary>
272
+
273
+ ```bash
274
+ claude mcp add tenpo --command "npx -y @tenpo/mcp"
275
+ ```
276
+
277
+ The first call auto-issues your key. Add it to the env if you want it persisted across machines.
278
+
279
+ </details>
280
+
281
+ <details>
282
+ <summary><b>Cursor</b></summary>
95
283
 
96
284
  Settings → MCP → Add new global MCP server:
97
285
 
@@ -107,60 +295,78 @@ Settings → MCP → Add new global MCP server:
107
295
  }
108
296
  ```
109
297
 
110
- ### Codex / Hermes / OpenClaw / any MCP-compatible client
298
+ Leave `TENPO_API_KEY` blank on first run it'll be auto-issued and printed. Then paste it in.
299
+
300
+ </details>
301
+
302
+ <details>
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.
111
306
 
112
- Standard stdio transport point the client at `npx -y @tenpo/mcp` with `TENPO_API_KEY` in env.
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).
315
+
316
+ </details>
317
+
318
+ Once installed, just talk to your AI as you normally would. Say *"connect my store"* and Tenpo walks you through it.
113
319
 
114
320
  ---
115
321
 
116
322
  ## Connecting your store
117
323
 
118
- The first time your AI calls a data tool, Tenpo's onboarding flow walks you through connecting your store. Just say:
119
-
120
- > *"connect my Shopify store"*
324
+ Tenpo supports any storefront. Just say which one you're on:
121
325
 
122
- …and the agent walks you through paste-the-token (Shopify, WooCommerce) or OAuth (Amazon, Etsy). Other platforms supported via lazy-mode adapters: **Squarespace, Wix, BigCommerce, Magento (Adobe Commerce), Salesforce Commerce Cloud, Webflow**, plus CSV/JSON import for any platform.
326
+ | Native, paste-token (90 sec) | Native OAuth (3 min) | Custom adapters (5 min) | Anything else |
327
+ |---|---|---|---|
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 |
123
329
 
124
- After the store connects, you can layer in Klaviyo / Mailchimp / Omnisend (email), Meta Ads / Google Ads / TikTok Ads (paid), Google Analytics 4 (attribution), Stripe (payments), and 40+ others.
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."*
125
331
 
126
332
  ---
127
333
 
128
334
  ## Pricing
129
335
 
130
- | Tier | Daily call limit | Cost | What you get |
336
+ | Tier | Cap | Price | What you get |
131
337
  |---|---|---|---|
132
- | **Free** | 500 calls/day | $0 | Full tool access, 1 connected store, Klaviyo + Meta + GA4, no expiry |
133
- | **Pro Monthly** | 5,000 calls/day | $19/mo | Everything in Free + higher limits, priority support |
134
- | **Pro Yearly** | Unlimited | $190/yr | Everything in Pro Monthly, 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. |
135
341
 
136
- Your same API key keeps working after upgrade the limit just changes server-side.
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).
137
343
 
138
- When you hit a free-tier limit, every response includes an `upgrade_url` pointing at a hosted Dodo Payments checkout. Pay tier auto-bumps via webhook → you're on Pro within seconds.
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.
139
345
 
140
- **You always pay for your AI's tokens.** Tenpo runs zero LLMs server-side — every analytical tool is deterministic SQL or HTTP, sub-10ms p50.
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.
141
347
 
142
348
  ---
143
349
 
144
- ## Architecture
350
+ ## How it works under the hood
145
351
 
146
352
  ```
147
353
  ┌──────────────────────────────────────────────────────────────────┐
148
- │ Claude Code / Cursor / Claude Desktop / Codex / your MCP host
354
+ │ Claude Desktop · Cursor · Claude Code · Codex · Hermes · etc.
149
355
  └──────────────────────┬───────────────────────────────────────────┘
150
- stdio (MCP protocol, JSON-RPC)
356
+ MCP protocol (stdio JSON-RPC)
151
357
 
152
358
  ┌──────────────────────────────────────────────────────────────────┐
153
- │ @tenpo/mcp (this package — ~5 KB, no LLM, pure proxy)
359
+ │ @tenpo/mcp (this package — small stdio↔HTTPS proxy)
154
360
  └──────────────────────┬───────────────────────────────────────────┘
155
- HTTPS, Bearer tnp_live_*
361
+ HTTPS, Bearer tnp_live_*
156
362
 
157
363
  ┌──────────────────────────────────────────────────────────────────┐
158
- api.tenpo.ai (gateway + runtime — Tenpo's hosted backend)
364
+ │ Tenpo backend
159
365
  │ ├─ 229 deterministic tools (SQL helpers + HTTP integrations) │
160
- │ ├─ Per-merchant DuckDB (your store data, encrypted)
161
- │ ├─ Background syncs (Klaviyo, Meta, GA4, Stripe every 15min)
162
- │ ├─ Heartbeat detectors (revenue cliff, stockout, refund spike) │
163
- │ └─ K-anonymous network telemetry (Supabase, retained 90d)
366
+ │ ├─ Per-merchant database (your data, isolated, encrypted)
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)
164
370
  └──────────────────────────────────────────────────────────────────┘
165
371
  ```
166
372
 
@@ -170,64 +376,60 @@ Your AI does the synthesis. Tenpo provides the synapses.
170
376
 
171
377
  ## Privacy
172
378
 
173
- - **Per-merchant DuckDB**: every merchant gets their own database file. No cross-tenant SQL.
174
- - **Salt-hashed merchant IDs** in network telemetry: `sha256(salt + merchant_id)`. Irreversible.
175
- - **PII strip on free text**: emails, phone numbers, $ amounts, IDs, and API tokens are replaced with placeholders before any cross-merchant aggregation.
176
- - **K-anonymity (k≥3)** enforced on every read API: stats only surface when ≥3 distinct merchants contributed.
177
- - **Retention**: raw events 90 days, aggregates indefinitely. Retention cron runs daily in Postgres.
178
- - **No LLM in the analytical path**: your queries don't get fed to any model — Tenpo just runs SQL and returns rows.
379
+ - **Your data is yours.** Per-merchant database, isolated from every other merchant. No cross-tenant queries are possible.
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.
381
+ - **K-anonymity (k≥3).** No stat surfaces until at least 3 distinct merchants contributed to it. You're never the only data point.
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.
383
+ - **Retention.** Raw events expire after 90 days. Aggregates kept indefinitely (already anonymised).
179
384
 
180
385
  ---
181
386
 
182
- ## Examples
387
+ ## Examples of what to ask
183
388
 
184
- Once installed, ask your AI host things like:
389
+ Plug Tenpo in. Then ask your AI host things like:
390
+
391
+ > *"How is my store doing this week?"*
185
392
 
186
393
  > *"Why is revenue down today?"*
187
- > → calls `tenpo_revenue_trend`, `tenpo_inventory_intelligence`, `tenpo_top_products`; AI synthesizes a one-paragraph answer with the actual numbers
188
394
 
189
- > *"Draft a winback campaign for lapsed champions"*
190
- > → calls `tenpo_creative_dna(mode: draft, goal: winback)` → returns 3 variants with explicit hypotheses → AI fills in the copy → optional: `tenpo_create_campaign(pattern_id: ...)` to launch it via Klaviyo
395
+ > *"What are the 3 highest-leverage things I should fix this week?"*
191
396
 
192
- > *"Which suppliers should I renegotiate with?"*
193
- > → calls `tenpo_supplier_scorecard` → AI ranks D/F-graded suppliers and drafts an opening email via `tenpo_draft_supplier_email`
397
+ > *"Draft a winback campaign for customers who lapsed 60+ days ago."*
194
398
 
195
- > *"Which competitor changed prices this week?"*
196
- > → calls `tenpo_competitor_intel(brand: "Allbirds")` → first call scrapes live + caches 24h → returns price-change diff
399
+ > *"Generate a PO for my top supplier for the 5 SKUs about to run out, and email it."*
197
400
 
198
- > *"How am I doing vs other apparel stores my size?"*
199
- > → calls `tenpo_network_intelligence(section: benchmark, category: apparel, metric: aov)` → returns peer median/p20/p80 (k-anonymous, ≥3 merchants required)
401
+ > *"Which Meta ads should I pause right now? Show me the dollars I'd save."*
200
402
 
201
- ---
403
+ > *"What's my true ROAS this month after COGS, shipping, and Stripe fees?"*
202
404
 
203
- ## Development
405
+ > *"Which suppliers should I renegotiate with? Rank them with a grade."*
204
406
 
205
- ```bash
206
- git clone https://github.com/tenpo-ai/tenpo-mcp
207
- cd mcp
208
- npm install
209
- npm run build
210
- TENPO_API_URL=http://localhost:3199 TENPO_API_KEY=tnp_live_... node dist/index.js
211
- ```
407
+ > *"Who's about to churn, and what should I send each segment?"*
408
+
409
+ > *"Every Monday at 9am, send me a one-paragraph store brief on WhatsApp."*
410
+
411
+ > *"Compare my AOV to other apparel stores my size."*
212
412
 
213
- The MCP package itself is ~200 lines of TypeScript a thin stdio↔HTTPS proxy. All the intelligence lives at `api.tenpo.ai`.
413
+ You don't need to know which tool runs. You don't need to learn a syntax. **Just describe the outcome.** Your AI picks the tools, Tenpo runs them, and the answer comes back grounded in real numbers.
214
414
 
215
415
  ---
216
416
 
217
417
  ## Status
218
418
 
219
- - Production-grade, running live at [api.tenpo.ai](https://api.tenpo.ai)
220
- - 229 tools exposed, 6 telemetry signal types, k-anonymous network intelligence
221
- - Sub-10ms p50 latency on analytical tools (verified live on multi-GB merchant data)
222
- - Standard Webhooks signature verification + idempotency on billing webhooks
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
223
424
 
224
- ## License
425
+ ---
426
+
427
+ ## Support
225
428
 
226
- MIT fork freely. The MCP package is a thin client; the heavy lifting happens on Tenpo's hosted backend.
429
+ Questions, issues, feedback **contact@tenpo.ai**
227
430
 
228
- ## Links
431
+ ---
432
+
433
+ ## License
229
434
 
230
- - **Website**: [tenpo.ai](https://tenpo.ai)
231
- - **API base**: [api.tenpo.ai](https://api.tenpo.ai)
232
- - **Issues**: [github.com/tenpo-ai/tenpo-mcp/issues](https://github.com/tenpo-ai/tenpo-mcp/issues)
233
- - **Source**: [github.com/tenpo-ai/tenpo-mcp](https://github.com/tenpo-ai/tenpo-mcp)
435
+ MIT fork freely. The MCP package is a thin client; all the intelligence lives in Tenpo's hosted backend.
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,7 +1,7 @@
1
1
  {
2
2
  "name": "@tenpo/mcp",
3
- "version": "0.2.0",
4
- "description": "Tenpo MCP give any AI tool (Claude Code, Cursor, Claude Desktop, Codex) deterministic access to your store data, supplier scorecards, customer intelligence, creative pattern library, and 229 commerce-ops tools. Free tier, no LLM cost on our side.",
3
+ "version": "0.2.2",
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",
7
7
  "repository": {