
Ramp Kit
io.github.armandocodecr由 GitHub 帳號 armandocodecr 發布v0.1.9更新於 Oct 27, 2026
LATAM fiat ramps on Stellar for AI agents: live quotes, sandbox orders, PIX/SPEI simulation, docs
概覽
針對 Stellar 上拉丁美洲法幣出入金的 MCP 伺服器:讓助理查閱套件文件、比較即時報價、建立沙箱訂單並檢視錢包狀態。
- 可以做什麼
- 查閱內建文件的六個主題並探索可用的出入金服務商
- 取得即時法幣報價並在多個服務商之間比較匯率
- 建立並追蹤沙箱出入金訂單,包括模擬 PIX/SPEI 入金
- 檢查 Stellar 錢包狀態,例如信任線與待領取的可領取餘額
- 適用情境
- 適合在助理協助整合 Ramp Kit SDK 或元件時使用,也適合讓它先在不寫程式的情況下走完一遍沙箱出入金流程(報價、下單、模擬入金、結算)。
- 執行需求
- 透過 npx 從 npm 套件 @ramp-kit/mcp 在本機執行。使用 mock 服務商時不需憑證;即時沙箱工具需要 ETHERFUSE_API_KEY,Manteca 服務商還需要 MANTECA_API_KEY 與 MANTECA_USER_ID。RAMPKIT_ENV 選擇 sandbox(預設)或 production。需要連線至服務商 API 的網路。
安裝
在 SourceWeft 中
- 開啟 儀表板中的 Ramp Kit,將其新增到工作區。
- 為需要使用其工具的對話啟用該服務。
Desktop only,透過 STDIO。 STDIO 服務會啟動本機處理程序,因此需要 SourceWeft 桌面主機。
其他 MCP 客戶端
參照 儲存庫 中的啟動說明。
README
LATAM Ramp Kit
[CI] [npm: core] [npm: react] [npm: server] [npm: mcp] [MCP Registry] [license: MIT]
Drop-in SDK + React components to add fiat on/off-ramps to any app in Latin America, built for the Stellar Brazil Ramps and Regional Kits sub-lane.
Install
For AI agents:
BRL in and out, proven on Stellar Testnet (Etherfuse sandbox):
- In: 100 BRL entered via PIX and settled as 19.0097 USDC in a fresh Stellar wallet — account creation sponsored by the provider, tokens delivered via claimable balance, claimed with one kit helper. Settlement tx on Stellar Expert.
- Out: 5 USDC sold back to BRL — the provider pre-built the burn
transaction, the kit's
signAndSubmitsigned and submitted it (burn tx), and the PIX payout processed provider-side. The widget ships the full Sell flow with in-widget signing and automatictx_too_laterecovery.
One provider interface, two direct backends plus any SEP-compliant Stellar anchor (and a mock for instant dev):
Swapping providers is one line (new MantecaProvider({ apiKey }),
new MockProvider()), or let the router pick per country and compare live
quotes:
Packages
@ramp-kit/core— framework-agnostic TypeScript SDKRampProviderinterface:listAssets→getQuote→createOrder→getOrder- Normalized order lifecycle:
created → awaiting_deposit → awaiting_signature → processing → settled | failed | cancelled EtherfuseProvider(incl.registerWallet,listBankAccounts, sandboxsimulateFiatReceived),MantecaProvider,MockProviderRampRouter: provider selection per country/currency + live quote comparison- Stellar helpers:
getAccountState(trustline/reserve checks),getPendingBalances/claimPendingBalances(sponsored-onramp claims),signAndSubmit(handlestx_too_late→ regenerate),parseAssetIdentifier
@ramp-kit/react—<RampWidget />embeddable stepper flow (live quote countdown, PIX/SPEI deposit instructions, status tracking),useQuote(auto-refresh on expiry),useOrder(polls until terminal state)@ramp-kit/server— zero-dependency production backend: API-key proxy with a strict endpoint allowlist, plus webhook receivers with HMAC-SHA256 signature verification (RFC 8785 canonicalization for Etherfuse)apps/demo— full BRL·PIX / MXN·SPEI onramp on Stellar Testnet: built-in test wallet, live Horizon balance panel, one-click claimapps/second-app— the same widget dropped into a different app (the sub-lane's "works in a second app" criterion)
Why two providers
Manteca has the broadest LATAM fiat rails; Etherfuse is Stellar-native with
sponsored wallet onboarding. Both settle USDC on Stellar (Manteca added
Stellar support recently — verified live by this kit), which makes real
multi-anchor comparison possible on the same corridor:
RampRouter.compareQuotes fans one request out to both and returns live
rates sorted (verified: 100 BRL → 19.49 USDC Etherfuse vs 19.23 USDC Manteca).
They still expose completely different mental models (quote/order vs.
multi-stage synthetics + price locks) — the kit hides that behind one
interface, which is exactly the pain an app integrating ramps in the region
hits first.
Running the demo (100% sandbox, no real money)
Zero-setup path: pick "Mock provider" and walk the full flow immediately.
Real sandbox path (Stellar Testnet):
- Create a sandbox account at https://sandbox.etherfuse.com — approve your own KYB with the sandbox button.
- In the dashboard, use Add BRL Bank Account (PIX) — it comes pre-filled with test values and is compliant instantly. (MXN accounts registered via API await async approval.)
- Copy your
api_sand…key into the demo and connect Freighter (your own wallet signs everything — or generate a throwaway test wallet; the provider registration happens automatically). Run an onramp: quote → order → simulate the incoming PIX → watch it settle on Stellar Testnet → claim the delivered claimable balance with one click. Then flip to Sell to go the other way: USDC → BRL with in-wallet signing, both transactions linked to Stellar Expert for public verification.
Manteca sandbox (https://sandbox.manteca.dev/crypto/v2) requires credentials
from the Manteca team; the adapter is implemented from their public docs and
ships with the same normalized lifecycle.
Note on API keys: a provider key identifies your business (its KYB, fees and settlement accounts) — there is one per app, held server-side, and end users never see it. They are customers under it, identified by
customerId. The demo asks you to paste a key only because whoever opens it is playing the role of the integrating developer.
Shipping it to your own users
You get partner keys from Etherfuse and/or Manteca once. Your users just click buy — they never see a key or an API.
Runnable in examples/backend-integration —
verified end to end against the real sandboxes with an empty client key:
quote → order → deposit → settled, while privileged endpoints (user
onboarding, company config, accounting) return 403 through the proxy.
The one piece that stays yours: onboarding each user with the provider
(KYC) to get their customerId. That's inherent to operating a ramp — from
quote onward the kit handles it.
Why a backend at all? Frontend env vars (VITE_*, NEXT_PUBLIC_*) are
embedded in the served JS bundle — any visitor can read them, so a partner
key there is exposed. The key must live in a backend env var behind
@ramp-kit/server (a ~10-line serverless function, not real
infrastructure). The exception is the SEP-anchor route: SepProvider needs
no partner key — the end user authenticates with their own wallet — so it
runs entirely in the frontend.
Full step-by-step for testnet and mainnet (env files, the single
RAMP_ENV flag, wallet networks, credential checklists):
skills/ramp-kit/references/environments.md.
The same guide ships inside the AI tooling — agents with the kit's skill or
the @ramp-kit/mcp server (get_documentation → environments) can walk
you through it.
Deploy the demo (Vercel)
The demo ships ready to deploy — a serverless proxy at api/[...path].ts
(auto-detected by Vercel at the repo root):
- vercel.com/new → import
armandocodecr/latam-ramp-kit. - Root Directory:
./· Framework Preset: Other, with three overrides in Build & Development Settings:- Install Command:
pnpm install - Build Command:
pnpm -r build - Output Directory:
apps/demo/dist
- Install Command:
- Deploy. No environment variables are needed.
What the deployed demo does:
- Mock provider works for everyone, with zero setup — the full widget flow, buy and sell.
- Live sandbox modes relay the visitor's own key: the browser calls
/api/<provider>/*, the function forwards it to the provider with the same endpoint allowlist@ramp-kit/serverenforces. The deployment holds no credentials and stores nothing. - Upstreams are pinned to the providers' sandbox hosts, so a deployed demo can never reach production money.
Field notes (verified against the real sandbox)
GET /ramp/assetsrequiresblockchain,currencyandwallet— the kit fills sensible defaults.- Bring-your-own wallets must be registered before their first order — the
SDK self-heals this:
createOrderregisters (idempotent) and retries on "Wallet not found".claimOwnership: trueunder a KYB-approved org marks wallets compliant with no per-wallet KYC. - PIX onramp orders report
depositBankName: "PIX"with an empty CLABE — the kit maps this to a PIXDepositInstructionsautomatically. - First-time wallets receive tokens as claimable balances (plus ~1.5 XLM
sponsored reserves);
claimPendingBalancesbuilds trustline + claim in one transaction.
AI tooling: MCP server + agent skill
The kit ships first-class AI support — both for understanding it and for operating it. An AI agent has already driven the full flow through these tools: quoted 50 BRL → USDC, created the sandbox order, simulated the PIX payment and watched it settle on Stellar Testnet.
-
@ramp-kit/mcp — MCP server published on npm and listed in the official MCP Registry as
io.github.armandocodecr/ramp-kit. Nine tools: built-in documentation (get_documentationwith 6 topics), provider discovery, live quotes, multi-provider comparison, sandbox orders, deposit simulation (sandbox-only by design) and Stellar wallet inspection. Works credential-free with the mock provider.Or in any MCP client's
mcpServersconfig: -
skills/ramp-kit — agent skill (Claude Code, Cursor, and any agent supported by the skills CLI): teaches the agent what the kit solves, the integration flow, sandbox setup, verified troubleshooting and the production checklist.
Together they cover both halves: the skill gives an agent the knowledge to guide an integration; the MCP server gives it hands to actually quote, order and verify against the sandbox. This pairs naturally with Stellar's agentic-payments direction (x402/MPP): a ramp that AI agents can understand and operate end-to-end.
Path to production
The code is production-ready; what remains is provider onboarding. Ready today:
- Environment switch —
environment: "sandbox" | "production"on every provider flips base URLs;stellarConfigFor("production")returns mainnet Horizon + network passphrase. No hardcoded issuers anywhere: assets are always discovered via the provider, so mainnet identifiers flow through automatically. - Server-side key handling —
@ramp-kit/servershipscreateRampServer: the API key lives in your backend, the browser only reaches an allowlisted ramp surface (quote/order/status), and the sandbox simulation endpoint is hard-blocked in production. - Webhooks over polling —
createEtherfuseWebhookHandlerverifiesX-Signature(HMAC-SHA256 over RFC 8785-canonicalized JSON, constant-time compare), acks 2xx immediately, and dispatches typed events.verifyMantecaSignaturecovers Manteca's shared-secret HMAC. - Real wallets — signing is callback-based (
claimPendingBalances,signAndSubmit), so Freighter/hardware wallets plug in directly. The demo's localStorage keypair is a sandbox convenience, not the pattern. - Sandbox-only code is fenced —
simulateFiatReceivedthrows in production; deposits are detected from the real SPEI/PIX transfer.
External steps (with the provider, not in code):
- Etherfuse production KYB — real legal-entity review (manual, allow
days/weeks), then an
api_prod_…key. Register real bank accounts (real CLABE/RFC) and confirm BRL/PIX production availability (live in sandbox; listed as upcoming for production). - End-user KYC — production users complete the hosted identity flow (documents + liveness); sandbox auto-approval does not apply.
- Manteca credentials — commercial onboarding for a production
md-api-key, per-country permissions (BRL/PIX), and webhook secret; confirm their signature header name during onboarding. - Deploy
@ramp-kit/serverbehind HTTPS, register the webhook URL viaPOST /ramp/webhook, and store the one-time secret. - Persistence — store quote/order idempotency UUIDs and webhook events (dedupe by resource id + status) in your database.
Repo layout
來源:README.md,提交 2010eeb
工具
0版本歷史
1- v0.1.9最新Sep 16, 2026
評分
已滿足適用檢查項的 50%
該評分衡量此收錄條目的完整程度,依據註冊中心條目、端點與公開來源計算得出。它不是對伺服器本身的評價,也不表示伺服器安全或目前可用:可連通性是帶日期的檢查結果,評分也不包含安裝量或使用者評價。
- 近 30 天內可連通25 分
請保持端點能夠回應 MCP 握手;SourceWeft 每 30 天探測一次。
- 已宣告認證方式10 分
請在註冊中心條目中宣告憑證請求標頭,或保持端點能夠回應探測,以便判定其認證方式。
- 已列出工具15 分
請讓伺服器在無憑證時回應 tools/list,或發布可在沙箱中無憑證啟動的軟體包。
- 描述必需15 分
- 圖示10 分
- 文件15 分
- 授權條款10 分