@aifinpay/mcp 1.0.0 → 1.1.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.
@@ -5,14 +5,27 @@
5
5
  * MCP-aware agent runtime.
6
6
  *
7
7
  * Configure via env:
8
- * AIFINPAY_AGENT_SECRET base58 secret (load existing identity)
9
- * AIFINPAY_BASE_URL default https://aifinpay.io
10
- * AIFINPAY_TIMEOUT_MS default 30000
11
- * AIFINPAY_MAX_USD hard cap per single payment (no default)
8
+ * AIFINPAY_AGENT_SECRET base58 secret (load existing identity)
9
+ * AIFINPAY_BASE_URL default https://aifinpay.io
10
+ * AIFINPAY_TIMEOUT_MS default 30000
11
+ * AIFINPAY_MAX_USD hard cap per single payment (no default)
12
+ * AIFINPAY_HEARTBEAT_INTERVAL_MS default 300000 (5 min); 0 disables
12
13
  */
13
14
  import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
14
15
  import { createServer, loadConfigFromEnv } from "../dist/index.js";
15
16
 
16
- const { server } = await createServer(loadConfigFromEnv());
17
+ const { server, stopHeartbeat } = await createServer(loadConfigFromEnv());
17
18
  const transport = new StdioServerTransport();
18
19
  await server.connect(transport);
20
+
21
+ // Most MCP clients close stdin on shutdown, which the SDK's stdio
22
+ // transport already turns into server.onclose() (and thus stopHeartbeat()
23
+ // via the hook in createServer()). Some hosts instead send a signal
24
+ // without closing stdin first, so also clear the heartbeat interval there
25
+ // — belt-and-suspenders, stopHeartbeat() is idempotent.
26
+ for (const sig of ["SIGINT", "SIGTERM"]) {
27
+ process.on(sig, () => {
28
+ stopHeartbeat();
29
+ process.exit(0);
30
+ });
31
+ }
package/dist/config.d.ts CHANGED
@@ -9,6 +9,13 @@ export interface McpConfig {
9
9
  timeoutMs?: number;
10
10
  /** Hard cap on a single payment to prevent runaway agents. */
11
11
  maxAmountUsd?: number;
12
+ /**
13
+ * Interval (ms) between agent-reported heartbeats fired while this MCP
14
+ * server process is alive. Default 5 minutes. Set to 0 to disable the
15
+ * interval heartbeat entirely (per-call/pay opportunistic heartbeats in
16
+ * the underlying AiFinPayAgent still apply unless telemetry is off).
17
+ */
18
+ heartbeatIntervalMs?: number;
12
19
  /** Optional log destination (defaults to stderr). */
13
20
  logFn?: (level: "info" | "warn" | "error", msg: string) => void;
14
21
  }
@@ -1 +1 @@
1
- {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,6CAA6C;AAC7C,MAAM,WAAW,SAAS;IACxB;kFAC8E;IAC9E,cAAc,CAAC,EAAE,MAAM,CAAC;IAExB,2DAA2D;IAC3D,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB,6BAA6B;IAC7B,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB,8DAA8D;IAC9D,YAAY,CAAC,EAAE,MAAM,CAAC;IAEtB,qDAAqD;IACrD,KAAK,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;CACjE;AAED,wBAAgB,iBAAiB,IAAI,SAAS,CAW7C"}
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,6CAA6C;AAC7C,MAAM,WAAW,SAAS;IACxB;kFAC8E;IAC9E,cAAc,CAAC,EAAE,MAAM,CAAC;IAExB,2DAA2D;IAC3D,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB,6BAA6B;IAC7B,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB,8DAA8D;IAC9D,YAAY,CAAC,EAAE,MAAM,CAAC;IAEtB;;;;;OAKG;IACH,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAE7B,qDAAqD;IACrD,KAAK,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;CACjE;AAED,wBAAgB,iBAAiB,IAAI,SAAS,CAc7C"}
package/dist/config.js CHANGED
@@ -8,6 +8,9 @@ export function loadConfigFromEnv() {
8
8
  maxAmountUsd: process.env.AIFINPAY_MAX_USD
9
9
  ? Number(process.env.AIFINPAY_MAX_USD)
10
10
  : undefined,
11
+ heartbeatIntervalMs: process.env.AIFINPAY_HEARTBEAT_INTERVAL_MS
12
+ ? Number(process.env.AIFINPAY_HEARTBEAT_INTERVAL_MS)
13
+ : undefined,
11
14
  };
12
15
  }
13
16
  //# sourceMappingURL=config.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAmBA,MAAM,UAAU,iBAAiB;IAC/B,OAAO;QACL,cAAc,EAAE,OAAO,CAAC,GAAG,CAAC,qBAAqB,IAAI,SAAS;QAC9D,OAAO,EAAE,OAAO,CAAC,GAAG,CAAC,iBAAiB,IAAI,SAAS;QACnD,SAAS,EAAE,OAAO,CAAC,GAAG,CAAC,mBAAmB;YACxC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC;YACzC,CAAC,CAAC,SAAS;QACb,YAAY,EAAE,OAAO,CAAC,GAAG,CAAC,gBAAgB;YACxC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC;YACtC,CAAC,CAAC,SAAS;KACd,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AA2BA,MAAM,UAAU,iBAAiB;IAC/B,OAAO;QACL,cAAc,EAAE,OAAO,CAAC,GAAG,CAAC,qBAAqB,IAAI,SAAS;QAC9D,OAAO,EAAE,OAAO,CAAC,GAAG,CAAC,iBAAiB,IAAI,SAAS;QACnD,SAAS,EAAE,OAAO,CAAC,GAAG,CAAC,mBAAmB;YACxC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC;YACzC,CAAC,CAAC,SAAS;QACb,YAAY,EAAE,OAAO,CAAC,GAAG,CAAC,gBAAgB;YACxC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC;YACtC,CAAC,CAAC,SAAS;QACb,mBAAmB,EAAE,OAAO,CAAC,GAAG,CAAC,8BAA8B;YAC7D,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,8BAA8B,CAAC;YACpD,CAAC,CAAC,SAAS;KACd,CAAC;AACJ,CAAC"}
@@ -0,0 +1,55 @@
1
+ /**
2
+ * createDirectoryServer — the READ-ONLY MCP server submitted to the OpenAI
3
+ * ChatGPT App Directory. Distinct from `createServer` (the full BYO-MCP
4
+ * connector with payment execution): this one exposes ONLY the read-only
5
+ * directory tools, requires NO agent identity and NO auth, and never moves
6
+ * money — so it is reviewable under OpenAI's directory policy (Obsidian/32 /34).
7
+ *
8
+ * One codebase, two profiles: the HTTP wrapper picks this when
9
+ * AIFINPAY_MCP_PROFILE=directory.
10
+ */
11
+ import { Server } from "@modelcontextprotocol/sdk/server/index.js";
12
+ export interface DirectoryServerConfig {
13
+ /** Public API base for the wrapped GET endpoints. Defaults to production. */
14
+ apiBase?: string;
15
+ /** Per-request timeout (ms). */
16
+ timeoutMs?: number;
17
+ log?: (level: "info" | "warn" | "error", msg: string) => void;
18
+ }
19
+ export declare function createDirectoryServer(config?: DirectoryServerConfig): Promise<{
20
+ server: Server<{
21
+ method: string;
22
+ params?: {
23
+ [x: string]: unknown;
24
+ _meta?: {
25
+ [x: string]: unknown;
26
+ progressToken?: string | number | undefined;
27
+ "io.modelcontextprotocol/related-task"?: {
28
+ taskId: string;
29
+ } | undefined;
30
+ } | undefined;
31
+ } | undefined;
32
+ }, {
33
+ method: string;
34
+ params?: {
35
+ [x: string]: unknown;
36
+ _meta?: {
37
+ [x: string]: unknown;
38
+ progressToken?: string | number | undefined;
39
+ "io.modelcontextprotocol/related-task"?: {
40
+ taskId: string;
41
+ } | undefined;
42
+ } | undefined;
43
+ } | undefined;
44
+ }, {
45
+ [x: string]: unknown;
46
+ _meta?: {
47
+ [x: string]: unknown;
48
+ progressToken?: string | number | undefined;
49
+ "io.modelcontextprotocol/related-task"?: {
50
+ taskId: string;
51
+ } | undefined;
52
+ } | undefined;
53
+ }>;
54
+ }>;
55
+ //# sourceMappingURL=directory.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"directory.d.ts","sourceRoot":"","sources":["../src/directory.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,OAAO,EAAE,MAAM,EAAE,MAAM,2CAA2C,CAAC;AAYnE,MAAM,WAAW,qBAAqB;IACpC,6EAA6E;IAC7E,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,gCAAgC;IAChC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,GAAG,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;CAC/D;AAwBD,wBAAsB,qBAAqB,CAAC,MAAM,GAAE,qBAA0B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2B7E"}
@@ -0,0 +1,56 @@
1
+ /**
2
+ * createDirectoryServer — the READ-ONLY MCP server submitted to the OpenAI
3
+ * ChatGPT App Directory. Distinct from `createServer` (the full BYO-MCP
4
+ * connector with payment execution): this one exposes ONLY the read-only
5
+ * directory tools, requires NO agent identity and NO auth, and never moves
6
+ * money — so it is reviewable under OpenAI's directory policy (Obsidian/32 /34).
7
+ *
8
+ * One codebase, two profiles: the HTTP wrapper picks this when
9
+ * AIFINPAY_MCP_PROFILE=directory.
10
+ */
11
+ import { Server } from "@modelcontextprotocol/sdk/server/index.js";
12
+ import { CallToolRequestSchema, ListToolsRequestSchema, } from "@modelcontextprotocol/sdk/types.js";
13
+ import { directoryTools, runDirectoryTool, DIRECTORY_API_BASE, } from "./tools/directory.js";
14
+ // Server-wide instructions returned at initialize. ChatGPT/Codex use these as a
15
+ // cross-tool guide (OpenAI readiness checklist item; the audit found it ABSENT
16
+ // on the connector server). States the read-only contract, networks, and limits.
17
+ const DIRECTORY_INSTRUCTIONS = [
18
+ "AiFinPay is payment infrastructure for AI agents. THIS server is the",
19
+ "read-only directory surface: it answers questions about the AiFinPay agent",
20
+ "economy and prices AI services — it does NOT move money, hold funds, sign",
21
+ "transactions, or execute any payment. Every tool is read-only.",
22
+ "",
23
+ "Use it to: list available AI providers and their per-call prices",
24
+ "(list_providers / provider_info / provider_status / service_coverage),",
25
+ "preview a fee-on-top cost breakdown without paying (quote_cost), read public",
26
+ "protocol stats (network_stats) and the on-chain agent leaderboard",
27
+ "(leaderboard), verify an agent's AgentPassport (verify_passport), and look up",
28
+ "a public agent profile (agent_profile).",
29
+ "",
30
+ "Networks: Polygon and Solana mainnet. Data is public on-chain / registry",
31
+ "information. To actually execute a payment, an agent uses the separate",
32
+ "AiFinPay connector or SDK — not this directory app. Requests are rate limited;",
33
+ "on HTTP 429 (rate_limit_exceeded), back off and retry.",
34
+ ].join("\n");
35
+ export async function createDirectoryServer(config = {}) {
36
+ const log = config.log ?? ((lvl, msg) => process.stderr.write(`[${lvl}] ${msg}\n`));
37
+ const ctx = {
38
+ apiBase: (config.apiBase || DIRECTORY_API_BASE).replace(/\/$/, ""),
39
+ timeoutMs: config.timeoutMs ?? 15000,
40
+ log,
41
+ };
42
+ const server = new Server({ name: "@aifinpay/mcp-directory", version: "1.0.0" }, {
43
+ capabilities: { tools: {} },
44
+ instructions: DIRECTORY_INSTRUCTIONS,
45
+ });
46
+ server.setRequestHandler(ListToolsRequestSchema, async () => ({
47
+ tools: directoryTools(),
48
+ }));
49
+ server.setRequestHandler(CallToolRequestSchema, async (request) => {
50
+ const { name, arguments: args } = request.params;
51
+ return runDirectoryTool(ctx, name, args ?? {});
52
+ });
53
+ log("info", `[aifinpay-mcp-directory] read-only profile · api=${ctx.apiBase}`);
54
+ return { server };
55
+ }
56
+ //# sourceMappingURL=directory.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"directory.js","sourceRoot":"","sources":["../src/directory.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,OAAO,EAAE,MAAM,EAAE,MAAM,2CAA2C,CAAC;AACnE,OAAO,EACL,qBAAqB,EACrB,sBAAsB,GACvB,MAAM,oCAAoC,CAAC;AAC5C,OAAO,EACL,cAAc,EACd,gBAAgB,EAChB,kBAAkB,GAEnB,MAAM,sBAAsB,CAAC;AAU9B,gFAAgF;AAChF,+EAA+E;AAC/E,iFAAiF;AACjF,MAAM,sBAAsB,GAAG;IAC7B,sEAAsE;IACtE,4EAA4E;IAC5E,2EAA2E;IAC3E,gEAAgE;IAChE,EAAE;IACF,kEAAkE;IAClE,wEAAwE;IACxE,8EAA8E;IAC9E,mEAAmE;IACnE,+EAA+E;IAC/E,yCAAyC;IACzC,EAAE;IACF,0EAA0E;IAC1E,wEAAwE;IACxE,gFAAgF;IAChF,wDAAwD;CACzD,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAEb,MAAM,CAAC,KAAK,UAAU,qBAAqB,CAAC,SAAgC,EAAE;IAC5E,MAAM,GAAG,GAAG,MAAM,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,GAAG,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC;IACpF,MAAM,GAAG,GAAqB;QAC5B,OAAO,EAAE,CAAC,MAAM,CAAC,OAAO,IAAI,kBAAkB,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC;QAClE,SAAS,EAAE,MAAM,CAAC,SAAS,IAAI,KAAK;QACpC,GAAG;KACJ,CAAC;IAEF,MAAM,MAAM,GAAG,IAAI,MAAM,CACvB,EAAE,IAAI,EAAE,yBAAyB,EAAE,OAAO,EAAE,OAAO,EAAE,EACrD;QACE,YAAY,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE;QAC3B,YAAY,EAAE,sBAAsB;KACrC,CACF,CAAC;IAEF,MAAM,CAAC,iBAAiB,CAAC,sBAAsB,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC;QAC5D,KAAK,EAAE,cAAc,EAAE;KACxB,CAAC,CAAC,CAAC;IAEJ,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,OAAO,gBAAgB,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,IAAI,EAAE,CAAC,CAAC;IACjD,CAAC,CAAC,CAAC;IAEH,GAAG,CAAC,MAAM,EAAE,oDAAoD,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;IAC/E,OAAO,EAAE,MAAM,EAAE,CAAC;AACpB,CAAC"}
package/dist/server.d.ts CHANGED
@@ -48,6 +48,7 @@ export declare function createServer(config?: McpConfig): Promise<{
48
48
  } | undefined;
49
49
  }>;
50
50
  agent: AiFinPayAgent;
51
+ stopHeartbeat: () => void;
51
52
  }>;
52
53
  export interface ToolContext {
53
54
  agent: AiFinPayAgent;
@@ -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;AAa7C;;;;;;;;;;GAUG;AACH,wBAAsB,YAAY,CAAC,MAAM,GAAE,SAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiGxD;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;AAc7C;;;;;;;;;;GAUG;AACH,wBAAsB,YAAY,CAAC,MAAM,GAAE,SAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuIxD;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
@@ -6,6 +6,7 @@ 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
8
  import { agentClaimSelfTool, runAgentClaimSelf } from "./tools/agent-claim-self.js";
9
+ import { myAgentsTool, runMyAgents } from "./tools/my-agents.js";
9
10
  import { payWithSplitTool, runPayWithSplit, quoteSplitTool, runQuoteSplit, } from "./tools/pay-with-split.js";
10
11
  /**
11
12
  * Build an MCP server that wraps the AiFinPay agent SDK as MCP tools.
@@ -51,6 +52,28 @@ export async function createServer(config = {}) {
51
52
  log("warn", "[aifinpay-mcp] AIFINPAY_MAX_USD not set — agent_call/payable_fetch have NO per-payment cap. Strongly recommended.");
52
53
  }
53
54
  log("info", `[aifinpay-mcp] solana: ${agent.solanaAddress} · evm: ${agent.evmAddress}`);
55
+ // Interval heartbeat — the agent identity above is created once at server
56
+ // startup (stdio: one process per client; a fresh identity/interval is
57
+ // created per mcp-http session too, see mcp-http/server.js). Fire an
58
+ // initial heartbeat right away so the dashboard shows liveness as soon as
59
+ // the server comes up, then keep reporting every `heartbeatIntervalMs`.
60
+ // `reportHeartbeat()` is already fire-and-forget + respects `telemetry:
61
+ // false`, so no extra guarding is needed here beyond the 0-disables-it
62
+ // knob.
63
+ const heartbeatIntervalMs = config.heartbeatIntervalMs ?? 5 * 60 * 1000;
64
+ let heartbeatTimer;
65
+ if (heartbeatIntervalMs > 0) {
66
+ agent.reportHeartbeat();
67
+ heartbeatTimer = setInterval(() => agent.reportHeartbeat(), heartbeatIntervalMs);
68
+ // Don't let the heartbeat timer alone keep the process alive.
69
+ heartbeatTimer.unref?.();
70
+ }
71
+ const stopHeartbeat = () => {
72
+ if (heartbeatTimer) {
73
+ clearInterval(heartbeatTimer);
74
+ heartbeatTimer = undefined;
75
+ }
76
+ };
54
77
  const server = new Server({
55
78
  name: "@aifinpay/mcp",
56
79
  version: "1.0.0",
@@ -65,6 +88,7 @@ export async function createServer(config = {}) {
65
88
  agentAddressTool(),
66
89
  agentCallTool(),
67
90
  agentClaimSelfTool(),
91
+ myAgentsTool(),
68
92
  payableFetchTool(),
69
93
  agentQuoteTool(),
70
94
  payWithSplitTool(),
@@ -82,6 +106,8 @@ export async function createServer(config = {}) {
82
106
  return runAgentCall(ctx, args ?? {});
83
107
  case "agent_claim_self":
84
108
  return runAgentClaimSelf(ctx, args ?? {});
109
+ case "my_agents":
110
+ return runMyAgents(ctx, args ?? {});
85
111
  case "payable_fetch":
86
112
  return runPayableFetch(ctx, args ?? {});
87
113
  case "agent_quote":
@@ -99,7 +125,18 @@ export async function createServer(config = {}) {
99
125
  };
100
126
  }
101
127
  });
102
- return { server, agent };
128
+ // Clear the heartbeat interval whenever the MCP transport shuts the
129
+ // server down (stdio: client disconnects / EOF on stdin triggers this
130
+ // via the SDK's own transport-close handling) — this is the server's
131
+ // existing teardown path, so we hook it rather than inventing a new one.
132
+ // We also chain any onclose a caller sets later (see bin/aifinpay-mcp.js
133
+ // for the process-signal → server.close() wiring).
134
+ const existingOnClose = server.onclose;
135
+ server.onclose = () => {
136
+ stopHeartbeat();
137
+ existingOnClose?.();
138
+ };
139
+ return { server, agent, stopHeartbeat };
103
140
  }
104
141
  function defaultLog(level, msg) {
105
142
  // MCP stdio servers MUST NOT write to stdout — the transport owns it.
@@ -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,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;AACpF,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,qEAAqE;IACrE,2EAA2E;IAC3E,yEAAyE;IACzE,2EAA2E;IAC3E,IAAI,MAAM,CAAC,YAAY,KAAK,SAAS,IAAI,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,YAAY,CAAC,EAAE,CAAC;QAC9E,KAAK,CAAC,SAAS,CAAC,EAAE,YAAY,EAAE,MAAM,CAAC,YAAY,EAAE,CAAC,CAAC;QACvD,GAAG,CAAC,MAAM,EAAE,iCAAiC,MAAM,CAAC,YAAY,qBAAqB,CAAC,CAAC;IACzF,CAAC;SAAM,CAAC;QACN,GAAG,CACD,MAAM,EACN,mHAAmH,CACpH,CAAC;IACJ,CAAC;IAED,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,OAAO;KACjB,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,kBAAkB,EAAE;gBACpB,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,kBAAkB;gBACrB,OAAO,iBAAiB,CAAC,GAAG,EAAE,IAAI,IAAI,EAAE,CAAC,CAAC;YAC5C,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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"}
@@ -1 +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;;;;;;;;;;;;GAgL9B"}
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;;;;;;;;;;;;GAmL9B"}
@@ -93,6 +93,9 @@ export async function runAgentClaimSelf(ctx, args) {
93
93
  }
94
94
  // Some setups split multiple cookies; grab the session one we care about.
95
95
  const cookieHeader = setCookie.split(",").map((c) => c.trim().split(";")[0]).join("; ");
96
+ // Stash on the agent so a later `my_agents` call in this same process can
97
+ // reuse the session without the user re-pasting the magic link.
98
+ ctx.agent.adoptUserSessionCookie(cookieHeader);
96
99
  // Claim both chains (EVM + Solana). Each is its own challenge + sig.
97
100
  // We try Polygon first because that's where live bridges settle today;
98
101
  // Solana side is best-effort — if anything fails we still consider the
@@ -1 +1 @@
1
- {"version":3,"file":"agent-claim-self.js","sourceRoot":"","sources":["../../src/tools/agent-claim-self.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"agent-claim-self.js","sourceRoot":"","sources":["../../src/tools/agent-claim-self.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,275 @@
1
+ /**
2
+ * Directory tools — the READ-ONLY surface submitted to the OpenAI ChatGPT App
3
+ * Directory. Every tool here is a thin wrapper over a public `api.aifinpay.io`
4
+ * GET endpoint: no agent identity, no keys, no money movement, no auth. This is
5
+ * what makes the directory app reviewable (OpenAI prohibits payment/crypto
6
+ * EXECUTION in directory apps — see Obsidian/32). Execution tools live only on
7
+ * the full BYO-MCP connector (`server.ts`), never here.
8
+ *
9
+ * Each tool declares `readOnlyHint: true`, an `outputSchema`, and ALWAYS returns
10
+ * `structuredContent` matching it (the audit found 4 connector tools that declare
11
+ * outputSchema but return only text — Apps SDK validation may reject that; we
12
+ * don't repeat it).
13
+ */
14
+ /** Public API base. Defaults to production; override with AIFINPAY_API_BASE. */
15
+ export declare const DIRECTORY_API_BASE: string;
16
+ export interface DirectoryContext {
17
+ apiBase: string;
18
+ timeoutMs: number;
19
+ log: (level: "info" | "warn" | "error", msg: string) => void;
20
+ }
21
+ type ToolResult = {
22
+ content: {
23
+ type: "text";
24
+ text: string;
25
+ }[];
26
+ structuredContent?: Record<string, unknown>;
27
+ isError?: boolean;
28
+ };
29
+ export declare function directoryTools(): ({
30
+ name: string;
31
+ description: string;
32
+ inputSchema: {
33
+ type: string;
34
+ properties: {
35
+ name?: undefined;
36
+ chain?: undefined;
37
+ amount?: undefined;
38
+ asset?: undefined;
39
+ pubkey?: undefined;
40
+ address?: undefined;
41
+ };
42
+ required?: undefined;
43
+ };
44
+ annotations: {
45
+ readOnlyHint: boolean;
46
+ openWorldHint: boolean;
47
+ destructiveHint: boolean;
48
+ };
49
+ outputSchema: {
50
+ type: string;
51
+ properties: {
52
+ providers: {
53
+ type: string;
54
+ items: {
55
+ type: string;
56
+ };
57
+ };
58
+ covered?: undefined;
59
+ total_seats?: undefined;
60
+ leaderboard?: undefined;
61
+ };
62
+ };
63
+ } | {
64
+ name: string;
65
+ description: string;
66
+ inputSchema: {
67
+ type: string;
68
+ properties: {
69
+ name: {
70
+ type: string;
71
+ description: string;
72
+ };
73
+ chain?: undefined;
74
+ amount?: undefined;
75
+ asset?: undefined;
76
+ pubkey?: undefined;
77
+ address?: undefined;
78
+ };
79
+ required: string[];
80
+ };
81
+ annotations: {
82
+ readOnlyHint: boolean;
83
+ openWorldHint: boolean;
84
+ destructiveHint: boolean;
85
+ };
86
+ outputSchema: {
87
+ type: string;
88
+ properties?: undefined;
89
+ };
90
+ } | {
91
+ name: string;
92
+ description: string;
93
+ inputSchema: {
94
+ type: string;
95
+ properties: {
96
+ name?: undefined;
97
+ chain?: undefined;
98
+ amount?: undefined;
99
+ asset?: undefined;
100
+ pubkey?: undefined;
101
+ address?: undefined;
102
+ };
103
+ required?: undefined;
104
+ };
105
+ annotations: {
106
+ readOnlyHint: boolean;
107
+ openWorldHint: boolean;
108
+ destructiveHint: boolean;
109
+ };
110
+ outputSchema: {
111
+ type: string;
112
+ properties?: undefined;
113
+ };
114
+ } | {
115
+ name: string;
116
+ description: string;
117
+ inputSchema: {
118
+ type: string;
119
+ properties: {
120
+ name?: undefined;
121
+ chain?: undefined;
122
+ amount?: undefined;
123
+ asset?: undefined;
124
+ pubkey?: undefined;
125
+ address?: undefined;
126
+ };
127
+ required?: undefined;
128
+ };
129
+ annotations: {
130
+ readOnlyHint: boolean;
131
+ openWorldHint: boolean;
132
+ destructiveHint: boolean;
133
+ };
134
+ outputSchema: {
135
+ type: string;
136
+ properties: {
137
+ covered: {
138
+ type: string;
139
+ items: {
140
+ type: string;
141
+ };
142
+ };
143
+ providers?: undefined;
144
+ total_seats?: undefined;
145
+ leaderboard?: undefined;
146
+ };
147
+ };
148
+ } | {
149
+ name: string;
150
+ description: string;
151
+ inputSchema: {
152
+ type: string;
153
+ properties: {
154
+ name?: undefined;
155
+ chain?: undefined;
156
+ amount?: undefined;
157
+ asset?: undefined;
158
+ pubkey?: undefined;
159
+ address?: undefined;
160
+ };
161
+ required?: undefined;
162
+ };
163
+ annotations: {
164
+ readOnlyHint: boolean;
165
+ openWorldHint: boolean;
166
+ destructiveHint: boolean;
167
+ };
168
+ outputSchema: {
169
+ type: string;
170
+ properties: {
171
+ total_seats: {
172
+ type: string;
173
+ };
174
+ leaderboard: {
175
+ type: string;
176
+ items: {
177
+ type: string;
178
+ };
179
+ };
180
+ providers?: undefined;
181
+ covered?: undefined;
182
+ };
183
+ };
184
+ } | {
185
+ name: string;
186
+ description: string;
187
+ inputSchema: {
188
+ type: string;
189
+ properties: {
190
+ chain: {
191
+ type: string;
192
+ enum: string[];
193
+ };
194
+ amount: {
195
+ type: string;
196
+ description: string;
197
+ };
198
+ asset: {
199
+ type: string;
200
+ enum: string[];
201
+ description: string;
202
+ };
203
+ name?: undefined;
204
+ pubkey?: undefined;
205
+ address?: undefined;
206
+ };
207
+ required: string[];
208
+ };
209
+ annotations: {
210
+ readOnlyHint: boolean;
211
+ openWorldHint: boolean;
212
+ destructiveHint: boolean;
213
+ };
214
+ outputSchema: {
215
+ type: string;
216
+ properties?: undefined;
217
+ };
218
+ } | {
219
+ name: string;
220
+ description: string;
221
+ inputSchema: {
222
+ type: string;
223
+ properties: {
224
+ pubkey: {
225
+ type: string;
226
+ description: string;
227
+ };
228
+ name?: undefined;
229
+ chain?: undefined;
230
+ amount?: undefined;
231
+ asset?: undefined;
232
+ address?: undefined;
233
+ };
234
+ required: string[];
235
+ };
236
+ annotations: {
237
+ readOnlyHint: boolean;
238
+ openWorldHint: boolean;
239
+ destructiveHint: boolean;
240
+ };
241
+ outputSchema: {
242
+ type: string;
243
+ properties?: undefined;
244
+ };
245
+ } | {
246
+ name: string;
247
+ description: string;
248
+ inputSchema: {
249
+ type: string;
250
+ properties: {
251
+ address: {
252
+ type: string;
253
+ description: string;
254
+ };
255
+ name?: undefined;
256
+ chain?: undefined;
257
+ amount?: undefined;
258
+ asset?: undefined;
259
+ pubkey?: undefined;
260
+ };
261
+ required: string[];
262
+ };
263
+ annotations: {
264
+ readOnlyHint: boolean;
265
+ openWorldHint: boolean;
266
+ destructiveHint: boolean;
267
+ };
268
+ outputSchema: {
269
+ type: string;
270
+ properties?: undefined;
271
+ };
272
+ })[];
273
+ export declare function runDirectoryTool(ctx: DirectoryContext, name: string, args: Record<string, unknown>): Promise<ToolResult>;
274
+ export {};
275
+ //# sourceMappingURL=directory.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"directory.d.ts","sourceRoot":"","sources":["../../src/tools/directory.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,gFAAgF;AAChF,eAAO,MAAM,kBAAkB,QAEX,CAAC;AAErB,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,GAAG,EAAE,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;CAC9D;AAED,KAAK,UAAU,GAAG;IAChB,OAAO,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IAC1C,iBAAiB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC5C,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB,CAAC;AA2CF,wBAAgB,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KAwJ7B;AAID,wBAAsB,gBAAgB,CACpC,GAAG,EAAE,gBAAgB,EACrB,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC5B,OAAO,CAAC,UAAU,CAAC,CAmDrB"}
@@ -0,0 +1,254 @@
1
+ /**
2
+ * Directory tools — the READ-ONLY surface submitted to the OpenAI ChatGPT App
3
+ * Directory. Every tool here is a thin wrapper over a public `api.aifinpay.io`
4
+ * GET endpoint: no agent identity, no keys, no money movement, no auth. This is
5
+ * what makes the directory app reviewable (OpenAI prohibits payment/crypto
6
+ * EXECUTION in directory apps — see Obsidian/32). Execution tools live only on
7
+ * the full BYO-MCP connector (`server.ts`), never here.
8
+ *
9
+ * Each tool declares `readOnlyHint: true`, an `outputSchema`, and ALWAYS returns
10
+ * `structuredContent` matching it (the audit found 4 connector tools that declare
11
+ * outputSchema but return only text — Apps SDK validation may reject that; we
12
+ * don't repeat it).
13
+ */
14
+ /** Public API base. Defaults to production; override with AIFINPAY_API_BASE. */
15
+ export const DIRECTORY_API_BASE = (process.env.AIFINPAY_API_BASE || "https://api.aifinpay.io").replace(/\/$/, "");
16
+ function ok(data) {
17
+ // structuredContent must be an object; wrap bare arrays/primitives.
18
+ const structured = data && typeof data === "object" && !Array.isArray(data)
19
+ ? data
20
+ : { result: data };
21
+ return {
22
+ content: [{ type: "text", text: JSON.stringify(data, null, 2) }],
23
+ structuredContent: structured,
24
+ };
25
+ }
26
+ function fail(msg) {
27
+ return { isError: true, content: [{ type: "text", text: msg }] };
28
+ }
29
+ async function apiGet(ctx, path) {
30
+ const url = `${ctx.apiBase}${path}`;
31
+ const ctrl = new AbortController();
32
+ const t = setTimeout(() => ctrl.abort(), ctx.timeoutMs);
33
+ try {
34
+ const resp = await fetch(url, {
35
+ headers: { accept: "application/json" },
36
+ signal: ctrl.signal,
37
+ });
38
+ if (!resp.ok) {
39
+ return fail(`upstream ${resp.status} for ${path}`);
40
+ }
41
+ const data = await resp.json();
42
+ return ok(data);
43
+ }
44
+ catch (e) {
45
+ return fail(`request failed for ${path}: ${e.message}`);
46
+ }
47
+ finally {
48
+ clearTimeout(t);
49
+ }
50
+ }
51
+ const RO = { readOnlyHint: true, openWorldHint: false, destructiveHint: false };
52
+ // ── Tool definitions ───────────────────────────────────────────────────────
53
+ export function directoryTools() {
54
+ return [
55
+ {
56
+ name: "list_providers",
57
+ description: "List the AI services available through AiFinPay (e.g. web search, " +
58
+ "image generation, LLM inference) with their per-call price and " +
59
+ "supported networks. Read-only; returns the public provider catalog.",
60
+ inputSchema: { type: "object", properties: {} },
61
+ annotations: RO,
62
+ // Permissive: the upstream provider catalog is the source of truth and its
63
+ // leaf field types vary (e.g. price_usd may be a number or a string for
64
+ // range/tier pricing). The MCP client validates structuredContent against
65
+ // this schema strictly, so we only assert the top-level shape.
66
+ outputSchema: {
67
+ type: "object",
68
+ properties: {
69
+ providers: { type: "array", items: { type: "object" } },
70
+ },
71
+ },
72
+ },
73
+ {
74
+ name: "provider_info",
75
+ description: "Get the details of one AiFinPay provider by name (price, supported " +
76
+ "networks, service type, homepage). Read-only.",
77
+ inputSchema: {
78
+ type: "object",
79
+ properties: {
80
+ name: {
81
+ type: "string",
82
+ description: "Provider name, e.g. 'exa', 'venice', 'io-net'.",
83
+ },
84
+ },
85
+ required: ["name"],
86
+ },
87
+ annotations: RO,
88
+ outputSchema: { type: "object" },
89
+ },
90
+ {
91
+ name: "provider_status",
92
+ description: "Report which AiFinPay provider bridges are currently reachable " +
93
+ "(up/down). Read-only health view.",
94
+ inputSchema: { type: "object", properties: {} },
95
+ annotations: RO,
96
+ outputSchema: { type: "object" },
97
+ },
98
+ {
99
+ name: "service_coverage",
100
+ description: "Show which categories of AI service (search, compute, …) AiFinPay " +
101
+ "currently covers and the providers in each. Read-only.",
102
+ inputSchema: { type: "object", properties: {} },
103
+ annotations: RO,
104
+ outputSchema: {
105
+ type: "object",
106
+ properties: {
107
+ covered: { type: "array", items: { type: "object" } },
108
+ },
109
+ },
110
+ },
111
+ {
112
+ name: "network_stats",
113
+ description: "Return public protocol statistics: supported networks, number of " +
114
+ "active agents, total settled volume, and active providers. Read-only.",
115
+ inputSchema: { type: "object", properties: {} },
116
+ annotations: RO,
117
+ outputSchema: { type: "object" },
118
+ },
119
+ {
120
+ name: "leaderboard",
121
+ description: "Return the public on-chain leaderboard of AiFinPay agents ranked by " +
122
+ "settled volume. Read-only.",
123
+ inputSchema: { type: "object", properties: {} },
124
+ annotations: RO,
125
+ outputSchema: {
126
+ type: "object",
127
+ properties: {
128
+ total_seats: { type: "number" },
129
+ leaderboard: { type: "array", items: { type: "object" } },
130
+ },
131
+ },
132
+ },
133
+ {
134
+ name: "quote_cost",
135
+ description: "Preview the fee-on-top breakdown (merchant amount + protocol fee + " +
136
+ "creator fee + total) for a given price, WITHOUT making any payment. " +
137
+ "Read-only price calculator.",
138
+ inputSchema: {
139
+ type: "object",
140
+ properties: {
141
+ chain: { type: "string", enum: ["solana", "polygon"] },
142
+ amount: {
143
+ type: "string",
144
+ description: "Merchant's quoted price in base units: lamports (Solana SOL), " +
145
+ "wei (Polygon POL), or 6-decimal units (Polygon USDC/USDT).",
146
+ },
147
+ asset: {
148
+ type: "string",
149
+ enum: ["SOL", "POL", "USDC", "USDT"],
150
+ description: "Settlement asset. Defaults to SOL on Solana, POL on Polygon. " +
151
+ "Use USDC/USDT for Polygon stablecoin quotes.",
152
+ },
153
+ },
154
+ required: ["chain", "amount"],
155
+ },
156
+ annotations: RO,
157
+ outputSchema: { type: "object" },
158
+ },
159
+ {
160
+ name: "verify_passport",
161
+ description: "Check whether an agent public key holds an AiFinPay AgentPassport and " +
162
+ "return its on-chain status. Read-only.",
163
+ inputSchema: {
164
+ type: "object",
165
+ properties: {
166
+ pubkey: {
167
+ type: "string",
168
+ description: "Agent public key (Solana base58 or EVM address).",
169
+ },
170
+ },
171
+ required: ["pubkey"],
172
+ },
173
+ annotations: RO,
174
+ outputSchema: { type: "object" },
175
+ },
176
+ {
177
+ name: "agent_profile",
178
+ description: "Return the public profile and activity summary for an AiFinPay agent " +
179
+ "by its address. Read-only.",
180
+ inputSchema: {
181
+ type: "object",
182
+ properties: {
183
+ address: {
184
+ type: "string",
185
+ description: "Agent address (EVM 0x… or Solana base58).",
186
+ },
187
+ },
188
+ required: ["address"],
189
+ },
190
+ annotations: RO,
191
+ outputSchema: { type: "object" },
192
+ },
193
+ ];
194
+ }
195
+ // ── Dispatch ────────────────────────────────────────────────────────────────
196
+ export async function runDirectoryTool(ctx, name, args) {
197
+ switch (name) {
198
+ case "list_providers":
199
+ return apiGet(ctx, "/providers");
200
+ case "provider_info": {
201
+ const n = String(args.name ?? "").trim();
202
+ if (!n)
203
+ return fail("missing required arg: name");
204
+ return apiGet(ctx, `/providers/${encodeURIComponent(n)}`);
205
+ }
206
+ case "provider_status":
207
+ return apiGet(ctx, "/providers/status");
208
+ case "service_coverage":
209
+ return apiGet(ctx, "/registry/coverage");
210
+ case "network_stats":
211
+ return apiGet(ctx, "/network-stats");
212
+ case "leaderboard":
213
+ return apiGet(ctx, "/leaderboard");
214
+ case "quote_cost": {
215
+ const chain = String(args.chain ?? "").trim().toLowerCase();
216
+ const amount = String(args.amount ?? "").trim();
217
+ const asset = String(args.asset ?? "").trim().toUpperCase();
218
+ if (!chain || !amount)
219
+ return fail("missing required args: chain, amount");
220
+ const qs = new URLSearchParams();
221
+ if (chain === "solana") {
222
+ qs.set("merchant_amount_lamports", amount);
223
+ }
224
+ else if (chain === "polygon") {
225
+ if (asset === "USDC" || asset === "USDT") {
226
+ qs.set("merchant_amount_units", amount);
227
+ qs.set("asset", asset);
228
+ }
229
+ else {
230
+ qs.set("merchant_amount_wei", amount);
231
+ }
232
+ }
233
+ else {
234
+ return fail("chain must be 'solana' or 'polygon'");
235
+ }
236
+ return apiGet(ctx, `/b2b/quote-split?${qs.toString()}`);
237
+ }
238
+ case "verify_passport": {
239
+ const pk = String(args.pubkey ?? "").trim();
240
+ if (!pk)
241
+ return fail("missing required arg: pubkey");
242
+ return apiGet(ctx, `/passport/${encodeURIComponent(pk)}`);
243
+ }
244
+ case "agent_profile": {
245
+ const addr = String(args.address ?? "").trim();
246
+ if (!addr)
247
+ return fail("missing required arg: address");
248
+ return apiGet(ctx, `/network/agents/${encodeURIComponent(addr)}`);
249
+ }
250
+ default:
251
+ return fail(`unknown directory tool: ${name}`);
252
+ }
253
+ }
254
+ //# sourceMappingURL=directory.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"directory.js","sourceRoot":"","sources":["../../src/tools/directory.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,40 @@
1
+ import type { ToolContext } from "../server.js";
2
+ /**
3
+ * `my_agents` — list the signed-in operator's agents with balance/spend/
4
+ * health, reusing the SAME user-session mechanism as `agent_claim_self`.
5
+ *
6
+ * Session reuse: `agent_claim_self` already hits the magic link and
7
+ * establishes a session cookie on `ctx.agent` (via
8
+ * `AiFinPayAgent.establishUserSession()`). If that already ran earlier in
9
+ * this MCP server process, `my_agents` can be called with no arguments and
10
+ * will reuse the cached cookie. Otherwise pass `magic_link_url` (the same
11
+ * one-shot sign-in link from https://aifinpay.io/login) and this tool will
12
+ * establish the session itself before listing agents.
13
+ */
14
+ export declare function myAgentsTool(): {
15
+ name: string;
16
+ description: string;
17
+ inputSchema: {
18
+ type: string;
19
+ properties: {
20
+ magic_link_url: {
21
+ type: string;
22
+ description: string;
23
+ };
24
+ };
25
+ };
26
+ };
27
+ export declare function runMyAgents(ctx: ToolContext, args: Record<string, unknown>): Promise<{
28
+ isError: boolean;
29
+ content: {
30
+ type: string;
31
+ text: string;
32
+ }[];
33
+ } | {
34
+ content: {
35
+ type: string;
36
+ text: string;
37
+ }[];
38
+ isError?: undefined;
39
+ }>;
40
+ //# sourceMappingURL=my-agents.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"my-agents.d.ts","sourceRoot":"","sources":["../../src/tools/my-agents.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAEhD;;;;;;;;;;;GAWG;AACH,wBAAgB,YAAY;;;;;;;;;;;;EAwB3B;AAED,wBAAsB,WAAW,CAC/B,GAAG,EAAE,WAAW,EAChB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;;;;;;;;;;;;GAiD9B"}
@@ -0,0 +1,85 @@
1
+ /**
2
+ * `my_agents` — list the signed-in operator's agents with balance/spend/
3
+ * health, reusing the SAME user-session mechanism as `agent_claim_self`.
4
+ *
5
+ * Session reuse: `agent_claim_self` already hits the magic link and
6
+ * establishes a session cookie on `ctx.agent` (via
7
+ * `AiFinPayAgent.establishUserSession()`). If that already ran earlier in
8
+ * this MCP server process, `my_agents` can be called with no arguments and
9
+ * will reuse the cached cookie. Otherwise pass `magic_link_url` (the same
10
+ * one-shot sign-in link from https://aifinpay.io/login) and this tool will
11
+ * establish the session itself before listing agents.
12
+ */
13
+ export function myAgentsTool() {
14
+ return {
15
+ name: "my_agents",
16
+ description: "List the signed-in user's AiFinPay agents — balance, 24h spend, and " +
17
+ "activity health for each. Requires a prior sign-in: either this tool " +
18
+ "already ran once with a magic_link_url, agent_claim_self already ran " +
19
+ "in this session, or you pass magic_link_url now (the URL the user " +
20
+ "got after signing in at https://aifinpay.io/login). Without a live " +
21
+ "session, returns an error telling the caller to run the claim/login " +
22
+ "flow first.",
23
+ inputSchema: {
24
+ type: "object",
25
+ properties: {
26
+ magic_link_url: {
27
+ type: "string",
28
+ description: "Optional. The URL the user received in the sign-in email " +
29
+ "(https://aifinpay.io/api/auth/verify?token=…). Only needed if " +
30
+ "no session has been established yet in this run.",
31
+ },
32
+ },
33
+ },
34
+ };
35
+ }
36
+ export async function runMyAgents(ctx, args) {
37
+ const magicLinkUrl = typeof args.magic_link_url === "string" ? args.magic_link_url : "";
38
+ if (magicLinkUrl) {
39
+ if (!magicLinkUrl.includes("/api/auth/verify?token=")) {
40
+ return {
41
+ isError: true,
42
+ content: [{ type: "text", text: "magic_link_url should look like https://aifinpay.io/api/auth/verify?token=…" }],
43
+ };
44
+ }
45
+ try {
46
+ await ctx.agent.establishUserSession(magicLinkUrl);
47
+ }
48
+ catch (e) {
49
+ return {
50
+ isError: true,
51
+ content: [{ type: "text", text: `Failed to establish session: ${e.message}` }],
52
+ };
53
+ }
54
+ }
55
+ try {
56
+ const agents = await ctx.agent.listMyAgents();
57
+ if (agents.length === 0) {
58
+ return {
59
+ content: [{ type: "text", text: "No agents claimed yet on this account. Use agent_claim_self to attach one." }],
60
+ };
61
+ }
62
+ const lines = agents.map((a) => {
63
+ const label = a.label ?? a.agent_address ?? a.address ?? "?";
64
+ const balance = a.balance_usd ?? a.balance_matic ?? a.balance ?? "?";
65
+ const spent = a.spent_usd_window ?? a.spend_24h_usd ?? "?";
66
+ const calls = a.calls_window ?? "?";
67
+ const last = a.last_activity_ts ?? a.last_activity ?? "never";
68
+ return `- ${label}: balance $${balance}, spent $${spent} (window), ${calls} calls, last activity ${last}`;
69
+ });
70
+ const summary = `${agents.length} agent(s) on this account:\n\n${lines.join("\n")}`;
71
+ return {
72
+ content: [
73
+ { type: "text", text: summary },
74
+ { type: "text", text: JSON.stringify(agents, null, 2) },
75
+ ],
76
+ };
77
+ }
78
+ catch (e) {
79
+ return {
80
+ isError: true,
81
+ content: [{ type: "text", text: `my_agents failed: ${e.message}` }],
82
+ };
83
+ }
84
+ }
85
+ //# sourceMappingURL=my-agents.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"my-agents.js","sourceRoot":"","sources":["../../src/tools/my-agents.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,YAAY;IAC1B,OAAO;QACL,IAAI,EAAE,WAAW;QACjB,WAAW,EACT,sEAAsE;YACtE,uEAAuE;YACvE,uEAAuE;YACvE,oEAAoE;YACpE,qEAAqE;YACrE,sEAAsE;YACtE,aAAa;QACf,WAAW,EAAE;YACX,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACV,cAAc,EAAE;oBACd,IAAI,EAAE,QAAQ;oBACd,WAAW,EACT,2DAA2D;wBAC3D,gEAAgE;wBAChE,kDAAkD;iBACrD;aACF;SACF;KACF,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,WAAW,CAC/B,GAAgB,EAChB,IAA6B;IAE7B,MAAM,YAAY,GAAG,OAAO,IAAI,CAAC,cAAc,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,CAAC;IAExF,IAAI,YAAY,EAAE,CAAC;QACjB,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,yBAAyB,CAAC,EAAE,CAAC;YACtD,OAAO;gBACL,OAAO,EAAE,IAAI;gBACb,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,6EAA6E,EAAE,CAAC;aACjH,CAAC;QACJ,CAAC;QACD,IAAI,CAAC;YACH,MAAM,GAAG,CAAC,KAAK,CAAC,oBAAoB,CAAC,YAAY,CAAC,CAAC;QACrD,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,OAAO;gBACL,OAAO,EAAE,IAAI;gBACb,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,gCAAiC,CAAW,CAAC,OAAO,EAAE,EAAE,CAAC;aAC1F,CAAC;QACJ,CAAC;IACH,CAAC;IAED,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,KAAK,CAAC,YAAY,EAAE,CAAC;QAC9C,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACxB,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,4EAA4E,EAAE,CAAC;aAChH,CAAC;QACJ,CAAC;QACD,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;YAC7B,MAAM,KAAK,GAAM,CAAC,CAAC,KAAgB,IAAK,CAAC,CAAC,aAAwB,IAAK,CAAC,CAAC,OAAkB,IAAI,GAAG,CAAC;YACnG,MAAM,OAAO,GAAG,CAAC,CAAC,WAAW,IAAI,CAAC,CAAC,aAAa,IAAI,CAAC,CAAC,OAAO,IAAI,GAAG,CAAC;YACrE,MAAM,KAAK,GAAK,CAAC,CAAC,gBAAgB,IAAI,CAAC,CAAC,aAAa,IAAI,GAAG,CAAC;YAC7D,MAAM,KAAK,GAAK,CAAC,CAAC,YAAY,IAAI,GAAG,CAAC;YACtC,MAAM,IAAI,GAAM,CAAC,CAAC,gBAAgB,IAAI,CAAC,CAAC,aAAa,IAAI,OAAO,CAAC;YACjE,OAAO,KAAK,KAAK,cAAc,OAAO,YAAY,KAAK,cAAc,KAAK,yBAAyB,IAAI,EAAE,CAAC;QAC5G,CAAC,CAAC,CAAC;QACH,MAAM,OAAO,GAAG,GAAG,MAAM,CAAC,MAAM,iCAAiC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QACpF,OAAO;YACL,OAAO,EAAE;gBACP,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE;gBAC/B,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE;aACxD;SACF,CAAC;IACJ,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,OAAO;YACL,OAAO,EAAE,IAAI;YACb,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,qBAAsB,CAAW,CAAC,OAAO,EAAE,EAAE,CAAC;SAC/E,CAAC;IACJ,CAAC;AACH,CAAC"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@aifinpay/mcp",
3
- "version": "1.0.0",
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.",
3
+ "version": "1.1.0",
4
+ "description": "Pay-per-call MCP server for autonomous AI agents 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",
7
7
  "types": "dist/index.d.ts",
@@ -47,7 +47,7 @@
47
47
  "non-custodial",
48
48
  "stripe-for-ai-agents"
49
49
  ],
50
- "author": "CoinSecurities (SECCO) <contact@aifinpay.company>",
50
+ "author": "CoinSecurities (SECCO) <contact@aifinpay.io>",
51
51
  "license": "MIT",
52
52
  "homepage": "https://github.com/AiFinPay/sdk#readme",
53
53
  "repository": {
@@ -57,7 +57,7 @@
57
57
  },
58
58
  "bugs": "https://github.com/AiFinPay/sdk/issues",
59
59
  "dependencies": {
60
- "@aifinpay/agent": "^1.0.0",
60
+ "@aifinpay/agent": "^1.2.0",
61
61
  "@modelcontextprotocol/sdk": "^1.0.0"
62
62
  },
63
63
  "devDependencies": {