Skip to main content
Glama

make_offer

Destructive

Offer a task to a worker. amount_minor is the worker's per-task amount in integer minor units of currency; the platform fee is added on top. expires_in_seconds is the pending-offer lifetime in seconds. On success, the all-in total is held in escrow. Structured errors report budget, worker eligibility / ask-rate, wallet, or spend-cap failures.

Input Schema

NameRequiredDescriptionDefault
messageNoOptional note sent to the worker with the offer.
task_idYesThe task being offered, as returned by post_task.
currencyNoISO-4217 currency code. USD is the only currency supported today.USD
worker_idYesThe worker to offer it to, as returned by search_workers.
amount_minorYesWhat the worker is paid, integer minor units. Mundane's fee is added on top, so you are charged more than this.
idempotency_keyNoOptional key of your own choosing so a retry does not create a second offer or hold escrow twice.
expires_in_secondsNoHow long the worker has to accept before the offer lapses. Default is 24 hours.

Output Schema

NameRequiredDescriptionDefault
statusNo
offer_idNo
expires_atNo
escrow_hold_idNo
platform_fee_minorNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed8 schema fields changed
    • addedInput schema / properties / amount_minor / description
      Added value: +"What the worker is paid, integer minor units. Mundane's fee is added on top, so you are charged more than this."
    • addedInput schema / properties / currency / description
      Added value: +"ISO-4217 currency code. USD is the only currency supported today."
    • addedInput schema / properties / expires_in_seconds / description
      Added value: +"How long the worker has to accept before the offer lapses. Default is 24 hours."
    • addedInput schema / properties / idempotency_key / description
      Added value: +"Optional key of your own choosing so a retry does not create a second offer or hold escrow twice."
    • addedInput schema / properties / message / description
      Added value: +"Optional note sent to the worker with the offer."
    • addedInput schema / properties / task_id / description
      Added value: +"The task being offered, as returned by post_task."
    • addedInput schema / properties / worker_id / description
      Added value: +"The worker to offer it to, as returned by search_workers."
    • changedOutput schema / (root)
      Previous value: -nullNew value: +{
      +  "properties": {
      +    "escrow_hold_id": {
      +      "anyOf": [
      +        {
      +          "type": "string"
      +        },
      +        {
      +          "type": "null"
      +        }
      +      ],
      +      "default": null,
      +      "title": "Escrow Hold Id"
      +    },
      +    "expires_at": {
      +      "anyOf": [
      +        {
      +          "type": "string"
      +        },
      +        {
      +          "type": "null"
      +        }
      +      ],
      +      "default": null,
      +      "title": "Expires At"
      +    },
      +    "offer_id": {
      +      "anyOf": [
      +        {
      +          "type": "string"
      +        },
      +        {
      +          "type": "null"
      +        }
      +      ],
      +      "default": null,
      +      "title": "Offer Id"
      +    },
      +    "platform_fee_minor": {
      +      "anyOf": [
      +        {
      +          "type": "integer"
      +        },
      +        {
      +          "type": "null"
      +        }
      +      ],
      +      "default": null,
      +      "title": "Platform Fee Minor"
      +    },
      +    "status": {
      +      "anyOf": [
      +        {
      +          "type": "string"
      +        },
      +        {
      +          "type": "integer"
      +        },
      +        {
      +          "type": "null"
      +        }
      +      ],
      +      "default": null,
      +      "title": "Status"
      +    }
      +  },
      +  "title": "OfferOut",
      +  "type": "object"
      +}
  2. First observed

TDQS

A3.7/5.0
Behavior4/5

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

Annotations already declare destructiveHint=true, idempotentHint=false and openWorldHint=true, and the description goes beyond them by disclosing the escrow hold on success, that platform fees are added on top of the quoted amount, and the concrete failure classes surfaced as structured errors (budget, eligibility/ask-rate, wallet, spend-cap). It omits what happens to held funds if the offer lapses or is declined, which is the main remaining behavioral 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?

Four tight sentences with the core action front-loaded and the money semantics following immediately. Minor redundancy: the fee-on-top and expiry points duplicate schema descriptions rather than adding new information, so it is efficient but not perfectly economical.

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 an output schema present, return-value detail is unnecessary, and the description covers the key non-schema concerns: escrow, fee markup, and error taxonomy. It is nearly complete for a 7-parameter mutation, with only the post-expiry funds behavior and any authorization requirement left unstated.

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 description coverage is 100%, so the baseline is 3. The description restates amount_minor's fee-on-top semantics and expires_in_seconds' lifetime, both of which the schema already documents in similar words, so it adds little beyond the structured fields and leaves currency, message and idempotency_key to the schema.

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 opening clause 'Offer a task to a worker' names a specific verb (offer) and resource (a task, to a worker), and the escrow/fee details confirm this is a hiring/offer operation rather than a task-creation one like post_task. It stops short of explicitly contrasting itself with the nearest sibling (offer_chain_link, post_task), so an agent must infer the boundary from the resource nouns alone.

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

Usage Guidelines3/5

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

Usage is only implied: the description frames the tool as offering an existing task to a specific worker, which presupposes a task already exists and a worker has been identified, but it never states when to prefer this over post_task, offer_chain_link, or direct task creation. There are no explicit when-not conditions or alternatives named.

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.