@aifinpay/mcp 0.1.0-alpha.4 → 0.1.0-alpha.5

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.
@@ -1 +1 @@
1
- {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAS,MAAM,iBAAiB,CAAC;AACvD,OAAO,EAAE,MAAM,EAAE,MAAM,2CAA2C,CAAC;AAKnE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAY7C;;;;;;;;;;GAUG;AACH,wBAAsB,YAAY,CAAC,MAAM,GAAE,SAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgFxD;AAED,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,aAAa,CAAC;IACrB,MAAM,EAAE,SAAS,CAAC;IAClB,GAAG,EAAE,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;CAC9D"}
1
+ {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAS,MAAM,iBAAiB,CAAC;AACvD,OAAO,EAAE,MAAM,EAAE,MAAM,2CAA2C,CAAC;AAKnE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAa7C;;;;;;;;;;GAUG;AACH,wBAAsB,YAAY,CAAC,MAAM,GAAE,SAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmFxD;AAED,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,aAAa,CAAC;IACrB,MAAM,EAAE,SAAS,CAAC;IAClB,GAAG,EAAE,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;CAC9D"}
package/dist/server.js CHANGED
@@ -5,6 +5,7 @@ import { payableFetchTool, runPayableFetch } from "./tools/payable-fetch.js";
5
5
  import { agentAddressTool, runAgentAddress } from "./tools/agent-address.js";
6
6
  import { agentQuoteTool, runAgentQuote } from "./tools/agent-quote.js";
7
7
  import { agentCallTool, runAgentCall } from "./tools/agent-call.js";
8
+ import { agentClaimSelfTool, runAgentClaimSelf } from "./tools/agent-claim-self.js";
8
9
  import { payWithSplitTool, runPayWithSplit, quoteSplitTool, runQuoteSplit, } from "./tools/pay-with-split.js";
9
10
  /**
10
11
  * Build an MCP server that wraps the AiFinPay agent SDK as MCP tools.
@@ -52,6 +53,7 @@ export async function createServer(config = {}) {
52
53
  tools: [
53
54
  agentAddressTool(),
54
55
  agentCallTool(),
56
+ agentClaimSelfTool(),
55
57
  payableFetchTool(),
56
58
  agentQuoteTool(),
57
59
  payWithSplitTool(),
@@ -67,6 +69,8 @@ export async function createServer(config = {}) {
67
69
  return runAgentAddress(ctx, args ?? {});
68
70
  case "agent_call":
69
71
  return runAgentCall(ctx, args ?? {});
72
+ case "agent_claim_self":
73
+ return runAgentClaimSelf(ctx, args ?? {});
70
74
  case "payable_fetch":
71
75
  return runPayableFetch(ctx, args ?? {});
72
76
  case "agent_quote":
@@ -1 +1 @@
1
- {"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAS,MAAM,iBAAiB,CAAC;AACvD,OAAO,EAAE,MAAM,EAAE,MAAM,2CAA2C,CAAC;AACnE,OAAO,EACL,qBAAqB,EACrB,sBAAsB,GACvB,MAAM,oCAAoC,CAAC;AAE5C,OAAO,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAC7E,OAAO,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAC7E,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AACvE,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AACpE,OAAO,EACL,gBAAgB,EAChB,eAAe,EACf,cAAc,EACd,aAAa,GACd,MAAM,2BAA2B,CAAC;AAEnC;;;;;;;;;;GAUG;AACH,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,SAAoB,EAAE;IACvD,MAAM,GAAG,GAAG,MAAM,CAAC,KAAK,IAAI,UAAU,CAAC;IAEvC,sEAAsE;IACtE,uDAAuD;IACvD,MAAM,KAAK,GAAG,MAAM,CAAC,cAAc;QACjC,CAAC,CAAC,MAAM,aAAa,CAAC,gBAAgB,CAAC,MAAM,CAAC,cAAc,EAAE;YAC1D,OAAO,EAAI,MAAM,CAAC,OAAO;YACzB,SAAS,EAAE,MAAM,CAAC,SAAS;SAC5B,CAAC;QACJ,CAAC,CAAC,MAAM,CAAC,KAAK,IAAI,EAAE;YAChB,MAAM,CAAC,GAAG,MAAM,aAAa,CAAC,GAAG,CAAC;gBAChC,OAAO,EAAI,MAAM,CAAC,OAAO;gBACzB,SAAS,EAAE,MAAM,CAAC,SAAS;aAC5B,CAAC,CAAC;YACH,GAAG,CACD,MAAM,EACN,4EAA4E;gBAC1E,qBAAqB,CAAC,CAAC,aAAa,IAAI;gBACxC,qBAAqB,CAAC,CAAC,UAAU,IAAI;gBACrC,qBAAqB,CAAC,CAAC,KAAK,CAAC,SAAS,IAAI;gBAC1C,kFAAkF,CACrF,CAAC;YACF,OAAO,CAAC,CAAC;QACX,CAAC,CAAC,EAAE,CAAC;IAET,GAAG,CAAC,MAAM,EAAE,0BAA0B,KAAK,CAAC,aAAa,WAAW,KAAK,CAAC,UAAU,EAAE,CAAC,CAAC;IAExF,MAAM,MAAM,GAAG,IAAI,MAAM,CACvB;QACE,IAAI,EAAE,eAAe;QACrB,OAAO,EAAE,eAAe;KACzB,EACD;QACE,YAAY,EAAE;YACZ,KAAK,EAAE,EAAE;SACV;KACF,CACF,CAAC;IAEF,MAAM,CAAC,iBAAiB,CAAC,sBAAsB,EAAE,KAAK,IAAI,EAAE;QAC1D,OAAO;YACL,KAAK,EAAE;gBACL,gBAAgB,EAAE;gBAClB,aAAa,EAAE;gBACf,gBAAgB,EAAE;gBAClB,cAAc,EAAE;gBAChB,gBAAgB,EAAE;gBAClB,cAAc,EAAE;aACjB;SACF,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,MAAM,CAAC,iBAAiB,CAAC,qBAAqB,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE;QAChE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC;QACjD,MAAM,GAAG,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC;QACnC,QAAQ,IAAI,EAAE,CAAC;YACb,KAAK,eAAe;gBAClB,OAAO,eAAe,CAAC,GAAG,EAAE,IAAI,IAAI,EAAE,CAAC,CAAC;YAC1C,KAAK,YAAY;gBACf,OAAO,YAAY,CAAC,GAAG,EAAE,IAAI,IAAI,EAAE,CAAC,CAAC;YACvC,KAAK,eAAe;gBAClB,OAAO,eAAe,CAAC,GAAG,EAAE,IAAI,IAAI,EAAE,CAAC,CAAC;YAC1C,KAAK,aAAa;gBAChB,OAAO,aAAa,CAAC,GAAG,EAAE,IAAI,IAAI,EAAE,CAAC,CAAC;YACxC,KAAK,gBAAgB;gBACnB,OAAO,eAAe,CAAC,GAAG,EAAE,IAAI,IAAI,EAAE,CAAC,CAAC;YAC1C,KAAK,aAAa;gBAChB,OAAO,aAAa,CAAC,GAAG,EAAE,IAAI,IAAI,EAAE,CAAC,CAAC;YACxC;gBACE,OAAO;oBACL,OAAO,EAAE,IAAI;oBACb,OAAO,EAAE;wBACP,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,iBAAiB,IAAI,EAAE,EAAE;qBAChD;iBACF,CAAC;QACN,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;AAC3B,CAAC;AAQD,SAAS,UAAU,CAAC,KAAgC,EAAE,GAAW;IAC/D,sEAAsE;IACtE,kBAAkB;IAClB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,KAAK,KAAK,GAAG,IAAI,CAAC,CAAC;AAC9C,CAAC"}
1
+ {"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,58 @@
1
+ import type { ToolContext } from "../server.js";
2
+ /**
3
+ * `agent_claim_self` — agent attaches itself to a user's AiFinPay account
4
+ * autonomously by signing a claim challenge with its own key.
5
+ *
6
+ * Flow (executed inside the tool, no copy-paste between UIs):
7
+ * 1. User signs in to /login on aifinpay.company → gets a magic-link
8
+ * email with URL like `https://aifinpay.company/api/auth/verify?token=…`
9
+ * 2. User pastes that URL to the agent: "claim yourself on my account
10
+ * using this magic link"
11
+ * 3. Agent calls this tool with the magic_link_url
12
+ * 4. Tool hits the magic link → server issues session cookie
13
+ * 5. Tool POSTs to /api/me/agents/challenge with the agent's EVM address
14
+ * 6. Tool signs the returned message with the agent's EVM key (EIP-191)
15
+ * 7. Tool POSTs to /api/me/agents/claim → server verifies signature →
16
+ * agent attached to user's watchlist
17
+ *
18
+ * Optional `label` field gives the agent a friendly name in the user's UI.
19
+ *
20
+ * Security model:
21
+ * - Magic-link URL is one-shot, 15-min TTL, identifies the user
22
+ * - Signature proves the agent holds the EVM private key
23
+ * - Combination: "this user OWNS this agent". Either alone is
24
+ * insufficient (signature alone can't pick an account; magic link
25
+ * alone can't prove key control).
26
+ */
27
+ export declare function agentClaimSelfTool(): {
28
+ name: string;
29
+ description: string;
30
+ inputSchema: {
31
+ type: string;
32
+ properties: {
33
+ magic_link_url: {
34
+ type: string;
35
+ description: string;
36
+ };
37
+ label: {
38
+ type: string;
39
+ description: string;
40
+ };
41
+ };
42
+ required: string[];
43
+ };
44
+ };
45
+ export declare function runAgentClaimSelf(ctx: ToolContext, args: Record<string, unknown>): Promise<{
46
+ isError: boolean;
47
+ content: {
48
+ type: string;
49
+ text: string;
50
+ }[];
51
+ } | {
52
+ content: {
53
+ type: string;
54
+ text: string;
55
+ }[];
56
+ isError?: undefined;
57
+ }>;
58
+ //# sourceMappingURL=agent-claim-self.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent-claim-self.d.ts","sourceRoot":"","sources":["../../src/tools/agent-claim-self.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAEhD;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,wBAAgB,kBAAkB;;;;;;;;;;;;;;;;;EA6BjC;AAED,wBAAsB,iBAAiB,CACrC,GAAG,EAAE,WAAW,EAChB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;;;;;;;;;;;;GA4H9B"}
@@ -0,0 +1,177 @@
1
+ /**
2
+ * `agent_claim_self` — agent attaches itself to a user's AiFinPay account
3
+ * autonomously by signing a claim challenge with its own key.
4
+ *
5
+ * Flow (executed inside the tool, no copy-paste between UIs):
6
+ * 1. User signs in to /login on aifinpay.company → gets a magic-link
7
+ * email with URL like `https://aifinpay.company/api/auth/verify?token=…`
8
+ * 2. User pastes that URL to the agent: "claim yourself on my account
9
+ * using this magic link"
10
+ * 3. Agent calls this tool with the magic_link_url
11
+ * 4. Tool hits the magic link → server issues session cookie
12
+ * 5. Tool POSTs to /api/me/agents/challenge with the agent's EVM address
13
+ * 6. Tool signs the returned message with the agent's EVM key (EIP-191)
14
+ * 7. Tool POSTs to /api/me/agents/claim → server verifies signature →
15
+ * agent attached to user's watchlist
16
+ *
17
+ * Optional `label` field gives the agent a friendly name in the user's UI.
18
+ *
19
+ * Security model:
20
+ * - Magic-link URL is one-shot, 15-min TTL, identifies the user
21
+ * - Signature proves the agent holds the EVM private key
22
+ * - Combination: "this user OWNS this agent". Either alone is
23
+ * insufficient (signature alone can't pick an account; magic link
24
+ * alone can't prove key control).
25
+ */
26
+ export function agentClaimSelfTool() {
27
+ return {
28
+ name: "agent_claim_self",
29
+ description: "Attach this agent to a user's AiFinPay account autonomously. " +
30
+ "Requires a magic-link URL the user got after signing in at " +
31
+ "https://aifinpay.company/login. The tool will use the link to " +
32
+ "establish a session, request a claim challenge for this agent's " +
33
+ "EVM address, sign it with the agent's key, and submit the proof. " +
34
+ "After this completes, the user's /me page lists this agent and " +
35
+ "they can view its activity at /agents/<evm-address>.",
36
+ inputSchema: {
37
+ type: "object",
38
+ properties: {
39
+ magic_link_url: {
40
+ type: "string",
41
+ description: "The URL the user received in the sign-in email. Looks like " +
42
+ "https://aifinpay.company/api/auth/verify?token=… — one-shot, " +
43
+ "expires 15 minutes after the user requested it.",
44
+ },
45
+ label: {
46
+ type: "string",
47
+ description: "Optional human-friendly label (e.g. 'claude-research-bot').",
48
+ },
49
+ },
50
+ required: ["magic_link_url"],
51
+ },
52
+ };
53
+ }
54
+ export async function runAgentClaimSelf(ctx, args) {
55
+ const magicLinkUrl = typeof args.magic_link_url === "string" ? args.magic_link_url : "";
56
+ const label = typeof args.label === "string" ? args.label : null;
57
+ if (!magicLinkUrl || !magicLinkUrl.includes("/api/auth/verify?token=")) {
58
+ return {
59
+ isError: true,
60
+ content: [{ type: "text", text: "magic_link_url required — should look like https://aifinpay.company/api/auth/verify?token=…" }],
61
+ };
62
+ }
63
+ // Derive API base from the magic link itself so demo can run against
64
+ // staging / localhost without extra config.
65
+ let apiBase;
66
+ try {
67
+ const u = new URL(magicLinkUrl);
68
+ apiBase = `${u.protocol}//${u.host}`;
69
+ }
70
+ catch {
71
+ return {
72
+ isError: true,
73
+ content: [{ type: "text", text: "magic_link_url is not a valid URL" }],
74
+ };
75
+ }
76
+ // ── 1. Establish session by hitting the magic link ─────────────────
77
+ let setCookie = null;
78
+ try {
79
+ const res = await fetch(magicLinkUrl, { redirect: "manual" });
80
+ setCookie = res.headers.get("set-cookie");
81
+ if (!setCookie) {
82
+ return {
83
+ isError: true,
84
+ content: [{ type: "text", text: `Magic link did not return a session cookie (HTTP ${res.status}). Link may be expired or already used.` }],
85
+ };
86
+ }
87
+ }
88
+ catch (e) {
89
+ return {
90
+ isError: true,
91
+ content: [{ type: "text", text: `Failed to fetch magic link: ${e.message}` }],
92
+ };
93
+ }
94
+ // Some setups split multiple cookies; grab the session one we care about.
95
+ const cookieHeader = setCookie.split(",").map((c) => c.trim().split(";")[0]).join("; ");
96
+ // ── 2. Request a claim challenge for the EVM address ───────────────
97
+ const evmAddr = ctx.agent.evmAddress;
98
+ let challenge;
99
+ try {
100
+ const r = await fetch(`${apiBase}/api/me/agents/challenge`, {
101
+ method: "POST",
102
+ headers: { "content-type": "application/json", cookie: cookieHeader },
103
+ body: JSON.stringify({ address: evmAddr }),
104
+ });
105
+ const j = (await r.json());
106
+ if (!r.ok) {
107
+ return {
108
+ isError: true,
109
+ content: [{ type: "text", text: `Challenge request failed (${r.status}): ${j.error || JSON.stringify(j)}` }],
110
+ };
111
+ }
112
+ if (!j.challenge_id || !j.message) {
113
+ return {
114
+ isError: true,
115
+ content: [{ type: "text", text: `Challenge response missing challenge_id/message: ${JSON.stringify(j)}` }],
116
+ };
117
+ }
118
+ challenge = { challenge_id: j.challenge_id, message: j.message };
119
+ }
120
+ catch (e) {
121
+ return {
122
+ isError: true,
123
+ content: [{ type: "text", text: `Failed to fetch challenge: ${e.message}` }],
124
+ };
125
+ }
126
+ // ── 3. Sign the challenge with the agent's EVM key (EIP-191) ───────
127
+ let signature;
128
+ try {
129
+ signature = await ctx.agent.evmAccount.signMessage({ message: challenge.message });
130
+ }
131
+ catch (e) {
132
+ return {
133
+ isError: true,
134
+ content: [{ type: "text", text: `Signing failed: ${e.message}` }],
135
+ };
136
+ }
137
+ // ── 4. Submit the claim ────────────────────────────────────────────
138
+ try {
139
+ const r = await fetch(`${apiBase}/api/me/agents/claim`, {
140
+ method: "POST",
141
+ headers: { "content-type": "application/json", cookie: cookieHeader },
142
+ body: JSON.stringify({
143
+ challenge_id: challenge.challenge_id,
144
+ signature,
145
+ label,
146
+ }),
147
+ });
148
+ const j = (await r.json());
149
+ if (!r.ok) {
150
+ return {
151
+ isError: true,
152
+ content: [{ type: "text", text: `Claim submission failed (${r.status}): ${j.error || JSON.stringify(j)}` }],
153
+ };
154
+ }
155
+ return {
156
+ content: [
157
+ {
158
+ type: "text",
159
+ text: JSON.stringify({
160
+ ok: true,
161
+ agent_address: evmAddr,
162
+ chain: "polygon",
163
+ label: label || null,
164
+ next: `Visit ${apiBase}/agents/${evmAddr} to see live activity, or ${apiBase}/me for the full watchlist.`,
165
+ }, null, 2),
166
+ },
167
+ ],
168
+ };
169
+ }
170
+ catch (e) {
171
+ return {
172
+ isError: true,
173
+ content: [{ type: "text", text: `Claim POST failed: ${e.message}` }],
174
+ };
175
+ }
176
+ }
177
+ //# sourceMappingURL=agent-claim-self.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent-claim-self.js","sourceRoot":"","sources":["../../src/tools/agent-claim-self.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@aifinpay/mcp",
3
- "version": "0.1.0-alpha.4",
3
+ "version": "0.1.0-alpha.5",
4
4
  "description": "Pay-per-call MCP server for autonomous AI agents \u2014 installs in Claude Desktop / Cursor / Continue with one config block; on-chain settlement on Polygon and Solana via x402.",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -57,7 +57,7 @@
57
57
  },
58
58
  "bugs": "https://github.com/AiFinPay/sdk/issues",
59
59
  "dependencies": {
60
- "@aifinpay/agent": "^0.3.0-alpha.3",
60
+ "@aifinpay/agent": "^0.3.0-alpha.4",
61
61
  "@modelcontextprotocol/sdk": "^1.0.0"
62
62
  },
63
63
  "devDependencies": {