Skip to main content
Glama
AsharFinance

Ashar Exchange MCP Server

Official
by AsharFinance

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
PORTNoHTTP server port, used when the http transport is selected.3001
TRANSPORTNoAlias for ASHAR_EXCHANGE_TRANSPORT. Accepted values: stdio or http.stdio
ASHAR_EXCHANGE_BASE_URLNoAPI base URL.https://api.ashar.finance/v2
ASHAR_EXCHANGE_TRANSPORTNoTransport mode: stdio or http. Defaults to stdio. Can also be set using the TRANSPORT variable.stdio
ASHAR_EXCHANGE_TENANT_KEYYesTenant API key (ash_proxy_...) used in the X-Ashar-Tenant-Key header. Required for protected endpoints; admin endpoints work without it.

Instructions

Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.

This server publishes no instructions, or was last inspected before Glama recorded them.

Capabilities

Features and capabilities supported by this server

Protocol revision2025-11-25

CapabilityDetails
tools
{
  "listChanged": true
}
prompts
{
  "listChanged": true
}
resources
{
  "listChanged": true
}

Tools

Functions exposed to the LLM to take actions

NameDescription
ashar_create_payin_quoteA

Create a deposit (PIX -> USDC/USDT) quote for the tenant, including the Ashar platform fee markup.

Args:

  • payment_method (string): 'pix' or 'ted'

  • token (string): 'USDC' or 'USDT' (what the client receives)

  • request_amount (number, cents, >= 500 i.e. R$ 5.00): amount in BRL cents

  • wallet_id (string, optional): destination BlindPay wallet id

  • blockchain_wallet_id (string, optional): destination blockchain wallet id

  • idempotency_key (string, optional): to safely retry

Returns: The marked-up quote: quote_id, request_amount, estimated_receive, fx_rate, expires_at, and the platform_fee breakdown.

Use before ashar_execute_payin.

ashar_create_payout_quoteA

Create a withdrawal (USDC/USDT -> PIX) quote for the tenant, including the Ashar platform fee markup.

Args:

  • request_amount (number, cents, >= 500): amount in stablecoin cents

  • bank_account_id (string): destination PIX bank account id

  • token (string): stablecoin being sent ('USDC' or 'USDT')

  • network (string, optional, default 'polygon'): sending network

  • idempotency_key (string, optional)

Returns the marked-up quote: quote_id, request_amount, estimated_receive_brl, fx_rate, expires_at, and platform_fee.

Use before ashar_execute_payout.

ashar_get_fx_rateA

Consult a quick FX rate (with platform markup) without creating a quote.

Args:

  • from (string): source currency ('BRL', 'USDC', or 'USDT')

  • to (string): target currency ('BRL', 'USDC', or 'USDT')

  • request_amount (number): amount in minor units

  • direction (string, optional): 'payin' (BRL -> crypto) or 'payout' (crypto -> BRL)

  • currency_type (string, optional): 'sender' or 'receiver'

Returns base_rate (BlindPay) and client_rate (after markup) plus platform_fee.

ashar_create_transfer_quoteB

Create a crypto -> crypto (cross-chain) transfer quote for the tenant.

Args:

  • wallet_id (string): source BlindPay wallet

  • request_amount (number): amount in cents

  • sender_token (string): 'USDC' or 'USDT'

  • customer_wallet_address (string): destination address

  • customer_token (string): 'USDC' or 'USDT'

  • customer_network (string): destination network

  • amount_reference (string, optional): 'sender' or 'receiver'

  • cover_fees (boolean, optional, default false)

Returns quote_id, estimated_receive, fx_rate, expires_at, and platform_fee.

ashar_execute_payinA

Execute a PIX deposit using a previously created payin quote.

Args:

  • payin_quote_id (string): id from ashar_create_payin_quote

  • idempotency_key (string, optional): safely retry without double-charging

Returns the payin_id, status, and the PIX payload (pix_copiacola, pix_qrcode_base64, expires_at).

The client pays the generated PIX to complete the deposit.

ashar_list_payinsA

List deposit transactions for the tenant, newest first.

Args:

  • status (string, optional): filter by status (e.g. 'processing', 'completed', 'pending', 'failed')

  • limit (number, optional, default 50, max 1000)

  • offset (number, optional, default 0)

Returns a paginated list with total count.

ashar_get_payinA

Get details of a single deposit by its payin_id.

Args:

  • payin_id (string): the deposit id

Returns live status (queries BlindPay when possible) plus the fee record.

ashar_execute_payoutA

Execute a USDC/USDT -> PIX withdrawal using a previously created payout quote.

Args:

  • quote_id (string): id from ashar_create_payout_quote

  • sender_wallet_id (string): the sender wallet address from which crypto is debited

  • network (string, optional): settlement network — 'evm' (default), 'solana', or 'stellar'

  • signed_transaction (string, optional): pre-signed transaction, required for 'solana' and 'stellar'

  • idempotency_key (string, optional): safely retry without double-spending

Returns the payout_id and status.

ashar_list_payoutsB

List withdrawal transactions for the tenant, newest first.

Args:

  • status (string, optional): filter by status

  • limit (number, optional, default 50, max 1000)

  • offset (number, optional, default 0)

Returns a paginated list with total count.

ashar_get_payoutA

Get details of a single withdrawal by its payout_id.

Args:

  • payout_id (string): the withdrawal id

Returns live status (queries BlindPay when possible) plus the fee record.

ashar_execute_transferA

Transfer stablecoins from a BlindPay wallet to an external address (creates a quote and executes in one call).

Args:

  • wallet_id (string): source BlindPay wallet

  • request_amount (number, cents): amount

  • sender_token (string): 'USDC' or 'USDT'

  • destination_address (string): external destination address

  • destination_token (string): 'USDC' or 'USDT'

  • destination_network (string): one of polygon, ethereum, base, arbitrum, solana, stellar, tron

  • idempotency_key (string, optional)

Returns the transfer_id, status, tx_hash, and amounts.

ashar_list_transfersB

List crypto transfers for the tenant, newest first.

Args:

  • status (string, optional): filter by status

  • limit (number, optional, default 50, max 1000)

  • offset (number, optional, default 0)

Returns a paginated list with total count.

ashar_get_transferA

Get details of a single crypto transfer by its transfer_id.

Args:

  • transfer_id (string): the transfer id

Returns live status plus on-chain tx_hash when available.

ashar_list_walletsA

List the tenant's custodial wallets with their balances.

No arguments. Returns an array of wallets (id, name, network, address, token, balance).

ashar_get_wallet_balanceA

Get the balance of a single custodial wallet.

Args:

  • wallet_id (string): the wallet id

Returns available, total, pending, and token.

ashar_create_walletB

Create a new custodial wallet for the tenant.

Args:

  • network (string): blockchain network for the wallet

  • name (string): wallet label

  • external_id (string, optional): external reference

Returns the created wallet.

ashar_list_bank_accountsA

List the tenant's PIX/TED bank accounts.

No arguments. Returns an array of bank_accounts (id, bank_name, pix_key, status).

ashar_create_bank_accountB

Register a PIX/TED bank account for the tenant.

Args:

  • body (object): the bank account payload (e.g. pix_key, bank_name, holder name/document, account details) accepted by the Exchange API

Returns the created bank account.

ashar_delete_bank_accountB

Remove a PIX/TED bank account.

Args:

  • bank_account_id (string): the account id

Returns { deleted: true }.

ashar_get_daily_statsA

Get today's volume and platform fees for the tenant across payins and payouts.

No arguments. Returns count, volume_brl, and platform_fee_brl broken down by payin/payout plus the day total.

ashar_get_monthly_statsA

Get the current month's volume and platform fees for the tenant across payins and payouts.

No arguments. Returns count, volume_brl, and platform_fee_brl broken down by payin/payout plus the month total.

ashar_get_fee_ratesA

Get the current platform fee rates and limits applied to the tenant.

No arguments. Returns the tenant fees (payin/payout/transfer spreads and fixed fees), the end-user markup (user_markup), and daily/monthly volume limits in BRL.

ashar_list_customersA

List customers (KYC/KYB) on the tenant's instance.

Args (all optional): limit, offset, starting_after, ending_before, full_name, customer_name, status, customer_id, country.

Returns an array of customers.

ashar_create_customerB

Create a customer (individual or business) for KYC/KYB.

Args:

  • type (string): 'individual' or 'business'

  • kyc_type (string): KYC tier (e.g. 'light')

  • email (string): customer email

  • country (string): two-letter country code (e.g. 'BR')

  • tax_id (string, optional): taxpayer id (e.g. CPF/CNPJ)

  • first_name, last_name (string, optional): for individuals

  • additional fields (object, optional): pass-through payload

Returns the created customer.

ashar_get_customerB

Get a customer by id.

Args:

  • customer_id (string): the customer id

Returns the customer details.

ashar_update_customerB

Update a customer by id.

Args:

  • customer_id (string): the customer id

  • body (object): the fields to update

Returns the updated customer.

ashar_delete_customerB

Delete a customer by id.

Args:

  • customer_id (string): the customer id

Returns 204 No Content on success.

ashar_list_customer_bank_accountsB

List a customer's bank accounts.

Args:

  • customer_id (string): the customer id

Returns an array of bank_accounts.

ashar_create_customer_bank_accountB

Add a bank account to a customer.

Args:

  • customer_id (string): the customer id

  • body (object): the bank account payload

Returns the created bank account.

ashar_delete_customer_bank_accountB

Remove a customer's bank account.

Args:

  • customer_id (string): the customer id

  • bank_account_id (string): the bank account id

Returns 204 No Content on success.

ashar_list_customer_walletsB

List a customer's blockchain wallets.

Args:

  • customer_id (string): the customer id

Returns an array of blockchain_wallets.

ashar_create_customer_walletC

Add a blockchain wallet to a customer.

Args:

  • customer_id (string): the customer id

  • body (object): the blockchain wallet payload

Returns the created wallet.

ashar_delete_customer_walletB

Remove a customer's blockchain wallet.

Args:

  • customer_id (string): the customer id

  • wallet_id (string): the blockchain wallet id

Returns 204 No Content on success.

ashar_list_customer_virtual_accountsB

List a customer's virtual accounts.

Args:

  • customer_id (string): the customer id

Returns an array of virtual_accounts.

ashar_create_customer_virtual_accountC

Create a virtual account for a customer.

Args:

  • customer_id (string): the customer id

  • body (object): the virtual account payload

Returns the created virtual account.

ashar_list_customer_custodial_walletsB

List a customer's custodial (wallet) wallets.

Args:

  • customer_id (string): the customer id

Returns an array of curated wallets.

ashar_get_customer_custodial_walletB

Get a single custodial wallet by customer id and wallet id.

Args:

  • customer_id (string): the customer id

  • wallet_id (string): the custodial wallet id

Returns the curated wallet.

ashar_get_customer_custodial_wallet_balanceB

Get the balance of a customer's custodial wallet.

Args:

  • customer_id (string): the customer id

  • wallet_id (string): the custodial wallet id

Returns the sanitized balance (available/total/pending/token).

ashar_create_customer_custodial_walletC

Create a custodial (wallet) for a customer.

Args:

  • customer_id (string): the customer id

  • network (string): the wallet network

  • name (string): a display name for the wallet

  • external_id (string, optional): your external reference for this wallet

Returns the created wallet.

ashar_delete_customer_custodial_walletB

Remove a customer's custodial wallet.

Args:

  • customer_id (string): the customer id

  • wallet_id (string): the custodial wallet id

Returns 204 No Content on success.

ashar_list_customer_offramp_walletsA

List a customer's offramp wallets (crypto settlement wallets for a bank account).

Args:

  • customer_id (string): the customer id

  • bank_account_id (string): the bank account id

Returns an array of offramp_wallets.

ashar_get_customer_offramp_walletB

Get a single offramp wallet by id.

Args:

  • customer_id (string): the customer id

  • bank_account_id (string): the bank account id

  • offramp_wallet_id (string): the offramp wallet id

Returns the curated offramp wallet.

ashar_create_customer_offramp_walletC

Create an offramp wallet for a customer's bank account.

Args:

  • customer_id (string): the customer id

  • bank_account_id (string): the bank account id

  • network (string): the settlement network

  • external_id (string, optional): your external reference

Returns the created offramp wallet.

ashar_list_partner_feesA

List the tenant's partner fee schedules (spread/fixed fees applied on payins and payouts).

No arguments. Returns a sanitized list of partner_fees.

ashar_get_partner_feeB

Get a single partner fee schedule by id.

Args:

  • fee_id (string): the partner fee id

Returns the sanitized fee schedule.

ashar_create_partner_feeB

Create a partner fee schedule for the tenant.

Args:

  • name (string): fee schedule name

  • payout_percentage_fee (number, optional): percentage fee on payouts (e.g. 0.5 for 0.5%)

  • payout_flat_fee (number, optional): fixed fee on payouts

  • payin_percentage_fee (number, optional): percentage fee on payins

  • payin_flat_fee (number, optional): fixed fee on payins

  • virtual_account_set (string, optional): virtual account set this fee applies to

Returns the created partner fee.

ashar_delete_partner_feeA

Remove a partner fee schedule by id.

Args:

  • fee_id (string): the partner fee id

Returns 204 No Content on success.

ashar_upload_payoutB

Upload a file (e.g. payout supporting document) to the tenant's instance.

Args:

  • filename (string): the file name (e.g. "doc.pdf")

  • mime (string, optional): the MIME type (e.g. "application/pdf")

  • file_base64 (string): the file content Base64-encoded

The server stores the binary and returns the sanitized upload id/details.

ashar_provision_test_tenantA

Create a sandbox tenant with a fresh X-Ashar-Tenant-Key. This is an ADMIN operation (public endpoint on the API).

Args:

  • display_name (string): company or tester name

  • email (string): primary contact email

  • cc_email (string, optional): CC email

  • kyc_type (string, optional, default 'light')

  • country (string, optional, default 'BR')

  • customer_type (string, optional, default 'individual')

  • limit_daily_brl (number, optional): daily BRL volume limit in cents (default 1000000)

  • limit_monthly_brl (number, optional): monthly BRL volume limit in cents (default 30000000)

  • blindpay_instance_id / blindpay_api_key / blindpay_receiver_id / blindpay_base_url (optional): an isolated upstream credential for the tenant (the API key is encrypted at rest)

Returns the provisioned tenant, its minted api_key, and base_url.

ashar_list_test_tenantsA

List all provisioned sandbox tenants. ADMIN operation.

No arguments. Returns the list of sandbox_tenants with their API key prefixes.

ashar_get_tenant_credentialsA

List the (masked) upstream credentials metadata of a tenant. ADMIN operation. The upstream API key is never exposed.

Args:

  • tenant_id (string): the tenant id

Returns credential metadata (instance_id, api_key_prefix, receiver_id, is_active).

ashar_rotate_tenant_credentialsA

Create or rotate the upstream credential of a tenant. ADMIN operation.

Args:

  • tenant_id (string): the tenant id

  • blindpay_api_key (string, optional): new upstream API key (encrypted at rest). If omitted, only metadata is updated where possible.

  • blindpay_instance_id, blindpay_receiver_id, blindpay_base_url (string, optional): upstream metadata

  • label (string, optional, default 'production')

Returns the rotated credential metadata.

ashar_delete_tenant_credentialsA

Remove the upstream credentials of a tenant (falls back to the global credential). ADMIN operation.

Args:

  • tenant_id (string): the tenant id

Returns { status: 'deleted', count }.

ashar_get_user_markupA

Get the end-user markup (2nd spread layer on top of the Ashar margin) for a tenant. ADMIN operation.

This markup is Ashar-specific — the upstream only sees the Ashar partner, so the end-user spread is configured locally.

Args:

  • tenant_id (string): the tenant id

Returns user_markup with payin_spread_percent and payout_spread_percent.

ashar_set_user_markupA

Set the end-user markup (2nd spread layer on top of the Ashar margin) for a tenant. ADMIN operation.

This markup is Ashar-specific — the upstream only sees the Ashar partner, so the end-user spread is configured locally. Both rates apply multiplicatively on top of the Ashar spread when quoting.

Args:

  • tenant_id (string): the tenant id

  • payin_spread_percent (number, optional): end-user spread on payins (percent)

  • payout_spread_percent (number, optional): end-user spread on payouts (percent)

Returns the updated user_markup.

Prompts

Interactive templates invoked by user choice

NameDescription

No prompts

Resources

Contextual data attached and managed by the client

NameDescription

No resources

TDQS

B3.2/5.0

Scored across 55 tools

Disambiguation3/5

Most tools are distinguishable by resource and action, but the wallet surface is crowded with overlapping concepts such as custodial wallets, blockchain wallets, and offramp wallets at both tenant and customer levels. An agent can confuse list_wallets, list_customer_wallets, list_customer_custodial_wallets, and list_customer_offramp_wallets without careful reading. Quote vs execute vs FX-rate tools are better separated.

Naming Consistency5/5

All tools use the same ashar_ prefix and a consistent snake_case verb_noun pattern (list_, get_, create_, update_, delete_, execute_, etc.). Minor semantic quirks like upload_payout do not break the naming convention.

Tool Count1/5

With 55 tools, the surface is far beyond a well-scoped MCP tool set and exceeds the 50-tool threshold for extreme mismatch. While the API domain is broad, many operations could be consolidated or scoped into narrower servers.

Completeness4/5

The server covers core exchange workflows well: customer CRUD, bank accounts, wallets, payins and payouts with quote/execute lifecycles, transfers, fees, stats, FX, and admin credential management. Some lifecycle gaps remain, such as missing delete/get operations for virtual accounts and offramp wallet deletion, but core operations are largely covered.

Maintenance

ActivitySlowing
ResponsivenessNo issues