Skip to main content
Glama

bull_create_rfq

Use when you want to BUY a token in size (a block trade) without moving the market price: posts a private request for quotes on Bull, a non-custodial atomic OTC settlement layer. Returns an rfqId; sellers answer with sealed quotes only you can read. Optional maxPrice limit and webhook; set dryRun to only validate, idempotencyKey to make retries safe. Not for small market swaps (use a DEX) or paying for API calls (use x402). Signed: the first call returns a message to sign; call again with the same arguments plus timestamp and signature.

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": {
      "token": "<token>",
      "sizeUsd": "<sizeUsd>",
      "address": "<address>"
    },
    "name": "bull_create_rfq"
  }
}

Input Schema

NameRequiredDescriptionDefault
noteNoShort note to sellers (optional).
chainNoChain name. Default: Robinhood Chain.
tokenYesToken contract address you want to buy.
dryRunNotrue = only check the request, nothing is created. Optional.
symbolNoToken symbol (optional).
addressYesYour wallet address (the buyer or seller). Required.
sizeUsdYesSize in USD (minimum 5 during beta).
webhookNohttps URL that receives events: quote.received, quote.revised, deal.settled (optional).
maxPriceNoYour limit: the most you will pay in total, in ETH (optional). Quotes above it are refused.
signatureNoEIP-191 personal_sign of `message` from the previous response. Leave empty on the first call.
timestampNoFrom the previous bull_* response. Leave empty on the first call.
windowMinNoHow long the request stays open, in minutes: 15, 30, 60, 360 or 1440. Default 60.
idempotencyKeyNoUnique key (8-64 characters) so a retry never creates a duplicate. Optional.

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observed

TDQS

A4.8/5.0
Behavior5/5

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

With no annotations provided, the description carries the full burden and does so: it discloses the non-custodial atomic settlement model, that quotes are sealed and only readable by the requester, that dryRun creates nothing, and that idempotencyKey makes retries safe. The signed-call sequence ('first call returns a message to sign; call again with the same arguments plus timestamp and signature') is exactly the kind of behavior an agent would otherwise get wrong.

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

Conciseness5/5

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

Dense but front-loaded: purpose, then return value, then optional knobs, then exclusions, then the signing requirement. Every clause adds information the agent needs; no restatement of the tool name and no filler.

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?

For a 13-parameter mutation with no annotations and no output schema, the description covers the critical gaps: what is created, what is returned (rfqId), safety knobs, and the signing handshake. It does not state what the agent should call next to read incoming quotes or what happens when the window expires, leaving part of the lifecycle implied rather than stated.

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 already 100%, so the baseline is 3, but the description adds meaning the schema cannot: it frames maxPrice as a hard refusal limit, webhook as an event sink, dryRun as validation-only, and idempotencyKey as retry protection, and it explains how signature/timestamp are obtained across the two-call flow. It stops short of explaining the windowMin enum-free options or chain defaulting, which remain schema-only.

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 ('posts a private request for quotes'), names the venue ('Bull, a non-custodial atomic OTC settlement layer'), and describes the outcome ('Returns an rfqId; sellers answer with sealed quotes only you can read'). It also positions itself against non-siblings (DEX, x402) so an agent knows what class of action this is.

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?

Explicitly front-loads the triggering condition ('Use when you want to BUY a token in size ... without moving the market price') and gives two exclusions with named alternatives: small swaps -> DEX, paying for API calls -> x402. It additionally spells out the two-call signed workflow, which is the most important procedural condition for invoking it correctly.

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.

Resources