@curless/agentbank-merchant-mcp 0.0.2 → 0.0.4

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.
@@ -0,0 +1 @@
1
+ {"version":3,"file":"card.generated.js","sourceRoot":"","sources":["../src/card.generated.ts"],"names":[],"mappings":"AAAA,uEAAuE;AACvE,8EAA8E;AAC9E,gFAAgF;AAChF,MAAM,CAAC,MAAM,kBAAkB,GAAW,MAAM,CAAC,IAAI,CACnD,sphcAAsphc,EACtphc,QAAQ,CACT,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC"}
package/dist/index.js CHANGED
@@ -1,27 +1,30 @@
1
1
  #!/usr/bin/env node
2
2
  import { Server } from '@modelcontextprotocol/sdk/server/index.js';
3
3
  import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';
4
- import { CallToolRequestSchema, ListToolsRequestSchema } from '@modelcontextprotocol/sdk/types.js';
4
+ import { CallToolRequestSchema, ListResourcesRequestSchema, ListToolsRequestSchema, ReadResourceRequestSchema, } from '@modelcontextprotocol/sdk/types.js';
5
+ import { MERCHANT_CARD_HTML } from './card.generated.js';
5
6
  // @curless/agentbank-merchant-mcp — MERCHANT-side stdio MCP for agentbank.
6
- // Lets a merchant read THEIR OWN orders + balance (the agentbank ledger AND the
7
- // real Curless wallet) from an MCP client (Claude Desktop), authenticated by a
8
- // merchant token passed via env — NO OAuth. (The OAuth route is the remote
9
- // /mcp connector; this is the simple token-based path.) Kept separate from the
10
- // buyer's @curless/agentbank-mcp so the two personas don't share a tool surface.
7
+ // Lets a merchant read THEIR OWN orders + live Curless wallet balance from an MCP
8
+ // client (Claude Desktop), authenticated by their Curless API key passed via env
9
+ // — NO OAuth. (The OAuth route is the remote /mcp connector; this is the simple
10
+ // token-based path.) Renders the SAME MCP Apps card as the remote /mcp connector
11
+ // (built in apps/api/mcp-ui, injected here by emit-card.mjs), with a markdown
12
+ // fallback for hosts without the card. Kept separate from the buyer's
13
+ // @curless/agentbank-mcp so the two personas don't share a tool surface.
11
14
  //
12
15
  // Run (Claude Desktop / any MCP client):
13
16
  // npx -y @curless/agentbank-merchant-mcp
14
17
  // with env:
15
- // AGENTBANK_API_URL (default http://localhost:3000; e.g. https://mcp.curless.ai)
16
- // AGENTBANK_MERCHANT_TOKEN an agentbank merchant key (agb_...) with merchant:read
17
- // AGENTBANK_MERCHANT_ID the merchant id, e.g. 429488
18
+ // AGENTBANK_API_URL (default https://mcp.curless.ai; set http://localhost:3000 for local dev)
19
+ // AGENTBANK_MERCHANT_TOKEN your Curless API key (the unified merchant credential)
20
+ // AGENTBANK_MERCHANT_ID your Curless merchant id, e.g. 429488
18
21
  //
19
22
  // IMPORTANT: only JSON-RPC may be written to stdout (the MCP stdio transport).
20
23
  // Never console.log here — diagnostics go to stderr.
21
- const API_BASE = process.env.AGENTBANK_API_URL ?? 'http://localhost:3000';
24
+ const API_BASE = process.env.AGENTBANK_API_URL ?? 'https://mcp.curless.ai';
22
25
  const TOKEN = process.env.AGENTBANK_MERCHANT_TOKEN;
23
26
  const MERCHANT = process.env.AGENTBANK_MERCHANT_ID;
24
- // Minor-unit integer → human decimal string, per currency.
27
+ // Minor-unit integer → exact decimal string (no currency suffix), per currency.
25
28
  const DECIMALS = { USD: 2, EUR: 2, USDC: 6, USDT: 6, EURC: 6 };
26
29
  const fmt = (minor, currency) => {
27
30
  const d = DECIMALS[currency] ?? 2;
@@ -29,11 +32,47 @@ const fmt = (minor, currency) => {
29
32
  const s = String(Math.abs(minor)).padStart(d + 1, '0');
30
33
  const whole = s.slice(0, s.length - d);
31
34
  const frac = d > 0 ? `.${s.slice(s.length - d)}` : '';
32
- return `${neg ? '-' : ''}${whole}${frac} ${currency}`;
35
+ return `${neg ? '-' : ''}${whole}${frac}`;
36
+ };
37
+ // --- Markdown fallback (same shape the remote /mcp connector renders, so both
38
+ // merchant surfaces look identical on hosts without the MCP Apps card) ---------
39
+ const cell = (s) => s.replace(/\|/g, '\\|').replace(/\r?\n/g, ' ');
40
+ const fmtDate = (d) => (d ? new Date(d).toISOString().slice(0, 10) : '');
41
+ const ordersMarkdown = (merchantId, orders) => {
42
+ if (orders.length === 0)
43
+ return `**${merchantId}** — no orders yet.`;
44
+ const rows = orders.map((o) => {
45
+ const li = Array.isArray(o.lineItems)
46
+ ? o.lineItems
47
+ : [];
48
+ const items = li
49
+ .map((x) => cell(`${x.name ?? ''}${(x.quantity ?? 1) > 1 ? ` ×${x.quantity}` : ''}`))
50
+ .join(', ') || '—';
51
+ return `| \`${o.id}\` | ${fmtDate(o.createdAt)} | ${fmt(o.amount, o.currency)} ${o.currency} | ${o.status ?? ''} | ${items} |`;
52
+ });
53
+ return [
54
+ `**Orders for \`${merchantId}\`** — ${orders.length} shown, newest first`,
55
+ '',
56
+ '| Order | Date | Amount | Status | Items |',
57
+ '| --- | --- | --- | --- | --- |',
58
+ ...rows,
59
+ ].join('\n');
60
+ };
61
+ const walletMarkdown = (merchantId, mode, wallet) => {
62
+ if (wallet.length === 0)
63
+ return `**${merchantId}** (${mode} mode) — no wallet balance yet.`;
64
+ const rows = wallet.map((b) => `| ${b.currency} | **${fmt(b.available, b.currency)}** | ${fmt(b.frozen, b.currency)} |`);
65
+ return [
66
+ `**Curless wallet for \`${merchantId}\`** (${mode} mode) — funds settled into your Curless account`,
67
+ '',
68
+ '| Currency | Available | Frozen |',
69
+ '| --- | --- | --- |',
70
+ ...rows,
71
+ ].join('\n');
33
72
  };
34
73
  const api = async (path) => {
35
74
  if (!TOKEN)
36
- throw new Error('set AGENTBANK_MERCHANT_TOKEN (a merchant:read agentbank key)');
75
+ throw new Error('set AGENTBANK_MERCHANT_TOKEN (your Curless API key)');
37
76
  if (!MERCHANT)
38
77
  throw new Error('set AGENTBANK_MERCHANT_ID (e.g. 429488)');
39
78
  const res = await fetch(`${API_BASE}${path}`, {
@@ -45,6 +84,12 @@ const api = async (path) => {
45
84
  return (await res.json());
46
85
  };
47
86
  const mPath = (suffix) => `/v1/merchant/${encodeURIComponent(MERCHANT ?? '')}${suffix}`;
87
+ // MCP Apps card (a ui:// resource). Tools link to it via _meta.ui.resourceUri;
88
+ // a UI-capable host (Claude Desktop) renders it as a widget, others fall back to
89
+ // the text content. Same card the remote /mcp kit uses (built in apps/api/mcp-ui).
90
+ const CARD_URI = 'ui://agentbank-merchant/card-v1.html';
91
+ const CARD_MIME = 'text/html;profile=mcp-app';
92
+ const UI_META = { ui: { resourceUri: CARD_URI }, 'ui/resourceUri': CARD_URI };
48
93
  const TOOLS = [
49
94
  {
50
95
  name: 'list_orders',
@@ -56,18 +101,33 @@ const TOOLS = [
56
101
  offset: { type: 'number', description: 'rows to skip' },
57
102
  },
58
103
  },
104
+ _meta: UI_META,
59
105
  },
60
106
  {
61
107
  name: 'get_balance',
62
- description: "This merchant's balance per currency: the agentbank ledger (pending / payable / settled) AND the live Curless wallet (real funds settled into your Curless account).",
108
+ description: "This merchant's live Curless wallet balance, per currency.",
63
109
  inputSchema: { type: 'object', properties: {} },
110
+ _meta: UI_META,
64
111
  },
65
112
  ];
66
- const text = (value) => ({
67
- content: [{ type: 'text', text: JSON.stringify(value, null, 2) }],
113
+ // Tool result that links the card: `structuredContent` feeds the widget, the
114
+ // markdown `text` is the universal fallback for hosts without the MCP Apps card.
115
+ const card = (markdown, structured) => ({
116
+ content: [{ type: 'text', text: markdown }],
117
+ structuredContent: structured,
118
+ _meta: UI_META,
68
119
  });
69
- const server = new Server({ name: 'agentbank-merchant', version: '0.0.1' }, { capabilities: { tools: {} } });
120
+ const server = new Server({ name: 'agentbank-merchant', version: '0.0.4' }, { capabilities: { tools: {}, resources: {} } });
70
121
  server.setRequestHandler(ListToolsRequestSchema, async () => ({ tools: TOOLS }));
122
+ // The card resource (MCP Apps): advertise + serve the self-contained HTML.
123
+ server.setRequestHandler(ListResourcesRequestSchema, async () => ({
124
+ resources: [{ uri: CARD_URI, name: 'Merchant card', mimeType: CARD_MIME }],
125
+ }));
126
+ server.setRequestHandler(ReadResourceRequestSchema, async (req) => {
127
+ if (req.params.uri !== CARD_URI)
128
+ throw new Error(`unknown resource: ${req.params.uri}`);
129
+ return { contents: [{ uri: CARD_URI, mimeType: CARD_MIME, text: MERCHANT_CARD_HTML }] };
130
+ });
71
131
  server.setRequestHandler(CallToolRequestSchema, async (req) => {
72
132
  const args = (req.params.arguments ?? {});
73
133
  try {
@@ -75,26 +135,24 @@ server.setRequestHandler(CallToolRequestSchema, async (req) => {
75
135
  const limit = Math.min(Number(args.limit) || 50, 200);
76
136
  const offset = Math.max(Number(args.offset) || 0, 0);
77
137
  const res = await api(mPath(`/orders?limit=${limit}&offset=${offset}`));
78
- const orders = res.data.map((o) => ({
79
- id: o.id,
80
- date: o.createdAt,
81
- amount: fmt(o.amount, o.currency),
82
- status: o.status,
83
- items: o.lineItems,
84
- }));
85
- return text({ merchant: MERCHANT, count: res.pagination?.count ?? orders.length, orders });
138
+ return card(ordersMarkdown(MERCHANT ?? '', res.data), {
139
+ merchantId: MERCHANT,
140
+ orders: res.data, // raw (minor amounts) for the card
141
+ });
86
142
  }
87
143
  if (req.params.name === 'get_balance') {
88
144
  const b = await api(mPath('/balance'));
89
145
  // Show ONLY the Curless wallet (real settled funds), per currency — no
90
- // agentbank ledger, no channel.
91
- return text({
92
- merchant: MERCHANT,
146
+ // agentbank ledger, no channel. structuredContent carries raw minor units
147
+ // for the card; the markdown is the formatted fallback.
148
+ const wallet = b.curlessWallet ?? [];
149
+ return card(walletMarkdown(MERCHANT ?? '', b.mode, wallet), {
150
+ merchantId: MERCHANT,
93
151
  mode: b.mode,
94
- curless_wallet: (b.curlessWallet ?? []).map((x) => ({
152
+ curlessWallet: wallet.map((x) => ({
95
153
  currency: x.currency,
96
- available: fmt(x.available, x.currency),
97
- frozen: fmt(x.frozen, x.currency),
154
+ available: x.available,
155
+ frozen: x.frozen,
98
156
  })),
99
157
  });
100
158
  }
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@curless/agentbank-merchant-mcp",
3
- "version": "0.0.2",
4
- "description": "Merchant-side MCP server for agentbank — read your orders + balance (agentbank ledger and live Curless wallet) from Claude, authenticated by a merchant token via env (no OAuth).",
3
+ "version": "0.0.4",
4
+ "description": "Merchant-side MCP server for agentbank — read your orders + live Curless wallet balance from Claude, authenticated by your Curless API key via env (no OAuth).",
5
5
  "license": "MIT",
6
6
  "type": "module",
7
7
  "bin": {