@scriptmasterlabs/mcp-x402 2.1.1 → 2.1.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.
- package/.well-known/agentcard.json +34 -0
- package/.well-known/ai.txt +32 -0
- package/CONTRIBUTING.md +76 -0
- package/LICENSE +21 -57
- package/README.md +304 -262
- package/agents.json +81 -0
- package/ai/faq.json +74 -0
- package/ai/summary.json +157 -0
- package/dist/lib/chains/base.d.ts +10 -0
- package/dist/lib/chains/base.d.ts.map +1 -0
- package/dist/lib/chains/base.js +75 -0
- package/dist/lib/chains/base.js.map +1 -0
- package/dist/lib/chains/solana.d.ts +10 -0
- package/dist/lib/chains/solana.d.ts.map +1 -0
- package/dist/lib/chains/solana.js +49 -0
- package/dist/lib/chains/solana.js.map +1 -0
- package/dist/lib/chains/xrpl.d.ts +10 -0
- package/dist/lib/chains/xrpl.d.ts.map +1 -0
- package/dist/lib/chains/xrpl.js +55 -0
- package/dist/lib/chains/xrpl.js.map +1 -0
- package/dist/lib/credit/bureau.d.ts +16 -0
- package/dist/lib/credit/bureau.d.ts.map +1 -0
- package/dist/lib/credit/bureau.js +88 -0
- package/dist/lib/credit/bureau.js.map +1 -0
- package/dist/lib/sml-api/agentcard.d.ts +17 -0
- package/dist/lib/sml-api/agentcard.d.ts.map +1 -0
- package/dist/lib/sml-api/agentcard.js +30 -0
- package/dist/lib/sml-api/agentcard.js.map +1 -0
- package/dist/lib/sml-api/backtest.d.ts +22 -0
- package/dist/lib/sml-api/backtest.d.ts.map +1 -0
- package/dist/lib/sml-api/backtest.js +28 -0
- package/dist/lib/sml-api/backtest.js.map +1 -0
- package/dist/lib/sml-api/brokers.d.ts +40 -0
- package/dist/lib/sml-api/brokers.d.ts.map +1 -0
- package/dist/lib/sml-api/brokers.js +128 -0
- package/dist/lib/sml-api/brokers.js.map +1 -0
- package/dist/lib/sml-api/copytrader.d.ts +11 -0
- package/dist/lib/sml-api/copytrader.d.ts.map +1 -0
- package/dist/lib/sml-api/copytrader.js +30 -0
- package/dist/lib/sml-api/copytrader.js.map +1 -0
- package/dist/lib/sml-api/crawl.d.ts +20 -0
- package/dist/lib/sml-api/crawl.d.ts.map +1 -0
- package/dist/lib/sml-api/crawl.js +32 -0
- package/dist/lib/sml-api/crawl.js.map +1 -0
- package/dist/lib/sml-api/echo.d.ts +10 -0
- package/dist/lib/sml-api/echo.d.ts.map +1 -0
- package/dist/lib/sml-api/echo.js +23 -0
- package/dist/lib/sml-api/echo.js.map +1 -0
- package/dist/lib/sml-api/forge.d.ts +11 -0
- package/dist/lib/sml-api/forge.d.ts.map +1 -0
- package/dist/lib/sml-api/forge.js +29 -0
- package/dist/lib/sml-api/forge.js.map +1 -0
- package/dist/lib/sml-api/ftd.d.ts +18 -0
- package/dist/lib/sml-api/ftd.d.ts.map +1 -0
- package/dist/lib/sml-api/ftd.js +43 -0
- package/dist/lib/sml-api/ftd.js.map +1 -0
- package/dist/lib/sml-api/ghost.d.ts +13 -0
- package/dist/lib/sml-api/ghost.d.ts.map +1 -0
- package/dist/lib/sml-api/ghost.js +29 -0
- package/dist/lib/sml-api/ghost.js.map +1 -0
- package/dist/lib/sml-api/launchpad.d.ts +20 -0
- package/dist/lib/sml-api/launchpad.d.ts.map +1 -0
- package/dist/lib/sml-api/launchpad.js +31 -0
- package/dist/lib/sml-api/launchpad.js.map +1 -0
- package/dist/lib/sml-api/leviathan.d.ts +22 -0
- package/dist/lib/sml-api/leviathan.d.ts.map +1 -0
- package/dist/lib/sml-api/leviathan.js +33 -0
- package/dist/lib/sml-api/leviathan.js.map +1 -0
- package/dist/lib/sml-api/nexus.d.ts +18 -0
- package/dist/lib/sml-api/nexus.d.ts.map +1 -0
- package/dist/lib/sml-api/nexus.js +40 -0
- package/dist/lib/sml-api/nexus.js.map +1 -0
- package/dist/lib/sml-api/proof402.d.ts +6 -0
- package/dist/lib/sml-api/proof402.d.ts.map +1 -0
- package/dist/lib/sml-api/proof402.js +30 -0
- package/dist/lib/sml-api/proof402.js.map +1 -0
- package/dist/lib/sml-api/rails.d.ts +12 -0
- package/dist/lib/sml-api/rails.d.ts.map +1 -0
- package/dist/lib/sml-api/rails.js +29 -0
- package/dist/lib/sml-api/rails.js.map +1 -0
- package/dist/lib/sml-api/shadow.d.ts +15 -0
- package/dist/lib/sml-api/shadow.d.ts.map +1 -0
- package/dist/lib/sml-api/shadow.js +27 -0
- package/dist/lib/sml-api/shadow.js.map +1 -0
- package/dist/lib/sml-api/squeezeos.d.ts +21 -0
- package/dist/lib/sml-api/squeezeos.d.ts.map +1 -0
- package/dist/lib/sml-api/squeezeos.js +97 -0
- package/dist/lib/sml-api/squeezeos.js.map +1 -0
- package/dist/lib/sml-api/xdeo.d.ts +13 -0
- package/dist/lib/sml-api/xdeo.d.ts.map +1 -0
- package/dist/lib/sml-api/xdeo.js +34 -0
- package/dist/lib/sml-api/xdeo.js.map +1 -0
- package/dist/lib/sml-api/xmit.d.ts +13 -0
- package/dist/lib/sml-api/xmit.d.ts.map +1 -0
- package/dist/lib/sml-api/xmit.js +34 -0
- package/dist/lib/sml-api/xmit.js.map +1 -0
- package/dist/server/apm/capabilities.d.ts +31 -0
- package/dist/server/apm/capabilities.d.ts.map +1 -0
- package/dist/server/apm/capabilities.js +157 -0
- package/dist/server/apm/capabilities.js.map +1 -0
- package/dist/server/apm/execute.d.ts +18 -0
- package/dist/server/apm/execute.d.ts.map +1 -0
- package/dist/server/apm/execute.js +37 -0
- package/dist/server/apm/execute.js.map +1 -0
- package/dist/server/apm/matcher.d.ts +17 -0
- package/dist/server/apm/matcher.d.ts.map +1 -0
- package/dist/server/apm/matcher.js +71 -0
- package/dist/server/apm/matcher.js.map +1 -0
- package/dist/server/apm/quote.d.ts +53 -0
- package/dist/server/apm/quote.d.ts.map +1 -0
- package/dist/server/apm/quote.js +82 -0
- package/dist/server/apm/quote.js.map +1 -0
- package/dist/server/apm/schema.d.ts +109 -0
- package/dist/server/apm/schema.d.ts.map +1 -0
- package/dist/server/apm/schema.js +31 -0
- package/dist/server/apm/schema.js.map +1 -0
- package/dist/server/health.d.ts +16 -0
- package/dist/server/health.d.ts.map +1 -0
- package/dist/server/health.js +39 -0
- package/dist/server/health.js.map +1 -0
- package/dist/server/index.d.ts +3 -0
- package/dist/server/index.d.ts.map +1 -0
- package/dist/server/index.js +322 -0
- package/dist/server/index.js.map +1 -0
- package/dist/server/payments/agent-payment.d.ts +71 -0
- package/dist/server/payments/agent-payment.d.ts.map +1 -0
- package/dist/server/payments/agent-payment.js +112 -0
- package/dist/server/payments/agent-payment.js.map +1 -0
- package/dist/server/payments/ap2.d.ts +17 -0
- package/dist/server/payments/ap2.d.ts.map +1 -0
- package/dist/server/payments/ap2.js +77 -0
- package/dist/server/payments/ap2.js.map +1 -0
- package/dist/server/payments/receipt.d.ts +28 -0
- package/dist/server/payments/receipt.d.ts.map +1 -0
- package/dist/server/payments/receipt.js +60 -0
- package/dist/server/payments/receipt.js.map +1 -0
- package/dist/server/payments/router.d.ts +23 -0
- package/dist/server/payments/router.d.ts.map +1 -0
- package/dist/server/payments/router.js +69 -0
- package/dist/server/payments/router.js.map +1 -0
- package/dist/server/payments/wallet.d.ts +18 -0
- package/dist/server/payments/wallet.d.ts.map +1 -0
- package/dist/server/payments/wallet.js +107 -0
- package/dist/server/payments/wallet.js.map +1 -0
- package/dist/server/payments/x402.d.ts +55 -0
- package/dist/server/payments/x402.d.ts.map +1 -0
- package/dist/server/payments/x402.js +247 -0
- package/dist/server/payments/x402.js.map +1 -0
- package/dist/server/registry/backends.d.ts +29 -0
- package/dist/server/registry/backends.d.ts.map +1 -0
- package/dist/server/registry/backends.js +61 -0
- package/dist/server/registry/backends.js.map +1 -0
- package/dist/server/registry/catalog.d.ts +12 -0
- package/dist/server/registry/catalog.d.ts.map +1 -0
- package/dist/server/registry/catalog.js +55 -0
- package/dist/server/registry/catalog.js.map +1 -0
- package/dist/server/registry/discovery.d.ts +16 -0
- package/dist/server/registry/discovery.d.ts.map +1 -0
- package/dist/server/registry/discovery.js +33 -0
- package/dist/server/registry/discovery.js.map +1 -0
- package/dist/server/registry/pricing.d.ts +10 -0
- package/dist/server/registry/pricing.d.ts.map +1 -0
- package/dist/server/registry/pricing.js +124 -0
- package/dist/server/registry/pricing.js.map +1 -0
- package/dist/server/security/acl.d.ts +28 -0
- package/dist/server/security/acl.d.ts.map +1 -0
- package/dist/server/security/acl.js +36 -0
- package/dist/server/security/acl.js.map +1 -0
- package/dist/server/security/audit.d.ts +15 -0
- package/dist/server/security/audit.d.ts.map +1 -0
- package/dist/server/security/audit.js +77 -0
- package/dist/server/security/audit.js.map +1 -0
- package/dist/server/security/rate-limit.d.ts +12 -0
- package/dist/server/security/rate-limit.d.ts.map +1 -0
- package/dist/server/security/rate-limit.js +72 -0
- package/dist/server/security/rate-limit.js.map +1 -0
- package/dist/server/security/sandbox.d.ts +7 -0
- package/dist/server/security/sandbox.d.ts.map +1 -0
- package/dist/server/security/sandbox.js +42 -0
- package/dist/server/security/sandbox.js.map +1 -0
- package/dist/server/tools/agentcard.d.ts +3 -0
- package/dist/server/tools/agentcard.d.ts.map +1 -0
- package/dist/server/tools/agentcard.js +118 -0
- package/dist/server/tools/agentcard.js.map +1 -0
- package/dist/server/tools/apm-execute.d.ts +3 -0
- package/dist/server/tools/apm-execute.d.ts.map +1 -0
- package/dist/server/tools/apm-execute.js +94 -0
- package/dist/server/tools/apm-execute.js.map +1 -0
- package/dist/server/tools/apm.d.ts +3 -0
- package/dist/server/tools/apm.d.ts.map +1 -0
- package/dist/server/tools/apm.js +135 -0
- package/dist/server/tools/apm.js.map +1 -0
- package/dist/server/tools/backtest.d.ts +3 -0
- package/dist/server/tools/backtest.d.ts.map +1 -0
- package/dist/server/tools/backtest.js +112 -0
- package/dist/server/tools/backtest.js.map +1 -0
- package/dist/server/tools/brokers.d.ts +3 -0
- package/dist/server/tools/brokers.d.ts.map +1 -0
- package/dist/server/tools/brokers.js +223 -0
- package/dist/server/tools/brokers.js.map +1 -0
- package/dist/server/tools/copytrader.d.ts +3 -0
- package/dist/server/tools/copytrader.d.ts.map +1 -0
- package/dist/server/tools/copytrader.js +90 -0
- package/dist/server/tools/copytrader.js.map +1 -0
- package/dist/server/tools/crawl.d.ts +3 -0
- package/dist/server/tools/crawl.d.ts.map +1 -0
- package/dist/server/tools/crawl.js +60 -0
- package/dist/server/tools/crawl.js.map +1 -0
- package/dist/server/tools/discovery.d.ts +3 -0
- package/dist/server/tools/discovery.d.ts.map +1 -0
- package/dist/server/tools/discovery.js +181 -0
- package/dist/server/tools/discovery.js.map +1 -0
- package/dist/server/tools/echo.d.ts +3 -0
- package/dist/server/tools/echo.d.ts.map +1 -0
- package/dist/server/tools/echo.js +48 -0
- package/dist/server/tools/echo.js.map +1 -0
- package/dist/server/tools/forge.d.ts +3 -0
- package/dist/server/tools/forge.d.ts.map +1 -0
- package/dist/server/tools/forge.js +77 -0
- package/dist/server/tools/forge.js.map +1 -0
- package/dist/server/tools/ftd.d.ts +3 -0
- package/dist/server/tools/ftd.d.ts.map +1 -0
- package/dist/server/tools/ftd.js +70 -0
- package/dist/server/tools/ftd.js.map +1 -0
- package/dist/server/tools/ghost.d.ts +3 -0
- package/dist/server/tools/ghost.d.ts.map +1 -0
- package/dist/server/tools/ghost.js +83 -0
- package/dist/server/tools/ghost.js.map +1 -0
- package/dist/server/tools/index.d.ts +3 -0
- package/dist/server/tools/index.d.ts.map +1 -0
- package/dist/server/tools/index.js +48 -0
- package/dist/server/tools/index.js.map +1 -0
- package/dist/server/tools/launchpad.d.ts +3 -0
- package/dist/server/tools/launchpad.d.ts.map +1 -0
- package/dist/server/tools/launchpad.js +151 -0
- package/dist/server/tools/launchpad.js.map +1 -0
- package/dist/server/tools/leviathan.d.ts +3 -0
- package/dist/server/tools/leviathan.d.ts.map +1 -0
- package/dist/server/tools/leviathan.js +73 -0
- package/dist/server/tools/leviathan.js.map +1 -0
- package/dist/server/tools/nexus.d.ts +3 -0
- package/dist/server/tools/nexus.d.ts.map +1 -0
- package/dist/server/tools/nexus.js +65 -0
- package/dist/server/tools/nexus.js.map +1 -0
- package/dist/server/tools/proof402.d.ts +3 -0
- package/dist/server/tools/proof402.d.ts.map +1 -0
- package/dist/server/tools/proof402.js +74 -0
- package/dist/server/tools/proof402.js.map +1 -0
- package/dist/server/tools/rails.d.ts +3 -0
- package/dist/server/tools/rails.d.ts.map +1 -0
- package/dist/server/tools/rails.js +82 -0
- package/dist/server/tools/rails.js.map +1 -0
- package/dist/server/tools/shadow.d.ts +3 -0
- package/dist/server/tools/shadow.d.ts.map +1 -0
- package/dist/server/tools/shadow.js +114 -0
- package/dist/server/tools/shadow.js.map +1 -0
- package/dist/server/tools/squeezeos.d.ts +3 -0
- package/dist/server/tools/squeezeos.d.ts.map +1 -0
- package/dist/server/tools/squeezeos.js +249 -0
- package/dist/server/tools/squeezeos.js.map +1 -0
- package/dist/server/tools/xdeo.d.ts +3 -0
- package/dist/server/tools/xdeo.d.ts.map +1 -0
- package/dist/server/tools/xdeo.js +58 -0
- package/dist/server/tools/xdeo.js.map +1 -0
- package/dist/server/tools/xmit.d.ts +3 -0
- package/dist/server/tools/xmit.d.ts.map +1 -0
- package/dist/server/tools/xmit.js +59 -0
- package/dist/server/tools/xmit.js.map +1 -0
- package/eslint.config.mjs +28 -0
- package/llms.txt +170 -108
- package/package.json +78 -65
- package/server.json +24 -0
- package/.well-known/x402.json +0 -37
- package/dist/index.d.ts +0 -12
- package/dist/index.d.ts.map +0 -1
- package/dist/index.js +0 -9
- package/dist/index.js.map +0 -1
- package/dist/mcp-wrapper.d.ts +0 -71
- package/dist/mcp-wrapper.d.ts.map +0 -1
- package/dist/mcp-wrapper.js +0 -104
- package/dist/mcp-wrapper.js.map +0 -1
- package/dist/x402-middleware.d.ts +0 -76
- package/dist/x402-middleware.d.ts.map +0 -1
- package/dist/x402-middleware.js +0 -113
- package/dist/x402-middleware.js.map +0 -1
- package/dist/xrpl-facilitator.d.ts +0 -77
- package/dist/xrpl-facilitator.d.ts.map +0 -1
- package/dist/xrpl-facilitator.js +0 -156
- package/dist/xrpl-facilitator.js.map +0 -1
- package/schema.jsonld +0 -97
package/agents.json
ADDED
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
{
|
|
2
|
+
"schema_version": "v1",
|
|
3
|
+
"name": "mcp-x402",
|
|
4
|
+
"description": "The x402 Amazon — 51 pay-per-call MCP tools covering institutional market intelligence, SEC filings, XRPL/Solana/Base payments, copy-trading, memecoin launchpad, and more. No API keys. Agents pay autonomously with USDC or RLUSD.",
|
|
5
|
+
"url": "https://mcp-x402.onrender.com",
|
|
6
|
+
"provider": {
|
|
7
|
+
"name": "ScriptMasterLabs",
|
|
8
|
+
"url": "https://scriptmasterlabs.com",
|
|
9
|
+
"contact": "timothy.walton45@gmail.com"
|
|
10
|
+
},
|
|
11
|
+
"version": "2.1.0",
|
|
12
|
+
"mcp": {
|
|
13
|
+
"transport": ["stdio", "sse", "streamable-http"],
|
|
14
|
+
"endpoints": {
|
|
15
|
+
"streamable_http": "https://mcp-x402.onrender.com/mcp",
|
|
16
|
+
"sse": "https://mcp-x402.onrender.com/sse"
|
|
17
|
+
}
|
|
18
|
+
},
|
|
19
|
+
"payment": {
|
|
20
|
+
"protocol": "x402",
|
|
21
|
+
"chains": ["base", "xrpl", "solana", "xahau"],
|
|
22
|
+
"currencies": ["USDC", "RLUSD"],
|
|
23
|
+
"mandate": "ap2",
|
|
24
|
+
"credit_bureau": "https://four02proof.onrender.com/v1/bureau/score",
|
|
25
|
+
"daily_cap_usd": 50,
|
|
26
|
+
"auto_approve_threshold_usd": 1.00
|
|
27
|
+
},
|
|
28
|
+
"tools": [
|
|
29
|
+
{ "name": "sml_discover", "description": "Full SML product catalog with prices. Start here.", "price": "free" },
|
|
30
|
+
{ "name": "sml_status", "description": "Health of all SML services.", "price": "free" },
|
|
31
|
+
{ "name": "squeezeos_preview", "description": "Bias + regime preview for any ticker.", "price": "free" },
|
|
32
|
+
{ "name": "squeezeos_demo", "description": "IWM council demo verdict.", "price": "free" },
|
|
33
|
+
{ "name": "squeezeos_history", "description": "Recent signal ring buffer.", "price": "free" },
|
|
34
|
+
{ "name": "squeezeos_oracle", "description": "Aggregated oracle directive.", "price": "free" },
|
|
35
|
+
{ "name": "squeezeos_ftd", "description": "SEC Reg SHO FTD registry.", "price": "free" },
|
|
36
|
+
{ "name": "squeezeos_status", "description": "SqueezeOS system health.", "price": "free" },
|
|
37
|
+
{ "name": "squeezeos_marketplace_browse", "description": "Browse peer signal listings.", "price": "free" },
|
|
38
|
+
{ "name": "squeezeos_futures_leaderboard", "description": "Top signal predictors.", "price": "free" },
|
|
39
|
+
{ "name": "squeezeos_council", "description": "Multi-engine AI verdict for any ticker.", "price": "0.10", "currency": "USDC" },
|
|
40
|
+
{ "name": "squeezeos_scan", "description": "Full $1–$50 institutional squeeze scanner.", "price": "0.05", "currency": "USDC" },
|
|
41
|
+
{ "name": "squeezeos_options", "description": "Institutional options flow scanner.", "price": "0.05", "currency": "USDC" },
|
|
42
|
+
{ "name": "squeezeos_iwm", "description": "IWM 0DTE contract scorer.", "price": "0.03", "currency": "USDC" },
|
|
43
|
+
{ "name": "squeezeos_marketplace_read", "description": "Full signal thesis from marketplace.", "price": "0.02", "currency": "USDC" },
|
|
44
|
+
{ "name": "leviathan_signal", "description": "Institutional squeeze signals, multi-engine verdict.", "price": "0.05", "currency": "USDC", "ap2_required": true },
|
|
45
|
+
{ "name": "xmit_edgar_decode", "description": "Parse SEC DEF 14A / 13F / 13D filings.", "price": "0.02", "currency": "USDC", "ap2_required": true },
|
|
46
|
+
{ "name": "xdeo_earnings_estimate", "description": "Decentralized earnings oracle. +2 bureau score.", "price": "0.02", "currency": "USDC", "ap2_required": true },
|
|
47
|
+
{ "name": "ftd_threshold_scan", "description": "SEC Reg SHO FTD data. Alerts free; full data paid.", "price": "0.05", "currency": "USDC", "free_tier": "alerts_only" },
|
|
48
|
+
{ "name": "echo_pattern_match", "description": "Historical pattern similarity scan.", "price": "free" },
|
|
49
|
+
{ "name": "ghost_route", "description": "Route private XRPL payments via Ghost Layer.", "price": "variable" },
|
|
50
|
+
{ "name": "ghost_status", "description": "Ghost Layer service health.", "price": "free" },
|
|
51
|
+
{ "name": "rails_transfer", "description": "RLUSD/XRP remittance on XRPL/Xahau.", "price": "variable" },
|
|
52
|
+
{ "name": "rails_status", "description": "Rails service health.", "price": "free" },
|
|
53
|
+
{ "name": "copytrader_subscribe", "description": "Subscribe to whale wallet copy-trading.", "price": "variable" },
|
|
54
|
+
{ "name": "copytrader_whales", "description": "Browse top whale wallets.", "price": "free" },
|
|
55
|
+
{ "name": "copytrader_status", "description": "Copy-trader service health.", "price": "free" },
|
|
56
|
+
{ "name": "launchpad_create", "description": "Deploy a bonding-curve memecoin on XRPL.", "price": "variable" },
|
|
57
|
+
{ "name": "launchpad_buy", "description": "Buy a memecoin from the bonding curve.", "price": "variable" },
|
|
58
|
+
{ "name": "launchpad_list", "description": "Browse active memecoins.", "price": "free" },
|
|
59
|
+
{ "name": "launchpad_status", "description": "Launchpad service health.", "price": "free" },
|
|
60
|
+
{ "name": "shadow_ingest", "description": "Ingest proprietary signal data.", "price": "variable" },
|
|
61
|
+
{ "name": "shadow_query", "description": "Query shadow desk signal store.", "price": "variable" },
|
|
62
|
+
{ "name": "forge_llm", "description": "BYOK LLM proxy — pay with USDC.", "price": "variable" },
|
|
63
|
+
{ "name": "forge_status", "description": "Forge gateway health.", "price": "free" },
|
|
64
|
+
{ "name": "crawl_paid_fetch", "description": "Web scraping, clean Markdown.", "price": "0.005", "currency": "USDC" },
|
|
65
|
+
{ "name": "proof_invoice", "description": "Get payment invoice for any SML endpoint.", "price": "free" },
|
|
66
|
+
{ "name": "proof_verify", "description": "Submit tx_hash → receive JWT access token.", "price": "free" },
|
|
67
|
+
{ "name": "proof_credit_score", "description": "FICO-style 300–850 credit score for any wallet.", "price": "free" },
|
|
68
|
+
{ "name": "nexus_agent_hire", "description": "Browse + hire agents. 5% commission on hire.", "price": "commission", "free_tier": "query_only" },
|
|
69
|
+
{ "name": "agentcard_lookup", "description": "Look up agent card by DID or wallet.", "price": "free" },
|
|
70
|
+
{ "name": "agentcard_mint", "description": "Mint a new agent identity card on XRPL.", "price": "variable" },
|
|
71
|
+
{ "name": "agentcard_verify", "description": "Verify an agent card signature.", "price": "free" },
|
|
72
|
+
{ "name": "tradier_quote", "description": "Real-time Tradier stock quote.", "price": "variable" },
|
|
73
|
+
{ "name": "tradier_order", "description": "Place a Tradier brokerage order.", "price": "variable" },
|
|
74
|
+
{ "name": "tradier_positions", "description": "Tradier account positions.", "price": "variable" },
|
|
75
|
+
{ "name": "robinhood_quote", "description": "Robinhood stock quote.", "price": "variable" },
|
|
76
|
+
{ "name": "robinhood_order", "description": "Place a Robinhood order.", "price": "variable" },
|
|
77
|
+
{ "name": "robinhood_portfolio", "description": "Robinhood portfolio.", "price": "variable" },
|
|
78
|
+
{ "name": "backtest_run", "description": "Run a strategy backtest.", "price": "variable" },
|
|
79
|
+
{ "name": "backtest_validate", "description": "Validate backtest parameters.", "price": "free" }
|
|
80
|
+
]
|
|
81
|
+
}
|
package/ai/faq.json
ADDED
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
[
|
|
2
|
+
{
|
|
3
|
+
"question": "What is mcp-x402?",
|
|
4
|
+
"answer": "mcp-x402 is the first MCP (Model Context Protocol) server that pays for itself. It connects AI agents — Claude, Cursor, or any MCP-compatible runtime — to ScriptMasterLabs financial intelligence tools via the x402 payment protocol. Agents pay with stablecoins on Base, XRPL, or Solana, and receive cryptographic receipts for every transaction. No API keys. No human billing. No subscriptions to manage.",
|
|
5
|
+
"category": "product",
|
|
6
|
+
"url": "https://scriptmasterlabs.com"
|
|
7
|
+
},
|
|
8
|
+
{
|
|
9
|
+
"question": "How do I install mcp-x402?",
|
|
10
|
+
"answer": "Install in one command: `npx @scriptmasterlabs/mcp-x402`. Or globally: `npm i -g @scriptmasterlabs/mcp-x402`. For Claude Code, add to ~/.claude/config.json: `{\"mcpServers\": {\"sml\": {\"command\": \"npx\", \"args\": [\"@scriptmasterlabs/mcp-x402\"]}}}`. For Cursor in SSE mode, run with `MCP_TRANSPORT=sse npx @scriptmasterlabs/mcp-x402` and add `{\"mcp-x402\": {\"url\": \"http://localhost:3402/sse\"}}` to your Cursor MCP settings.",
|
|
11
|
+
"category": "install",
|
|
12
|
+
"url": "https://www.npmjs.com/package/@scriptmasterlabs/mcp-x402"
|
|
13
|
+
},
|
|
14
|
+
{
|
|
15
|
+
"question": "What tools does mcp-x402 provide?",
|
|
16
|
+
"answer": "mcp-x402 provides 6 tools: (1) leviathan_signal — institutional squeeze signals, $0.05 USDC; (2) xmit_edgar_decode — parse SEC DEF 14A/13F/13D filings, $0.02 USDC; (3) xdeo_earnings_estimate — decentralized earnings oracle, $0.02 USDC; (4) ftd_threshold_scan — SEC Reg SHO FTD detection, alerts free / full $0.05 USDC; (5) nexus_agent_hire — agent marketplace, query free / hire 5% commission; (6) crawl_paid_fetch — pay-per-fetch web scraping, $0.005 USDC.",
|
|
17
|
+
"category": "tools",
|
|
18
|
+
"url": "https://github.com/timwal78/sml_portfolio/tree/main/mcp-x402"
|
|
19
|
+
},
|
|
20
|
+
{
|
|
21
|
+
"question": "How does the payment flow work?",
|
|
22
|
+
"answer": "Payment happens in 5 automatic steps: (1) Agent discovers tool prices from agents.json or llms.txt; (2) AP2 mandate is checked — Agent Credit Bureau score ≥ 300 triggers auto-approve with no human prompt; (3) x402 stablecoin transfer executes on the cheapest/fastest available chain (Base USDC preferred at <3s); (4) 402Proof generates a cryptographic receipt, returned in the `_meta` block of every response; (5) Agent Credit Bureau score updates after each successful call.",
|
|
23
|
+
"category": "payment",
|
|
24
|
+
"url": "https://four02proof.onrender.com"
|
|
25
|
+
},
|
|
26
|
+
{
|
|
27
|
+
"question": "What chains and currencies are supported for payment?",
|
|
28
|
+
"answer": "mcp-x402 supports three chains: Base (USDC) — preferred for speed at under 3 seconds; XRPL (RLUSD) — preferred for XRP ecosystem integrations; Solana (USDC) — last resort fallback. The server routes to the cheapest and fastest available chain automatically. All chains use stablecoins, so there is no crypto price volatility in tool costs.",
|
|
29
|
+
"category": "payment",
|
|
30
|
+
"url": "https://github.com/timwal78/sml_portfolio/tree/main/mcp-x402"
|
|
31
|
+
},
|
|
32
|
+
{
|
|
33
|
+
"question": "What is the Agent Credit Bureau and how does it work?",
|
|
34
|
+
"answer": "The Agent Credit Bureau is a FICO-style reputation system for AI agent wallets, scoring from 300 to 850. Scores are tied to XRPL wallet addresses and maintained by 402Proof at four02proof.onrender.com/v1/bureau/score/{wallet}. A minimum score of 300 is required for auto-approve of paid tool calls in mcp-x402. Scores increase with successful transactions — for example, xdeo_earnings_estimate grants +2 points per call. Agents build financial reputation the same way humans do.",
|
|
35
|
+
"category": "credit-bureau",
|
|
36
|
+
"url": "https://four02proof.onrender.com"
|
|
37
|
+
},
|
|
38
|
+
{
|
|
39
|
+
"question": "Where are my private keys stored?",
|
|
40
|
+
"answer": "Private keys are stored exclusively in your operating system's secure keychain — macOS Keychain, Windows DPAPI, or Linux Secret Service via the `keytar` library. Keys are never written to environment variables, config files, or logs. On first run, mcp-x402 provisions a wallet automatically and stores the key securely. You can review the wallet address with `npx @scriptmasterlabs/mcp-x402 wallet`.",
|
|
41
|
+
"category": "security",
|
|
42
|
+
"url": "https://github.com/timwal78/sml_portfolio/tree/main/mcp-x402"
|
|
43
|
+
},
|
|
44
|
+
{
|
|
45
|
+
"question": "What spend controls does mcp-x402 have?",
|
|
46
|
+
"answer": "mcp-x402 enforces three spend controls: (1) Auto-approve threshold of $1.00 — sessions under this total require no human confirmation; (2) Daily spend cap of $50.00 per wallet, enforced in-process and cannot be exceeded; (3) Price cache TTL of 60 seconds — prices are re-fetched at most once per minute to prevent stale pricing. These controls are configurable via environment variables (DAILY_SPEND_CAP_USD, AUTO_APPROVE_THRESHOLD_USD).",
|
|
47
|
+
"category": "security",
|
|
48
|
+
"url": "https://github.com/timwal78/sml_portfolio/tree/main/mcp-x402"
|
|
49
|
+
},
|
|
50
|
+
{
|
|
51
|
+
"question": "What is AP2 and why is it required for some tools?",
|
|
52
|
+
"answer": "AP2 (Agent Payment Protocol version 2) is a W3C Verifiable Credential-based mandate system that lets agent operators set explicit spending policies before an agent starts executing. Tools marked 'AP2 required' (leviathan_signal, xmit_edgar_decode, xdeo_earnings_estimate) verify a valid AP2 mandate before executing and fail closed if none is present. This prevents autonomous agents from spending on high-value data without explicit operator authorization. The mandate is checked via the X-AP2-MANDATE header.",
|
|
53
|
+
"category": "security",
|
|
54
|
+
"url": "https://github.com/timwal78/sml_portfolio/tree/main/mcp-x402"
|
|
55
|
+
},
|
|
56
|
+
{
|
|
57
|
+
"question": "How do I add x402 payments to my own MCP server?",
|
|
58
|
+
"answer": "Use the @scriptmasterlabs/mcp-x402-sdk package: `npm i @scriptmasterlabs/mcp-x402-sdk`. Import `x402Payment` and wrap your tool handler with it — 5 lines of TypeScript. The SDK handles wallet provisioning, AP2 mandate verification, chain routing, 402Proof receipt generation, and audit logging automatically. Any MCP server author can monetize their tools using the same infrastructure that powers mcp-x402.",
|
|
59
|
+
"category": "sdk",
|
|
60
|
+
"url": "https://www.npmjs.com/package/@scriptmasterlabs/mcp-x402-sdk"
|
|
61
|
+
},
|
|
62
|
+
{
|
|
63
|
+
"question": "What financial intelligence does leviathan_signal provide?",
|
|
64
|
+
"answer": "leviathan_signal provides institutional-grade equity squeeze signals using a multi-engine verdict system: OracleEngine (aggregates all signal types), RecurrentDepthTransformer/RDT (multi-symbol ranking via graph traversal), and SML Fractal Cascade (proprietary squeeze pattern detection). It returns a signal verdict (BUY IGNITION / BUY / HOLD / SELL / SHIELD), confidence score, regime label (ALPHA_EXPANSION / MACRO_COLLAPSE / NEUTRAL / SHIELD), and a 402Proof receipt. Cost: $0.05 USDC per call.",
|
|
65
|
+
"category": "tools",
|
|
66
|
+
"url": "https://squeezeos-api.onrender.com"
|
|
67
|
+
},
|
|
68
|
+
{
|
|
69
|
+
"question": "Who built mcp-x402 and is it open source?",
|
|
70
|
+
"answer": "mcp-x402 was built by ScriptMasterLabs (Script Master Labs LLC), an SDVOSB (Service-Disabled Veteran-Owned Small Business). It is MIT licensed — no proprietary core, no vendor lock-in. The source code lives inside the sml_portfolio monorepo at github.com/timwal78/sml_portfolio/tree/main/mcp-x402. The companion SDK (@scriptmasterlabs/mcp-x402-sdk) is also MIT licensed.",
|
|
71
|
+
"category": "company",
|
|
72
|
+
"url": "https://scriptmasterlabs.com"
|
|
73
|
+
}
|
|
74
|
+
]
|
package/ai/summary.json
ADDED
|
@@ -0,0 +1,157 @@
|
|
|
1
|
+
{
|
|
2
|
+
"product": "mcp-x402",
|
|
3
|
+
"tagline": "The First MCP Server That Pays for Itself",
|
|
4
|
+
"description": "mcp-x402 connects AI agents (Claude, Cursor, and any MCP-compatible agent) to ScriptMasterLabs financial intelligence products via the x402 payment protocol. Agents provision their own wallets, discover pricing from agents.json or llms.txt, pay autonomously with stablecoins, and receive cryptographic receipts — no API keys, no human billing required.",
|
|
5
|
+
"url": "https://scriptmasterlabs.com",
|
|
6
|
+
"npm": "https://www.npmjs.com/package/@scriptmasterlabs/mcp-x402",
|
|
7
|
+
"install_command": "npx @scriptmasterlabs/mcp-x402",
|
|
8
|
+
"license": "MIT",
|
|
9
|
+
"version": "1.0.0",
|
|
10
|
+
"launch_target": "2026-07-02",
|
|
11
|
+
"organization": "ScriptMasterLabs / Script Master Labs LLC (SDVOSB)",
|
|
12
|
+
"github": "https://github.com/timwal78/sml_portfolio/tree/main/mcp-x402",
|
|
13
|
+
|
|
14
|
+
"transports": {
|
|
15
|
+
"stdio": "Default — Claude Code, Claude Desktop",
|
|
16
|
+
"sse": "Cursor/remote — run with MCP_TRANSPORT=sse, listens on port 3402"
|
|
17
|
+
},
|
|
18
|
+
|
|
19
|
+
"claude_config": {
|
|
20
|
+
"mcpServers": {
|
|
21
|
+
"sml": {
|
|
22
|
+
"command": "npx",
|
|
23
|
+
"args": ["@scriptmasterlabs/mcp-x402"]
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
},
|
|
27
|
+
|
|
28
|
+
"tools": [
|
|
29
|
+
{
|
|
30
|
+
"name": "leviathan_signal",
|
|
31
|
+
"cost": "$0.05 USDC",
|
|
32
|
+
"auth": "AP2 mandate required",
|
|
33
|
+
"description": "Institutional-grade squeeze signals. Multi-engine verdict from OracleEngine + RDT + SML Fractal Cascade.",
|
|
34
|
+
"example_params": {"ticker": "MSTR", "signal_type": "squeeze", "min_confidence": 75}
|
|
35
|
+
},
|
|
36
|
+
{
|
|
37
|
+
"name": "xmit_edgar_decode",
|
|
38
|
+
"cost": "$0.02 USDC",
|
|
39
|
+
"auth": "AP2 mandate required",
|
|
40
|
+
"description": "Parse SEC DEF 14A / 13F / 13D filings. Raw filing content never leaves SML servers.",
|
|
41
|
+
"example_params": {"filing_url": "https://www.sec.gov/Archives/edgar/data/...", "parse_target": "executive_pay", "format": "json"}
|
|
42
|
+
},
|
|
43
|
+
{
|
|
44
|
+
"name": "xdeo_earnings_estimate",
|
|
45
|
+
"cost": "$0.02 USDC",
|
|
46
|
+
"auth": "AP2 mandate required",
|
|
47
|
+
"description": "Decentralized earnings oracle. Earns +2 Agent Credit Bureau score points per successful call.",
|
|
48
|
+
"example_params": {"ticker": "NVDA", "fiscal_quarter": "Q12025", "estimate_type": "all"}
|
|
49
|
+
},
|
|
50
|
+
{
|
|
51
|
+
"name": "ftd_threshold_scan",
|
|
52
|
+
"cost": "Alerts FREE / Full $0.05 USDC",
|
|
53
|
+
"auth": "None for alerts tier",
|
|
54
|
+
"description": "SEC Reg SHO Failure-to-Deliver spike detection. 15-minute cache on full data.",
|
|
55
|
+
"example_params": {"scan_type": "alerts"}
|
|
56
|
+
},
|
|
57
|
+
{
|
|
58
|
+
"name": "nexus_agent_hire",
|
|
59
|
+
"cost": "Query FREE / Hire: 5% commission",
|
|
60
|
+
"auth": "None for query",
|
|
61
|
+
"description": "Agent marketplace. Find and hire specialized AI agents by capability and budget.",
|
|
62
|
+
"example_params": {"capability": "options flow analysis", "max_budget": "1.00", "action": "query"}
|
|
63
|
+
},
|
|
64
|
+
{
|
|
65
|
+
"name": "crawl_paid_fetch",
|
|
66
|
+
"cost": "$0.005 USDC",
|
|
67
|
+
"auth": "None",
|
|
68
|
+
"description": "Pay-per-fetch web scraping. Human users bypass automatically. Extracts tables, text, or raw HTML.",
|
|
69
|
+
"example_params": {"url": "https://example.com/data", "extract": "tables"}
|
|
70
|
+
}
|
|
71
|
+
],
|
|
72
|
+
|
|
73
|
+
"payment_flow": [
|
|
74
|
+
"Agent discovers tool prices from agents.json or llms.txt",
|
|
75
|
+
"AP2 mandate checked — Agent Credit Bureau score ≥ 300 triggers auto-approve",
|
|
76
|
+
"x402 stablecoin transfer on cheapest/fastest available chain",
|
|
77
|
+
"402Proof cryptographic receipt returned in _meta block of every response",
|
|
78
|
+
"Agent Credit Bureau score updated after successful call"
|
|
79
|
+
],
|
|
80
|
+
|
|
81
|
+
"payment_response_meta": {
|
|
82
|
+
"_meta": {
|
|
83
|
+
"receipt_id": "uuid",
|
|
84
|
+
"tx_hash": "0xabc...",
|
|
85
|
+
"chain": "base",
|
|
86
|
+
"amount_paid": "0.05 USDC",
|
|
87
|
+
"timestamp": 1750000000000
|
|
88
|
+
}
|
|
89
|
+
},
|
|
90
|
+
|
|
91
|
+
"payment_chains": [
|
|
92
|
+
{"chain": "Base", "currency": "USDC", "role": "preferred", "latency": "<3s"},
|
|
93
|
+
{"chain": "XRPL", "currency": "RLUSD", "role": "fallback", "latency": "~500ms"},
|
|
94
|
+
{"chain": "Solana", "currency": "USDC", "role": "last resort", "latency": "varies"}
|
|
95
|
+
],
|
|
96
|
+
|
|
97
|
+
"spend_controls": {
|
|
98
|
+
"auto_approve_threshold": "$1.00 per session",
|
|
99
|
+
"daily_spend_cap": "$50.00 per wallet",
|
|
100
|
+
"price_cache_ttl": "60 seconds"
|
|
101
|
+
},
|
|
102
|
+
|
|
103
|
+
"agent_credit_bureau": {
|
|
104
|
+
"score_range": "300–850 (FICO-style)",
|
|
105
|
+
"registry": "XRPL wallet addresses",
|
|
106
|
+
"auto_approve_min_score": 300,
|
|
107
|
+
"score_gains": "+2 per successful xdeo_earnings_estimate call; more from other on-chain activity",
|
|
108
|
+
"endpoint": "https://four02proof.onrender.com/v1/bureau/score/{wallet}"
|
|
109
|
+
},
|
|
110
|
+
|
|
111
|
+
"security": {
|
|
112
|
+
"private_keys": "OS keychain only (macOS Keychain / Windows DPAPI / Linux Secret Service via keytar). Never in env vars or files.",
|
|
113
|
+
"api_transport": "mTLS with pinned cert on all SML API calls",
|
|
114
|
+
"input_validation": "Zod schema, 100% tool coverage",
|
|
115
|
+
"audit_log": "Append-only SHA-256 HMAC chained log, 7-day local + cloud backup",
|
|
116
|
+
"pii_in_logs": "Wallet addresses hashed (SHA-256 prefix), filing content redacted",
|
|
117
|
+
"rate_limits": "100 req/min per tool, 1000 req/day per wallet",
|
|
118
|
+
"ap2_mandate": "Verified before every paid call, fail-closed"
|
|
119
|
+
},
|
|
120
|
+
|
|
121
|
+
"sdk": {
|
|
122
|
+
"package": "@scriptmasterlabs/mcp-x402-sdk",
|
|
123
|
+
"install": "npm i @scriptmasterlabs/mcp-x402-sdk",
|
|
124
|
+
"purpose": "Add x402 payments to any MCP server in 5 lines of TypeScript",
|
|
125
|
+
"handles": ["wallet provisioning", "AP2 mandate", "chain routing", "receipts", "audit logging"]
|
|
126
|
+
},
|
|
127
|
+
|
|
128
|
+
"ecosystem": [
|
|
129
|
+
{"service": "SqueezeOS API", "url": "https://squeezeos-api.onrender.com", "role": "Market intelligence (33 MCP tools, RLUSD/402Proof)"},
|
|
130
|
+
{"service": "402Proof", "url": "https://four02proof.onrender.com", "role": "x402 payment receipts + Agent Credit Bureau"},
|
|
131
|
+
{"service": "Ghost Layer", "url": "https://ghost-layer.onrender.com", "role": "XRPL+Base toll gateway"},
|
|
132
|
+
{"service": "ScriptMasterLabs", "url": "https://scriptmasterlabs.com", "role": "Operator homepage"}
|
|
133
|
+
],
|
|
134
|
+
|
|
135
|
+
"moat": [
|
|
136
|
+
"Only MCP server with live x402 + AP2 + multi-chain production stack",
|
|
137
|
+
"Only MCP server with Agent Credit Bureau (300–850 scores) built in",
|
|
138
|
+
"Only one backed by live financial intelligence marketplace (SqueezeOS)",
|
|
139
|
+
"SDVOSB federal credibility",
|
|
140
|
+
"MIT licensed — no proprietary lock-in"
|
|
141
|
+
],
|
|
142
|
+
|
|
143
|
+
"target_users": [
|
|
144
|
+
"AI agent developers adding autonomous payments to their agents",
|
|
145
|
+
"MCP server authors wanting to monetize via x402 (use the SDK)",
|
|
146
|
+
"Quantitative analysts using AI agents for financial research",
|
|
147
|
+
"Crypto-native developers building agent-to-agent commerce"
|
|
148
|
+
],
|
|
149
|
+
|
|
150
|
+
"discovery": {
|
|
151
|
+
"llms_txt": "https://mcp-x402.scriptmasterlabs.com/llms.txt",
|
|
152
|
+
"agents_json": "https://mcp-x402.scriptmasterlabs.com/agents.json",
|
|
153
|
+
"agentcard": "https://mcp-x402.scriptmasterlabs.com/.well-known/agentcard.json",
|
|
154
|
+
"summary": "https://mcp-x402.scriptmasterlabs.com/ai/summary.json",
|
|
155
|
+
"faq": "https://mcp-x402.scriptmasterlabs.com/ai/faq.json"
|
|
156
|
+
}
|
|
157
|
+
}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { RouteParams } from '../../server/payments/router.js';
|
|
2
|
+
export declare class BaseChain {
|
|
3
|
+
private static instance;
|
|
4
|
+
private readonly testnet;
|
|
5
|
+
private constructor();
|
|
6
|
+
static getInstance(): BaseChain;
|
|
7
|
+
sendPayment(params: RouteParams): Promise<string>;
|
|
8
|
+
private getPrivateKey;
|
|
9
|
+
}
|
|
10
|
+
//# sourceMappingURL=base.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"base.d.ts","sourceRoot":"","sources":["../../../src/lib/chains/base.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iCAAiC,CAAC;AAoBnE,qBAAa,SAAS;IACpB,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAY;IACnC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAU;IAElC,OAAO;IAIP,MAAM,CAAC,WAAW,IAAI,SAAS;IAOzB,WAAW,CAAC,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,MAAM,CAAC;YA6BzC,aAAa;CAQ5B"}
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.BaseChain = void 0;
|
|
7
|
+
const viem_1 = require("viem");
|
|
8
|
+
const chains_1 = require("viem/chains");
|
|
9
|
+
const accounts_1 = require("viem/accounts");
|
|
10
|
+
const bip39_1 = require("bip39");
|
|
11
|
+
const hdkey_1 = __importDefault(require("hdkey"));
|
|
12
|
+
const wallet_js_1 = require("../../server/payments/wallet.js");
|
|
13
|
+
// USDC contract on Base mainnet
|
|
14
|
+
const USDC_BASE = '0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913';
|
|
15
|
+
// USDC contract on Base Sepolia
|
|
16
|
+
const USDC_BASE_SEPOLIA = '0x036CbD53842c5426634e7929541eC2318f3dCF7e';
|
|
17
|
+
const ERC20_TRANSFER_ABI = [
|
|
18
|
+
{
|
|
19
|
+
name: 'transfer',
|
|
20
|
+
type: 'function',
|
|
21
|
+
inputs: [
|
|
22
|
+
{ name: 'to', type: 'address' },
|
|
23
|
+
{ name: 'amount', type: 'uint256' },
|
|
24
|
+
],
|
|
25
|
+
outputs: [{ name: '', type: 'bool' }],
|
|
26
|
+
stateMutability: 'nonpayable',
|
|
27
|
+
},
|
|
28
|
+
];
|
|
29
|
+
class BaseChain {
|
|
30
|
+
static instance;
|
|
31
|
+
testnet;
|
|
32
|
+
constructor() {
|
|
33
|
+
this.testnet = process.env['TESTNET'] === 'true';
|
|
34
|
+
}
|
|
35
|
+
static getInstance() {
|
|
36
|
+
if (!BaseChain.instance) {
|
|
37
|
+
BaseChain.instance = new BaseChain();
|
|
38
|
+
}
|
|
39
|
+
return BaseChain.instance;
|
|
40
|
+
}
|
|
41
|
+
async sendPayment(params) {
|
|
42
|
+
const chain = this.testnet ? chains_1.baseSepolia : chains_1.base;
|
|
43
|
+
const rpcUrl = this.testnet
|
|
44
|
+
? (process.env['BASE_SEPOLIA_RPC_URL'] ?? 'https://sepolia.base.org')
|
|
45
|
+
: (process.env['BASE_RPC_URL'] ?? 'https://mainnet.base.org');
|
|
46
|
+
const privateKey = await this.getPrivateKey();
|
|
47
|
+
const account = (0, accounts_1.privateKeyToAccount)(privateKey);
|
|
48
|
+
const walletClient = (0, viem_1.createWalletClient)({ account, chain, transport: (0, viem_1.http)(rpcUrl) });
|
|
49
|
+
const publicClient = (0, viem_1.createPublicClient)({ chain, transport: (0, viem_1.http)(rpcUrl) });
|
|
50
|
+
const usdcAddress = this.testnet ? USDC_BASE_SEPOLIA : USDC_BASE;
|
|
51
|
+
const amount = (0, viem_1.parseUnits)(params.amount, 6); // USDC has 6 decimals
|
|
52
|
+
const hash = await walletClient.writeContract({
|
|
53
|
+
address: usdcAddress,
|
|
54
|
+
abi: ERC20_TRANSFER_ABI,
|
|
55
|
+
functionName: 'transfer',
|
|
56
|
+
args: [params.to, amount],
|
|
57
|
+
account,
|
|
58
|
+
chain,
|
|
59
|
+
});
|
|
60
|
+
// Wait for confirmation
|
|
61
|
+
await publicClient.waitForTransactionReceipt({ hash });
|
|
62
|
+
return hash;
|
|
63
|
+
}
|
|
64
|
+
async getPrivateKey() {
|
|
65
|
+
const mnemonic = await wallet_js_1.WalletManager.getInstance().getSeed();
|
|
66
|
+
const seed = (0, bip39_1.mnemonicToSeedSync)(mnemonic);
|
|
67
|
+
const hdkey = hdkey_1.default.fromMasterSeed(seed);
|
|
68
|
+
const child = hdkey.derive("m/44'/60'/0'/0/0");
|
|
69
|
+
if (!child.privateKey)
|
|
70
|
+
throw new Error('Key derivation failed');
|
|
71
|
+
return `0x${child.privateKey.toString('hex')}`;
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
exports.BaseChain = BaseChain;
|
|
75
|
+
//# sourceMappingURL=base.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"base.js","sourceRoot":"","sources":["../../../src/lib/chains/base.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { RouteParams } from '../../server/payments/router.js';
|
|
2
|
+
export declare class SolanaChain {
|
|
3
|
+
private static instance;
|
|
4
|
+
private readonly rpcUrl;
|
|
5
|
+
private constructor();
|
|
6
|
+
static getInstance(): SolanaChain;
|
|
7
|
+
sendPayment(params: RouteParams): Promise<string>;
|
|
8
|
+
private getKeypair;
|
|
9
|
+
}
|
|
10
|
+
//# sourceMappingURL=solana.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"solana.d.ts","sourceRoot":"","sources":["../../../src/lib/chains/solana.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iCAAiC,CAAC;AAKnE,qBAAa,WAAW;IACtB,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAc;IACrC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;IAEhC,OAAO;IAIP,MAAM,CAAC,WAAW,IAAI,WAAW;IAO3B,WAAW,CAAC,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,MAAM,CAAC;YAkBzC,UAAU;CASzB"}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.SolanaChain = void 0;
|
|
7
|
+
const web3_js_1 = require("@solana/web3.js");
|
|
8
|
+
const spl_token_1 = require("@solana/spl-token");
|
|
9
|
+
const bip39_1 = require("bip39");
|
|
10
|
+
const hdkey_1 = __importDefault(require("hdkey"));
|
|
11
|
+
const wallet_js_1 = require("../../server/payments/wallet.js");
|
|
12
|
+
// USDC mint on Solana mainnet
|
|
13
|
+
const USDC_MINT = new web3_js_1.PublicKey('EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v');
|
|
14
|
+
class SolanaChain {
|
|
15
|
+
static instance;
|
|
16
|
+
rpcUrl;
|
|
17
|
+
constructor() {
|
|
18
|
+
this.rpcUrl = process.env['SOLANA_RPC_URL'] ?? 'https://api.mainnet-beta.solana.com';
|
|
19
|
+
}
|
|
20
|
+
static getInstance() {
|
|
21
|
+
if (!SolanaChain.instance) {
|
|
22
|
+
SolanaChain.instance = new SolanaChain();
|
|
23
|
+
}
|
|
24
|
+
return SolanaChain.instance;
|
|
25
|
+
}
|
|
26
|
+
async sendPayment(params) {
|
|
27
|
+
const connection = new web3_js_1.Connection(this.rpcUrl, 'confirmed');
|
|
28
|
+
const payer = await this.getKeypair();
|
|
29
|
+
const destination = new web3_js_1.PublicKey(params.to);
|
|
30
|
+
const fromATA = await (0, spl_token_1.getAssociatedTokenAddress)(USDC_MINT, payer.publicKey);
|
|
31
|
+
const toATA = await (0, spl_token_1.getAssociatedTokenAddress)(USDC_MINT, destination);
|
|
32
|
+
const lamports = Math.round(parseFloat(params.amount) * 1_000_000); // USDC 6 decimals
|
|
33
|
+
const tx = new web3_js_1.Transaction().add((0, spl_token_1.createTransferInstruction)(fromATA, toATA, payer.publicKey, BigInt(lamports)));
|
|
34
|
+
const sig = await (0, web3_js_1.sendAndConfirmTransaction)(connection, tx, [payer]);
|
|
35
|
+
return sig;
|
|
36
|
+
}
|
|
37
|
+
async getKeypair() {
|
|
38
|
+
const mnemonic = await wallet_js_1.WalletManager.getInstance().getSeed();
|
|
39
|
+
const seed = (0, bip39_1.mnemonicToSeedSync)(mnemonic);
|
|
40
|
+
const hdkey = hdkey_1.default.fromMasterSeed(seed);
|
|
41
|
+
// BIP-44 for Solana: m/44'/501'/0'/0'
|
|
42
|
+
const child = hdkey.derive("m/44'/501'/0'/0'");
|
|
43
|
+
if (!child.privateKey)
|
|
44
|
+
throw new Error('Solana key derivation failed');
|
|
45
|
+
return web3_js_1.Keypair.fromSeed(child.privateKey.slice(0, 32));
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
exports.SolanaChain = SolanaChain;
|
|
49
|
+
//# sourceMappingURL=solana.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"solana.js","sourceRoot":"","sources":["../../../src/lib/chains/solana.ts"],"names":[],"mappings":";;;;;;AAAA,6CAMyB;AACzB,iDAAyF;AACzF,iCAA2C;AAC3C,kDAA0B;AAC1B,+DAAgE;AAGhE,8BAA8B;AAC9B,MAAM,SAAS,GAAG,IAAI,mBAAS,CAAC,8CAA8C,CAAC,CAAC;AAEhF,MAAa,WAAW;IACd,MAAM,CAAC,QAAQ,CAAc;IACpB,MAAM,CAAS;IAEhC;QACE,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC,IAAI,qCAAqC,CAAC;IACvF,CAAC;IAED,MAAM,CAAC,WAAW;QAChB,IAAI,CAAC,WAAW,CAAC,QAAQ,EAAE,CAAC;YAC1B,WAAW,CAAC,QAAQ,GAAG,IAAI,WAAW,EAAE,CAAC;QAC3C,CAAC;QACD,OAAO,WAAW,CAAC,QAAQ,CAAC;IAC9B,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,MAAmB;QACnC,MAAM,UAAU,GAAG,IAAI,oBAAU,CAAC,IAAI,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;QAC5D,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,UAAU,EAAE,CAAC;QACtC,MAAM,WAAW,GAAG,IAAI,mBAAS,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QAE7C,MAAM,OAAO,GAAG,MAAM,IAAA,qCAAyB,EAAC,SAAS,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC;QAC5E,MAAM,KAAK,GAAG,MAAM,IAAA,qCAAyB,EAAC,SAAS,EAAE,WAAW,CAAC,CAAC;QAEtE,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,kBAAkB;QAEtF,MAAM,EAAE,GAAG,IAAI,qBAAW,EAAE,CAAC,GAAG,CAC9B,IAAA,qCAAyB,EAAC,OAAO,EAAE,KAAK,EAAE,KAAK,CAAC,SAAS,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC,CAC7E,CAAC;QAEF,MAAM,GAAG,GAAG,MAAM,IAAA,mCAAyB,EAAC,UAAU,EAAE,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;QACrE,OAAO,GAAG,CAAC;IACb,CAAC;IAEO,KAAK,CAAC,UAAU;QACtB,MAAM,QAAQ,GAAG,MAAM,yBAAa,CAAC,WAAW,EAAE,CAAC,OAAO,EAAE,CAAC;QAC7D,MAAM,IAAI,GAAG,IAAA,0BAAkB,EAAC,QAAQ,CAAC,CAAC;QAC1C,MAAM,KAAK,GAAG,eAAK,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;QACzC,sCAAsC;QACtC,MAAM,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,kBAAkB,CAAC,CAAC;QAC/C,IAAI,CAAC,KAAK,CAAC,UAAU;YAAE,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAC;QACvE,OAAO,iBAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;IACzD,CAAC;CACF;AA1CD,kCA0CC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { RouteParams } from '../../server/payments/router.js';
|
|
2
|
+
export declare class XRPLChain {
|
|
3
|
+
private static instance;
|
|
4
|
+
private readonly rpcUrl;
|
|
5
|
+
private constructor();
|
|
6
|
+
static getInstance(): XRPLChain;
|
|
7
|
+
sendPayment(params: RouteParams): Promise<string>;
|
|
8
|
+
private getWallet;
|
|
9
|
+
}
|
|
10
|
+
//# sourceMappingURL=xrpl.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"xrpl.d.ts","sourceRoot":"","sources":["../../../src/lib/chains/xrpl.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iCAAiC,CAAC;AAEnE,qBAAa,SAAS;IACpB,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAY;IACnC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;IAEhC,OAAO;IAIP,MAAM,CAAC,WAAW,IAAI,SAAS;IAOzB,WAAW,CAAC,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,MAAM,CAAC;YAuCzC,SAAS;CAIxB"}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.XRPLChain = void 0;
|
|
4
|
+
const xrpl_1 = require("xrpl");
|
|
5
|
+
const wallet_js_1 = require("../../server/payments/wallet.js");
|
|
6
|
+
class XRPLChain {
|
|
7
|
+
static instance;
|
|
8
|
+
rpcUrl;
|
|
9
|
+
constructor() {
|
|
10
|
+
this.rpcUrl = process.env['XRPL_RPC_URL'] ?? 'wss://xrplcluster.com';
|
|
11
|
+
}
|
|
12
|
+
static getInstance() {
|
|
13
|
+
if (!XRPLChain.instance) {
|
|
14
|
+
XRPLChain.instance = new XRPLChain();
|
|
15
|
+
}
|
|
16
|
+
return XRPLChain.instance;
|
|
17
|
+
}
|
|
18
|
+
async sendPayment(params) {
|
|
19
|
+
const client = new xrpl_1.Client(this.rpcUrl);
|
|
20
|
+
await client.connect();
|
|
21
|
+
try {
|
|
22
|
+
const wallet = await this.getWallet();
|
|
23
|
+
// RLUSD on XRPL or XRP-denominated drop equivalent
|
|
24
|
+
const tx = await client.submitAndWait({
|
|
25
|
+
TransactionType: 'Payment',
|
|
26
|
+
Account: wallet.address,
|
|
27
|
+
Destination: params.to,
|
|
28
|
+
Amount: params.currency === 'RLUSD'
|
|
29
|
+
? {
|
|
30
|
+
currency: 'USD',
|
|
31
|
+
issuer: process.env['RLUSD_ISSUER'] ?? 'rHb9CJAWyB4rj91VRWn96DkukG4bwdtyTh',
|
|
32
|
+
value: params.amount,
|
|
33
|
+
}
|
|
34
|
+
: (0, xrpl_1.xrpToDrops)(params.amount),
|
|
35
|
+
}, { wallet });
|
|
36
|
+
if (tx.result.meta && typeof tx.result.meta === 'object' && 'TransactionResult' in tx.result.meta) {
|
|
37
|
+
const meta = tx.result.meta;
|
|
38
|
+
if (meta.TransactionResult !== 'tesSUCCESS') {
|
|
39
|
+
throw new Error(`XRPL transaction failed: ${meta.TransactionResult}`);
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
const txResult = tx.result;
|
|
43
|
+
return txResult.hash ?? 'unknown';
|
|
44
|
+
}
|
|
45
|
+
finally {
|
|
46
|
+
await client.disconnect();
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
async getWallet() {
|
|
50
|
+
const mnemonic = await wallet_js_1.WalletManager.getInstance().getSeed();
|
|
51
|
+
return xrpl_1.Wallet.fromMnemonic(mnemonic, { mnemonicEncoding: 'bip39' });
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
exports.XRPLChain = XRPLChain;
|
|
55
|
+
//# sourceMappingURL=xrpl.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"xrpl.js","sourceRoot":"","sources":["../../../src/lib/chains/xrpl.ts"],"names":[],"mappings":";;;AAAA,+BAAkD;AAClD,+DAAgE;AAGhE,MAAa,SAAS;IACZ,MAAM,CAAC,QAAQ,CAAY;IAClB,MAAM,CAAS;IAEhC;QACE,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,IAAI,uBAAuB,CAAC;IACvE,CAAC;IAED,MAAM,CAAC,WAAW;QAChB,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC;YACxB,SAAS,CAAC,QAAQ,GAAG,IAAI,SAAS,EAAE,CAAC;QACvC,CAAC;QACD,OAAO,SAAS,CAAC,QAAQ,CAAC;IAC5B,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,MAAmB;QACnC,MAAM,MAAM,GAAG,IAAI,aAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACvC,MAAM,MAAM,CAAC,OAAO,EAAE,CAAC;QAEvB,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,SAAS,EAAE,CAAC;YAEtC,mDAAmD;YACnD,MAAM,EAAE,GAAG,MAAM,MAAM,CAAC,aAAa,CACnC;gBACE,eAAe,EAAE,SAAS;gBAC1B,OAAO,EAAE,MAAM,CAAC,OAAO;gBACvB,WAAW,EAAE,MAAM,CAAC,EAAE;gBACtB,MAAM,EACJ,MAAM,CAAC,QAAQ,KAAK,OAAO;oBACzB,CAAC,CAAC;wBACE,QAAQ,EAAE,KAAK;wBACf,MAAM,EAAE,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,IAAI,oCAAoC;wBAC3E,KAAK,EAAE,MAAM,CAAC,MAAM;qBACrB;oBACH,CAAC,CAAC,IAAA,iBAAU,EAAC,MAAM,CAAC,MAAM,CAAC;aAChC,EACD,EAAE,MAAM,EAAE,CACX,CAAC;YAEF,IAAI,EAAE,CAAC,MAAM,CAAC,IAAI,IAAI,OAAO,EAAE,CAAC,MAAM,CAAC,IAAI,KAAK,QAAQ,IAAI,mBAAmB,IAAI,EAAE,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;gBAClG,MAAM,IAAI,GAAG,EAAE,CAAC,MAAM,CAAC,IAAqC,CAAC;gBAC7D,IAAI,IAAI,CAAC,iBAAiB,KAAK,YAAY,EAAE,CAAC;oBAC5C,MAAM,IAAI,KAAK,CAAC,4BAA4B,IAAI,CAAC,iBAAiB,EAAE,CAAC,CAAC;gBACxE,CAAC;YACH,CAAC;YAED,MAAM,QAAQ,GAAG,EAAE,CAAC,MAAsC,CAAC;YAC3D,OAAO,QAAQ,CAAC,IAAI,IAAI,SAAS,CAAC;QACpC,CAAC;gBAAS,CAAC;YACT,MAAM,MAAM,CAAC,UAAU,EAAE,CAAC;QAC5B,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,SAAS;QACrB,MAAM,QAAQ,GAAG,MAAM,yBAAa,CAAC,WAAW,EAAE,CAAC,OAAO,EAAE,CAAC;QAC7D,OAAO,aAAM,CAAC,YAAY,CAAC,QAAQ,EAAE,EAAE,gBAAgB,EAAE,OAAO,EAAE,CAAC,CAAC;IACtE,CAAC;CACF;AA1DD,8BA0DC"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
export declare class CreditBureau {
|
|
2
|
+
private static instance;
|
|
3
|
+
private readonly cache;
|
|
4
|
+
private constructor();
|
|
5
|
+
static getInstance(): CreditBureau;
|
|
6
|
+
getScore(wallet: string): Promise<number>;
|
|
7
|
+
getFullScore(wallet: string): Promise<{
|
|
8
|
+
score: number;
|
|
9
|
+
grade: string;
|
|
10
|
+
risk: string;
|
|
11
|
+
creditLimit: number;
|
|
12
|
+
cached: boolean;
|
|
13
|
+
}>;
|
|
14
|
+
incrementScore(wallet: string, delta: number): Promise<void>;
|
|
15
|
+
}
|
|
16
|
+
//# sourceMappingURL=bureau.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bureau.d.ts","sourceRoot":"","sources":["../../../src/lib/credit/bureau.ts"],"names":[],"mappings":"AAaA,qBAAa,YAAY;IACvB,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAe;IACtC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAiC;IAEvD,OAAO;IAEP,MAAM,CAAC,WAAW,IAAI,YAAY;IAO5B,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IA2CzC,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,OAAO,CAAA;KAAE,CAAC;IAkB3H,cAAc,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAcnE"}
|