Skip to main content
Glama

Hands for Agents

Accept quote, get payment link

create_task
Idempotent

Accepts a quote and the terms of service (quote_id, access_token, terms_accepted=true, terms_version as stated in the quote) and creates the task. Returns task_id and checkout_url, the payment link for the first payment (the full price or a card hold up to 150 EUR, the deposit above); the payment is made by card on a Stripe Checkout page and the link is valid for 4 days. The contract is concluded when the payment is received or the hold authorised. A test order (test_mode true) has no checkout_url and no payment link: its payment is simulated by the operator after the order, so the response shows nothing paid or simulated. A repeated call for the same quote returns the same task.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
quote_idYesId of the quote, of the form q_...
access_tokenYesAccess token of the quote and its task, issued with the quote.
terms_versionYesVersion of the terms being accepted, currently 2026-09-29.
terms_acceptedYesAcceptance of https://handsforagents.com/terms.html by the operator.
allow_anonymised_exampleNoOptional. Consent to publish this task as an anonymised example (terms, section 10); true only when the client explicitly agreed. Default false.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed3 schema fields changed
    • changedInput schema / properties / access_token / description
      Previous value: -"Token returned by request_quote."New value: +"Access token of the quote and its task, issued with the quote."
    • changedInput schema / properties / allow_anonymised_example / description
      Previous value: -"Optional. Consent to publish this task as an anonymised example (terms, section 10). Only true if the client explicitly agreed. Default false."New value: +"Optional. Consent to publish this task as an anonymised example (terms, section 10); true only when the client explicitly agreed. Default false."
    • addedInput schema / properties / quote_id / description
      Added value: +"Id of the quote, of the form q_..."
  2. Changed1 schema field changed
    • changedInput schema / properties / terms_version / description
      Previous value: -"Version of the terms being accepted, currently 2026-09-28.3."New value: +"Version of the terms being accepted, currently 2026-09-29."
  3. Changed2 schema fields changed
    • changedInput schema / properties / allow_anonymised_example / description
      Previous value: -"Optional. Consent to publish this task as an anonymised example, under section 10 (Confidentiality) of the terms of service. Only set true if the client explicitly agreed to this. Overrides the value sent with request_quote. Default false; can be withdrawn by e-mail."New value: +"Optional. Consent to publish this task as an anonymised example (terms, section 10). Only true if the client explicitly agreed. Default false."
    • changedInput schema / properties / terms_version / description
      Previous value: -"Version of the terms being accepted, currently 2026-09-28.2."New value: +"Version of the terms being accepted, currently 2026-09-28.3."
  4. Changed1 schema field changed
    • changedInput schema / properties / terms_version / description
      Previous value: -"Version of the terms being accepted, currently 2026-09-28."New value: +"Version of the terms being accepted, currently 2026-09-28.2."
  5. Changed1 schema field changed
    • changedInput schema / properties / terms_version / description
      Previous value: -"Version of the terms being accepted, currently 2026-09-26.2."New value: +"Version of the terms being accepted, currently 2026-09-28."
  6. Changed1 schema field changed
    • changedInput schema / properties / allow_anonymised_example / description
      Previous value: -"Optional. Consent to publish this task as an anonymised example, under section 10 (Confidentiality) of the terms of service. Overrides the value sent with request_quote. Default false; can be withdrawn by e-mail."New value: +"Optional. Consent to publish this task as an anonymised example, under section 10 (Confidentiality) of the terms of service. Only set true if the client explicitly agreed to this. Overrides the value sent with request_quote. Default false; can be withdrawn by e-mail."
  7. Changed1 schema field changed
    • changedInput schema / properties / terms_version / description
      Previous value: -"Version of the terms being accepted, currently 2026-09-25."New value: +"Version of the terms being accepted, currently 2026-09-26.2."
  8. Changed1 schema field changed
    • changedInput schema / properties / terms_version / description
      Previous value: -"Version of the terms being accepted, currently 2026-09-17.3."New value: +"Version of the terms being accepted, currently 2026-09-25."
  9. Added
  10. Removed
  11. Added
  12. Removed
  13. Added
  14. Removed
  15. Added
  16. Removed
  17. Added

TDQS

A4.6/5.0
Behavior5/5

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

Annotations only carry the safety/idempotency profile; the description adds substantial operational context: the payment is a card charge or a hold up to 150 EUR on Stripe Checkout, the link expires in 4 days, the contract is concluded on payment/authorisation, and test_mode orders have no checkout_url with simulated payment. This is well beyond what the annotations declare.

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?

It is front-loaded with the action and the return values, and every sentence carries information (payment mechanics, test mode, idempotency). It is slightly dense, with nested parentheticals about the hold amount and deposit, but nothing is wasted.

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?

With no output schema, the description correctly explains what is returned (task_id, checkout_url) and how the response differs in test mode. Combined with the payment/contract lifecycle and idempotency notes, an agent has everything needed to invoke and interpret this 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?

Schema coverage is 100%, so the baseline is 3, but the description adds meaning beyond the schema: terms_version must be the version stated in the quote (not merely the current one listed in the schema), terms_accepted must be true as an acceptance act by the operator, and quote_id/access_token pair identifies the same quote and task. That is real semantic value on top of the structured fields.

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?

The description states a specific verb+resource pair ('Accepts a quote and the terms of service ... and creates the task'), plus the exact return values (task_id, checkout_url). It is clearly distinguishable from siblings like request_quote (which issues the quote) and get_status.

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 gives a clear pre-condition for use (a quote plus terms_version as stated in the quote must exist and be accepted) and a repeat-call rule ('A repeated call for the same quote returns the same task'). It does not explicitly name alternatives or exclusions (e.g., when to prefer get_status instead), so it falls short of a 5.

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