Skip to main content
Glama

Bitquery: Crypto & Blockchain Data

Ada Sent From Address

ada_sent_from_address
Read-only

OUTGOING Cardano (ada, ADA, cardano) - the inputs this address SPENT: spend tx, input index, asset, amount, time, and the earlier output each input consumed (Funded_By_Tx / Funded_By_Output). Indexed by address (fast). NOT what this address received → use ada_address_received. One row per asset per input. currency="ADA" (default) returns the ADA rows; pass a token fingerprint (asset1...), policy id or Currency_Id, or currency="" for every asset. Amounts of different assets are never added together. ADA amounts are in ADA, not lovelace. A token amount is scaled by the token's registered decimals when they are known (Decimals > 0); most tokens have none registered, and their amounts are raw on-chain units. Never USD - for the ADA price use currency_price with currency_id "ada". Source = input for an ordinary spend. For a stake address (stake1...) the rows are reward withdrawals (withdrawal) and deposit refunds (stake_deregistration) instead. Page back through history with cursor: pass the Cursor value of the LAST row of a page to get the next one - unlike before_time it never skips rows that share a timestamp. Set sort='amount' with one asset selected to surface the largest spends. To see WHERE the funds went, take a Spend_Tx and call ada_tx_flow - its outputs are the recipients; outputs are not labeled as change, so an output back to this address or to another input address of the same transaction is change - or aggregate the recipients with ada_flow_edges. Data lags the chain by a few minutes.

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": {
      "address": "<address>"
    },
    "name": "ada_sent_from_address"
  }
}

Input Schema

NameRequiredDescriptionDefault
sortNo"recent" (default) = newest first; "amount" = largest first. Ranking by amount needs ONE asset selected (with currency empty it falls back to newest first) and returns a TOP-N, not the head of a page-walk: such a page carries no Cursor.recent
limitNoMax rows per page (ordered by sort; default newest first) (1-1000).
cursorNoExact paging cursor: pass the Cursor value of the LAST row of the previous page to get the next page. Prefer this over before_time, which skips rows sharing the last row's timestamp (one transaction can spend many assets in the same second). When set, before_time is ignored and rows come back newest-first whatever sort says. Empty = first page.
formatNoShape of the returned data. "rows" (the default) returns one item per row. "columnar" returns a single item, {"columns":[...],"rows":[[value,...],...]}, naming the columns once and listing each row's values in that order; it is more compact for large results and carries the same values.rows
addressYesCardano address: Shelley bech32 (addr1...), a stake / reward address (stake1u..., or stake17... for a script-controlled stake account), or a Byron base58 address (Ae2... / Ddz...). Byron addresses are case-sensitive; bech32 is matched in lowercase. A stake17... address also matches the records of the same account stored in its stake1u... spelling.
currencyNo"ADA" = native ADA only. A native token by its fingerprint (asset1..., the unique id - preferred), by its 56-hex policy id (every asset minted under that policy), by its numeric Currency_Id as returned by these tools, or by its name / ticker, matched ignoring case - which is NOT unique: anyone can mint a token called ADA, SNEK or USDM, so check Asset_Fingerprint before trusting a ticker match. Empty = every asset.ADA
after_timeNoOnly spends at/after this UTC time (e.g. "2026-07-01 00:00:00"). Empty = no lower bound.
before_timeNoOnly spends strictly before this UTC time - a coarse upper bound, NOT a paging mechanism (it drops every row sharing the last row's timestamp). Page with cursor instead. Ignored when cursor is set. Empty = no upper bound. Format: YYYY-MM-DD, YYYY-MM-DD HH:MM[:SS] or ISO-8601 like 2026-09-20T00:00:00Z (no fraction or offset).

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changed
    • addedInput schema / properties / format
      Added value: +{
      +  "default": "rows",
      +  "description": "Shape of the returned data. \"rows\" (the default) returns one item per row. \"columnar\" returns a single item, {\"columns\":[...],\"rows\":[[value,...],...]}, naming the columns once and listing each row's values in that order; it is more compact for large results and carries the same values.",
      +  "type": "string"
      +}
  2. First observed

TDQS

A4.4/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false, so safety is covered. The description adds valuable context: data lags the chain by a few minutes, stake-address rows become withdrawals/refunds, change is not labeled, and token amounts are scaled only when decimals are registered. These are genuine behavioral disclosures beyond annotations, though return format is only lightly described.

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?

Front-loaded with the core scope and the key exclusion, then organized into thematic paragraphs. It is dense and long, but nearly every sentence carries actionable routing or semantic information; only the closing change-detection aside is slightly tangential.

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

Completeness5/5

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

For an 8-parameter tool with no output schema, the description explains row granularity (one per asset per input), amount units, decimals behavior, paging semantics, and stake-address edge cases. An agent has everything needed to invoke it correctly.

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

Parameters4/5

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

Schema coverage is 100%, so baseline is 3, but the description adds interpretive meaning: currency='' returns all assets, ADA amounts are in ADA not lovelace, sort='amount' needs a single asset and yields a top-N without Cursor, and cursor never skips same-timestamp rows unlike before_time.

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: OUTGOING Cardano inputs this address SPENT, with the returned fields enumerated. It explicitly names the sibling it is not (ada_address_received) so the agent can distinguish it without opening either schema.

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

Usage Guidelines5/5

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

Routes the agent clearly: received-only queries go to ada_address_received, spend destinations go to ada_tx_flow or ada_flow_edges, stake addresses behave differently. Also gives explicit when-to-use for cursor vs before_time and sort='amount' with one asset.

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

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.