Quick Start
Get your AI agent making payments in under 5 minutes.
Install the MCP server
Install the BananaCrystal MCP server globally via npm.
npm install -g @bananacrystal/mcp-serverGet your API key
Create an MCP API key from your account dashboard. Sandbox keys start with bc_test_ and are free.
bc_test_...Configure Claude Desktop
Add BananaCrystal to your Claude Desktop config file.
{
"mcpServers": {
"bananacrystal": {
"command": "bananacrystal-mcp",
"env": {
"BANANACRYSTAL_API_KEY": "bc_test_your_sandbox_key_here"
}
}
}
}Ask your agent
Your agent now has 40 payment tools. Try these prompts:
MCP Tools
40 production-ready payment tools across 6 categories. Read-only operations are always free.
pingget_server_infoechoget_my_profileget_balancesget_exchange_ratelist_supported_currencieslist_available_tokensget_transaction_historyget_my_limitsestimate_swap_feesget_agent_configcheck_approval_statusget_kyc_statusget_deposit_statusget_withdrawal_statusget_escrow_balancesget_escrow_historylist_offersget_offerget_my_offerslist_tradesget_tradeget_my_tradesrequest_transfer_otptransfer_tokensswap_currencyinitiate_kycinitiate_depositrequest_withdrawalcreate_offerupdate_offerdelist_offerdelete_offerengage_offercancel_traderequest_agent_transactionexecute_approved_transactionupdate_my_agent_settingsreset_sandbox_balanceRate API
Advanced currency rate operations via REST. Requires a rate-scoped API key.
MCP tool vs Rate API — what's the difference?
The MCP server already includes get_exchange_rate as a read_only tool — your agent can call it directly to get the buy/sell rate for a single currency against USD. That covers most agent use cases.
The Rate API goes further: cross-pair conversions, bulk batch operations, historical time-series data, and statistical summaries. These are available as direct HTTP endpoints authenticated with a rate-scoped API key. Create a rate key from your account dashboard.
Authentication
All Rate API endpoints require a rate-scoped API key passed as the x-api-key header. The sandbox equivalents are available at /mcp/sandbox/rate/* and use your sandbox key (bc_test_...) with fixed mock rates for reproducible testing.
/mcp/rate/currenciesList all supported currencies
Example request
curl "https://agentic.bananacrystal.com/mcp/rate/currencies" \
-H "x-api-key: bc_live_your_rate_key_here"Example response
{
"count": 11,
"currencies": ["EGP", "EUR", "GBP", "GHS", "KES", "NGN", "TZS", "UGX", "USD", "XOF", "ZAR"]
}/mcp/rate/currentGet current exchange rate between two currencies
Parameters
| Name | Required | Description |
|---|---|---|
from | required | Source currency code (e.g. USD) |
to | required | Target currency code (e.g. NGN) |
Example request
curl "https://agentic.bananacrystal.com/mcp/rate/current?from=USD&to=NGN" \
-H "x-api-key: bc_live_your_rate_key_here"Example response
{
"from": "USD",
"to": "NGN",
"rate": 1584.75,
"buyRate": 1590.0,
"sellRate": 1579.5,
"timestamp": "2026-04-30T10:22:00.000Z"
}/mcp/rate/convertConvert an amount from one currency to another
Parameters
| Name | Required | Description |
|---|---|---|
from | required | Source currency code |
to | required | Target currency code |
amount | required | Amount to convert (number) |
Example request
curl "https://agentic.bananacrystal.com/mcp/rate/convert?from=USD&to=NGN&amount=100" \
-H "x-api-key: bc_live_your_rate_key_here"Example response
{
"from": "USD",
"to": "NGN",
"amount": 100,
"converted": 158475.0,
"rate": 1584.75,
"timestamp": "2026-04-30T10:22:00.000Z"
}/mcp/rate/batch-convertConvert multiple currency amounts in one request (max 100)
Example request
curl -X POST "https://agentic.bananacrystal.com/mcp/rate/batch-convert" \
-H "x-api-key: bc_live_your_rate_key_here" \
-H "Content-Type: application/json" \
-d '{
"conversions": [
{ "from": "USD", "to": "NGN", "amount": 100 },
{ "from": "USD", "to": "GHS", "amount": 50 },
{ "from": "EUR", "to": "GBP", "amount": 200 }
]
}'Example response
[
{ "from": "USD", "to": "NGN", "amount": 100, "converted": 158475.0, "rate": 1584.75, "timestamp": "..." },
{ "from": "USD", "to": "GHS", "amount": 50, "converted": 800.0, "rate": 16.0, "timestamp": "..." },
{ "from": "EUR", "to": "GBP", "amount": 200, "converted": 172.0, "rate": 0.86, "timestamp": "..." }
]/mcp/rate/historyFetch historical exchange rates for a currency pair
Parameters
| Name | Required | Description |
|---|---|---|
from | required | Source currency code |
to | required | Target currency code |
startDate | required | Start date (ISO 8601, e.g. 2026-04-01) |
endDate | required | End date (ISO 8601, e.g. 2026-04-30) |
Example request
curl "https://agentic.bananacrystal.com/mcp/rate/history?from=USD&to=NGN&startDate=2026-04-01&endDate=2026-04-30" \
-H "x-api-key: bc_live_your_rate_key_here"Example response
[
{ "date": "2026-04-01T00:00:00.000Z", "from": "USD", "to": "NGN", "buyRate": 1580.0, "sellRate": 1575.0, "midRate": 1577.5 },
{ "date": "2026-04-02T00:00:00.000Z", "from": "USD", "to": "NGN", "buyRate": 1582.0, "sellRate": 1577.0, "midRate": 1579.5 }
]/mcp/rate/statsGet rate statistics (high, low, avg, latest) over a period
Parameters
| Name | Required | Description |
|---|---|---|
from | required | Source currency code |
to | required | Target currency code |
days | optional | Period in days, 1–365 (default: 30) |
Example request
curl "https://agentic.bananacrystal.com/mcp/rate/stats?from=USD&to=NGN&days=30" \
-H "x-api-key: bc_live_your_rate_key_here"Example response
{
"from": "USD",
"to": "NGN",
"period": "30d",
"high": 1598.0,
"low": 1560.0,
"avg": 1581.4,
"latest": 1584.75,
"count": 30
}Sandbox Rate API
Replace /mcp/rate/ with /mcp/sandbox/rate/ and use your sandbox key to get fixed mock rates. Historical data is generated with ±2% variation for realistic testing. No real exchange data is used.
Sandbox Environment
Test your integration safely with pre-seeded balances and no real money.
What is the sandbox?
The sandbox is a fully isolated test environment that mirrors production exactly — same tools, same API, same response format. No real money moves. Sandbox API keys start with bc_test_ and connect to the Hedera testnet.
Pre-seeded balances
Every sandbox account starts with these balances. Use reset_sandbox_balance to restore them at any time.
| Token | Amount | Currency |
|---|---|---|
USDb | 10,000 | USD |
NGNb | 5,000,000 | NGN |
GHSb | 50,000 | GHS |
KESb | 1,000,000 | KES |
ZARb | 150,000 | ZAR |
Sandbox vs Live
| Feature | Sandbox | Live |
|---|---|---|
| Real money moves | No — simulated only | Yes |
| OTP verification | Returned in API response | Sent to your email |
| KYC required for fiat | No | Yes |
| Spending limits enforced | Yes (configurable) | Yes |
| API key prefix | bc_test_... | bc_live_... |
| Hedera settlement | Testnet | Mainnet |
| Pre-seeded balances | Yes (reset anytime) | No |
| Rate limits | Relaxed | Per-plan |
OTP in sandbox
In sandbox mode, the OTP code is returned directly in the request_transfer_otp API response — no email is sent. This makes automated testing easy without needing email access.
Sandbox configuration
{
"mcpServers": {
"bananacrystal": {
"command": "bananacrystal-mcp",
"env": {
"BANANACRYSTAL_API_KEY": "bc_test_your_sandbox_key_here",
"BANANACRYSTAL_API_URL": "https://agentic.bananacrystal.com/mcp/sandbox"
}
}
}
}Configuration
Connect BananaCrystal to your preferred AI tool or framework.
{
"mcpServers": {
"bananacrystal": {
"command": "bananacrystal-mcp",
"env": {
"BANANACRYSTAL_API_KEY": "your_api_key_here"
}
}
}
}Environment variables
BANANACRYSTAL_API_KEYrequiredYour MCP API key. Sandbox keys start with bc_test_, live keys with bc_live_.
Default: —
BANANACRYSTAL_API_URLoptionalOverride the MCP endpoint URL. Use the sandbox URL for testing.
Default: https://agentic.bananacrystal.com/mcp
DEBUGoptionalSet to true to enable verbose request/response logging.
Default: false
| Variable | Required | Default | Description |
|---|---|---|---|
BANANACRYSTAL_API_KEY | required | — | Your MCP API key. Sandbox keys start with bc_test_, live keys with bc_live_. |
BANANACRYSTAL_API_URL | optional | https://agentic.bananacrystal.com/mcp | Override the MCP endpoint URL. Use the sandbox URL for testing. |
DEBUG | optional | false | Set to true to enable verbose request/response logging. |
Framework Integrations
Ready-to-run examples for the most popular AI agent frameworks.
import asyncio
from langchain_mcp_adapters.client import MultiServerMCPClient
from langchain.agents import create_tool_calling_agent, AgentExecutor
from langchain_anthropic import ChatAnthropic
from langchain_core.prompts import ChatPromptTemplate
async def main():
# Connect to BananaCrystal MCP server
client = MultiServerMCPClient({
"bananacrystal": {
"url": "https://agentic.bananacrystal.com/mcp",
"transport": "streamable_http",
"headers": {
"Authorization": "Bearer your_api_key_here"
}
}
})
# Get all 40 payment tools
tools = await client.get_tools()
# Create an agent with payment capabilities
llm = ChatAnthropic(model="claude-3-5-sonnet-20241022")
prompt = ChatPromptTemplate.from_messages([
("system", "You are a payment agent. Use the BananaCrystal tools to help users manage their finances."),
("human", "{input}"),
("placeholder", "{agent_scratchpad}"),
])
agent = create_tool_calling_agent(llm, tools, prompt)
executor = AgentExecutor(agent=agent, tools=tools, verbose=True)
# Run the agent
result = await executor.ainvoke({
"input": "What is my current USDb balance?"
})
print(result["output"])
asyncio.run(main())Any MCP-compatible framework works. If your framework supports HTTP-based MCP servers, point it at https://agentic.bananacrystal.com/mcp with your API key as a Bearer token.
Security Architecture
Multiple layers of protection so your agent can only do what you explicitly authorize.
API Key Scopes
Each API key has explicit permission scopes. An agent can only perform operations within the scopes you grant — nothing more.
Spending Limits
Set hard per-transaction maximums and rolling 24-hour daily caps per API key. Enforced at the infrastructure level — no agent can exceed what you configure.
OTP Verification
Every token transfer requires a 6-digit OTP sent to your registered email. The agent cannot complete a transfer without you providing that code.
Rate Limiting
Per-key, per-minute rate caps prevent runaway agents from hammering the API. Limits scale with your plan tier.
Immutable Audit Trail
Every tool call is written to Hedera's consensus layer — timestamped, tamper-proof, and publicly verifiable on-chain. Full audit history available via get_transaction_history.
Agent Approval Flow
Agent-to-agent transactions can require human email approval before execution. Use update_my_agent_settings to configure require_human_approval.
API Key Scopes
Check balances, rates, history, limits — no funds move
Send tokens to other accounts (requires OTP)
Swap between currency stablecoins
Fiat deposits and withdrawals (requires KYC)
Create and manage prediction market offers and trades
Access currency exchange rates, historical data, conversions, and rate statistics
| Scope | What it allows |
|---|---|
| read_only | Check balances, rates, history, limits — no funds move |
| transfer | Send tokens to other accounts (requires OTP) |
| swap | Swap between currency stablecoins |
| fiat | Fiat deposits and withdrawals (requires KYC) |
| offers | Create and manage prediction market offers and trades |
| rate | Access currency exchange rates, historical data, conversions, and rate statistics |
Pricing
Read-only operations are always free. Pay only for transactions that move value.
Operation fees
Read-only operations
get_balances, get_exchange_rate, list_trades, …
Token transfers
transfer_tokens
Currency swaps
swap_currency
Fiat deposits
initiate_deposit
Fiat withdrawals
request_withdrawal
Prediction market
create_offer, engage_offer
| Operation | Tools | Fee |
|---|---|---|
| Read-only operations | get_balances, get_exchange_rate, list_trades, … | Free |
| Token transfers | transfer_tokens | 0.3% |
| Currency swaps | swap_currency | 0.5% |
| Fiat deposits | initiate_deposit | Varies by rail |
| Fiat withdrawals | request_withdrawal | Varies by rail |
| Prediction market | create_offer, engage_offer | Platform fee on settlement |
Plans
Free
All read-only tools are always free — no account needed to check rates or balances.
- All read-only tools free forever
- Sandbox environment included
- get_balances, get_exchange_rate, and 22 more
- Community support
- Hedera testnet settlement
Pay-per-use
Scale as you grow. Only pay for what you use.
- Unlimited API calls
- 0.3% on transfers
- 0.5% on swaps
- Fiat rails (varies by method)
- Email + priority support
- Hedera mainnet settlement
- Full audit trail
Enterprise
Volume discounts, SLAs, and dedicated infrastructure.
- Custom fee tiers
- Dedicated MCP endpoint
- SLA guarantees
- Custom spending limits
- Dedicated support
- On-premise option
FAQ
Common questions about BananaCrystal and the MCP server.
Ready to give your agent payment superpowers?
Create your API key and connect your agent to 40 payment tools in under 5 minutes. Read-only tools are always free.
Get API Key