Skip to main content
Glama
Stables MCP Server

Stables MCP Server

Official

Create quote

create_quote
Destructive

Get a short-lived currency exchange quote with rate, fees, and recipient amount before a transfer; use preview mode to price without committing.

Instructions

Get a quote for a currency exchange: the rate, the fees, and what the customer receives. Quotes are short-lived, so create one immediately before the transfer. Off-ramp converts a stablecoin to fiat (source network required, destination country required); on-ramp converts fiat to a stablecoin (destination address required). Set preview to price without committing.

Tool call template

Replace each placeholder with a value matching the input schema. Only required parameters are included; add optional parameters as needed.

{
  "id": 1,
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "arguments": {
      "sourceCurrency": "<sourceCurrency>",
      "sourceAmount": "<sourceAmount>",
      "destinationCurrency": "<destinationCurrency>"
    },
    "name": "create_quote"
  }
}

Input Schema

NameRequiredDescriptionDefault
previewNoPrice the quote without persisting it, to show an estimate
metadataNoOptional metadata
sourceAmountYesAmount to convert, in major units (e.g. '125.75')
sourceNetworkNoBlockchain network of the source. Required for off-ramp, omitted for on-ramp
sourceCurrencyYesSource currency: a stablecoin for off-ramp (e.g. 'USDT'), fiat for on-ramp
destinationAddressNoDestination wallet address. Required for on-ramp
destinationCountryNoDestination country, ISO 2-letter. Required for off-ramp
destinationNetworkNoOff-ramp: payment network, 'swift' or 'bank'. On-ramp: blockchain network. Replaces the old paymentMethodType
destinationCurrencyYesDestination currency: fiat for off-ramp (e.g. 'EUR'), a stablecoin for on-ramp

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed2 schema fields changedv2.6.11
    • removedInput schema / additionalProperties
      Removed value: -false
    • addedInput schema / properties / metadata / propertyNames
      Added value: +{
      +  "type": "string"
      +}
  2. Changed17 schema fields changedv2.4.0
    • removedInput schema / properties / customerId
      Removed value: -{
      -  "description": "The customer ID to associate this quote with. Required if the quote will be used to create a transfer.",
      -  "type": "string"
      -}
    • addedInput schema / properties / destinationAddress
      Added value: +{
      +  "description": "Destination wallet address. Required for on-ramp",
      +  "type": "string"
      +}
    • addedInput schema / properties / destinationCountry
      Added value: +{
      +  "description": "Destination country, ISO 2-letter. Required for off-ramp",
      +  "type": "string"
      +}
    • addedInput schema / properties / destinationCurrency
      Added value: +{
      +  "description": "Destination currency: fiat for off-ramp (e.g. 'EUR'), a stablecoin for on-ramp",
      +  "type": "string"
      +}
    • addedInput schema / properties / destinationNetwork
      Added value: +{
      +  "description": "Off-ramp: payment network, 'swift' or 'bank'. On-ramp: blockchain network. Replaces the old paymentMethodType",
      +  "type": "string"
      +}
    • removedInput schema / properties / fromAmount
      Removed value: -{
      -  "description": "Amount to convert (e.g., '125.75')",
      -  "type": "string"
      -}
    • removedInput schema / properties / fromCurrency
      Removed value: -{
      -  "description": "Source cryptocurrency (USDC or USDT)",
      -  "enum": [
      -    "USDC",
      -    "USDT"
      -  ],
      -  "type": "string"
      -}
    • removedInput schema / properties / fromNetwork
      Removed value: -{
      -  "description": "Blockchain network for the source crypto",
      -  "enum": [
      -    "ethereum",
      -    "polygon"
      -  ],
      -  "type": "string"
      -}
    • addedInput schema / properties / metadata
      Added value: +{
      +  "additionalProperties": {
      +    "type": "string"
      +  },
      +  "description": "Optional metadata",
      +  "type": "object"
      +}
    • removedInput schema / properties / paymentMethodType
      Removed value: -{
      -  "description": "Payment method for fiat payouts - 'SWIFT' for international, 'LOCAL' for domestic rails",
      -  "enum": [
      -    "SWIFT",
      -    "LOCAL"
      -  ],
      -  "type": "string"
      -}
    • addedInput schema / properties / preview
      Added value: +{
      +  "description": "Price the quote without persisting it, to show an estimate",
      +  "type": "boolean"
      +}
    • addedInput schema / properties / sourceAmount
      Added value: +{
      +  "description": "Amount to convert, in major units (e.g. '125.75')",
      +  "type": "string"
      +}
    • addedInput schema / properties / sourceCurrency
      Added value: +{
      +  "description": "Source currency: a stablecoin for off-ramp (e.g. 'USDT'), fiat for on-ramp",
      +  "type": "string"
      +}
    • addedInput schema / properties / sourceNetwork
      Added value: +{
      +  "description": "Blockchain network of the source. Required for off-ramp, omitted for on-ramp",
      +  "enum": [
      +    "arbitrum",
      +    "avalanche",
      +    "base",
      +    "ethereum",
      +    "optimism",
      +    "polygon",
      +    "solana",
      +    "tron"
      +  ],
      +  "type": "string"
      +}
    • removedInput schema / properties / toCountry
      Removed value: -{
      -  "description": "Destination country code (e.g., 'GR', 'US', 'GB')",
      -  "type": "string"
      -}
    • removedInput schema / properties / toCurrency
      Removed value: -{
      -  "description": "Destination currency code (e.g., 'EUR', 'USD', 'GBP')",
      -  "type": "string"
      -}
    • changedInput schema / required
      Previous value: -[
      -  "fromCurrency",
      -  "fromAmount",
      -  "fromNetwork",
      -  "toCurrency",
      -  "toCountry",
      -  "paymentMethodType"
      -]New value: +[
      +  "sourceCurrency",
      +  "sourceAmount",
      +  "destinationCurrency"
      +]
  3. First observedv1.4.0

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare non-read-only, destructive, and non-idempotent behavior, so the safety bar is lower. The description earns credit for adding context the annotations cannot: quotes are short-lived and must be created just before the transfer, and preview prices without persisting. It does not explain why creating a quote is flagged destructive, which is a residual gap.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three dense sentences, front-loaded with the outcome, then timing, then mode rules, with no filler. Slight weakness: the leading verb 'Get' is a touch misleading for a tool whose annotation says it persists and is destructive, though the preview clause later clarifies persistence.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With 9 parameters and no output schema, the description usefully previews what the response gives back (rate, fees, received amount) and covers the direction-dependent parameter rules and the preview escape hatch. It omits error conditions or how quickly quotes expire, which an agent planning retries would want.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and the per-parameter descriptions already state that sourceNetwork and destinationCountry are required for off-ramp and destinationAddress for on-ramp. The description restates those directional rules rather than adding syntax, formats, or edge cases beyond what the schema documents, so baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Get a quote for a currency exchange') and immediately names what the response contains: rate, fees, and what the customer receives. It also splits the domain into off-ramp vs on-ramp, which is the key distinguishing concept an agent needs to pick the right parameters.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives explicit timing guidance ('create one immediately before the transfer') and mode-selection guidance for off-ramp vs on-ramp and for preview vs committed pricing. It never names get_quote as the alternative for retrieving an existing quote, so the routing to that sibling is left to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.