Skip to main content
Glama

market_quote

Read one marketplace REQUEST by id (GET /request/{id}; you must own it). Returns the request as the route actually declares it: id, wallet_id, agent_id, frontier, resource_type, unit_type, speed, privacy_mode, contract_escrow, units_needed, max_price_per_unit, priority, requirements, status, units_matched, expires_at, created_at, plus escrow_terms — a GENERIC prose block of the escrow rules, identical on every request. It does NOT carry this trade's own figures: fee_joules, escrow_expires_at and dispute_window_end are fields of the MATCH, so read them with market_match once a match exists; buyer_debit_joules appears only on an x402 price quote (a 402 body). Bearer required.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
request_idYes

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
idNo
speedNo
statusNo
agent_idNo
frontierNo
priorityNo
unit_typeNo
wallet_idNo
created_atNo
expires_atNo
escrow_termsNogeneric escrow prose; opaque by design
privacy_modeNo
requirementsNo
units_neededNo
resource_typeNo
units_matchedNo
contract_escrowNo
max_price_per_unitNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changed
    • changedOutput schema / description
      Previous value: -"market_quote — RAREEAI RequestOut as the route actually declares it.\n⚠ `escrow_terms` is left OPAQUE on purpose: it is a GENERIC prose block, and its own text points\nat this trade's figures as sibling fields. Those siblings (fee_joules, escrow_expires_at,\ndispute_window_end) are declared on MatchOut — the `market_match` payload — and are NOT on this\nroute's response model, so they are not declared here. See the filed finding; this model states\nwhat the route returns, not what the docstring promises."New value: +"market_quote — RAREEAI RequestOut as the route actually declares it. `escrow_terms` is left\nOPAQUE on purpose: a GENERIC prose block, identical on every request. This trade's own figures\n(fee_joules, escrow_expires_at, dispute_window_end) live on MatchOut — the `market_match` payload —\nand are not on this route, so they are not declared here (the tool docstring now says the same)."
  2. Changed1 schema field changed
    • changedOutput schema / (root)
      Previous value: -nullNew value: +{
      +  "additionalProperties": true,
      +  "description": "market_quote — RAREEAI RequestOut as the route actually declares it.\n⚠ `escrow_terms` is left OPAQUE on purpose: it is a GENERIC prose block, and its own text points\nat this trade's figures as sibling fields. Those siblings (fee_joules, escrow_expires_at,\ndispute_window_end) are declared on MatchOut — the `market_match` payload — and are NOT on this\nroute's response model, so they are not declared here. See the filed finding; this model states\nwhat the route returns, not what the docstring promises.",
      +  "properties": {
      +    "agent_id": {
      +      "anyOf": [
      +        {
      +          "type": "string"
      +        },
      +        {
      +          "type": "null"
      +        }
      +      ],
      +      "default": null,
      +      "title": "Agent Id"
      +    },
      +    "contract_escrow": {
      +      "anyOf": [
      +        {
      +          "type": "boolean"
      +        },
      +        {
      +          "type": "null"
      +        }
      +      ],
      +      "default": null,
      +      "title": "Contract Escrow"
      +    },
      +    "created_at": {
      +      "anyOf": [
      +        {
      +          "type": "string"
      +        },
      +        {
      +          "type": "null"
      +        }
      +      ],
      +      "default": null,
      +      "title": "Created At"
      +    },
      +    "escrow_terms": {
      +      "anyOf": [
      +        {
      +          "additionalProperties": true,
      +          "type": "object"
      +        },
      +        {
      +          "type": "null"
      +        }
      +      ],
      +      "default": null,
      +      "description": "generic escrow prose; opaque by design",
      +      "title": "Escrow Terms"
      +    },
      +    "expires_at": {
      +      "anyOf": [
      +        {
      +          "type": "string"
      +        },
      +        {
      +          "type": "null"
      +        }
      +      ],
      +      "default": null,
      +      "title": "Expires At"
      +    },
      +    "frontier": {
      +      "anyOf": [
      +        {
      +          "type": "string"
      +        },
      +        {
      +          "type": "null"
      +        }
      +      ],
      +      "default": null,
      +      "title": "Frontier"
      +    },
      +    "id": {
      +      "anyOf": [
      +        {
      +          "type": "string"
      +        },
      +        {
      +          "type": "null"
      +        }
      +      ],
      +      "default": null,
      +      "title": "Id"
      +    },
      +    "max_price_per_unit": {
      +      "anyOf": [
      +        {
      +          "type": "integer"
      +        },
      +        {
      +          "type": "null"
      +        }
      +      ],
      +      "default": null,
      +      "title": "Max Price Per Unit"
      +    },
      +    "priority": {
      +      "anyOf": [
      +        {
      +          "type": "string"
      +        },
      +        {
      +          "type": "null"
      +        }
      +      ],
      +      "default": null,
      +      "title": "Priority"
      +    },
      +    "privacy_mode": {
      +      "anyOf": [
      +        {
      +          "type": "string"
      +        },
      +        {
      +          "type": "null"
      +        }
      +      ],
      +      "default": null,
      +      "title": "Privacy Mode"
      +    },
      +    "requirements": {
      +      "anyOf": [
      +        {
      +          "additionalProperties": true,
      +          "type": "object"
      +        },
      +        {
      +          "type": "null"
      +        }
      +      ],
      +      "default": null,
      +      "title": "Requirements"
      +    },
      +    "resource_type": {
      +      "anyOf": [
      +        {
      +          "type": "string"
      +        },
      +        {
      +          "type": "null"
      +        }
      +      ],
      +      "default": null,
      +      "title": "Resource Type"
      +    },
      +    "speed": {
      +      "anyOf": [
      +        {
      +          "type": "string"
      +        },
      +        {
      +          "type": "null"
      +        }
      +      ],
      +      "default": null,
      +      "title": "Speed"
      +    },
      +    "status": {
      +      "anyOf": [
      +        {
      +          "type": "string"
      +        },
      +        {
      +          "type": "null"
      +        }
      +      ],
      +      "default": null,
      +      "title": "Status"
      +    },
      +    "unit_type": {
      +      "anyOf": [
      +        {
      +          "type": "string"
      +        },
      +        {
      +          "type": "null"
      +        }
      +      ],
      +      "default": null,
      +      "title": "Unit Type"
      +    },
      +    "units_matched": {
      +      "anyOf": [
      +        {
      +          "type": "integer"
      +        },
      +        {
      +          "type": "null"
      +        }
      +      ],
      +      "default": null,
      +      "title": "Units Matched"
      +    },
      +    "units_needed": {
      +      "anyOf": [
      +        {
      +          "type": "integer"
      +        },
      +        {
      +          "type": "null"
      +        }
      +      ],
      +      "default": null,
      +      "title": "Units Needed"
      +    },
      +    "wallet_id": {
      +      "anyOf": [
      +        {
      +          "type": "string"
      +        },
      +        {
      +          "type": "null"
      +        }
      +      ],
      +      "default": null,
      +      "title": "Wallet Id"
      +    }
      +  },
      +  "title": "RequestQuoteOut",
      +  "type": "object"
      +}
  3. First observed

TDQS

A4/5.0
Behavior4/5

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

Annotations are absent, so the description carries the full burden. It discloses that the route requires ownership (Bearer required), and clarifies that escrow_terms is a generic prose block, not specific to this trade. It also explains what fields are NOT included and where to find them, which is transparent about limitations.

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?

The description is detailed but front-loads the essential purpose, then adds necessary clarifications. Every sentence serves a purpose, distinguishing this tool from alternatives. Slightly verbose but still efficient given the complexity of the domain.

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?

Given the output schema is present, the description doesn't need to list all fields, but it does, which is helpful. It covers the key context: ownership, data availability, and where to get missing data. It lacks details on error cases or response format specifics beyond the schema, but it is sufficient for a single-parameter read tool.

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?

With schema description coverage at 0%, the description must compensate. The description doesn't explicitly elaborate on request_id beyond the schema, but it does explain the context of the request (ownership, route). Since there is only one parameter and it is self-explanatory, the description doesn't need much more, but it could have clarified the format (e.g., UUID), so a 4 is reasonable.

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

Purpose4/5

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

The description clearly states it reads a single marketplace REQUEST by id and lists the fields returned, distinguishing it from siblings like market_match and market_listings. It uses a specific verb (Read) and resource (marketplace REQUEST), and mentions the ownership requirement, which adds clarity.

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?

It provides clear context: use when you need the raw request data and own the request. It explicitly directs the agent away from using it for match-specific fields (like fee_joules, escrow_expires_at) and points to market_match instead, offering a clear alternative for those cases.

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