Skip to main content
Glama

Prepare an EWP job-lifecycle step on Base or Robinhood Chain (non-custodial)

prepare_chain_step
Read-onlyIdempotent

Build the exact unsigned transaction for one step of a real ecological-work job's lifecycle — post, claim, unclaim, prove, approve, reject, cancel, or settle — on the PUBLIC Ecological Work Protocol contract, on Base or on Robinhood Chain. You sign it and broadcast it yourself, from your own wallet, paying your own gas in the chain's native ETH; this server never holds a key, never signs, and never pays. Any wallet, any local society, any amount of gas they are willing to spend: this is how a stranger's own AI runs the whole job loop on the public ledger with no house involved and no house money. Before returning a transaction this tool reads live chain state and refuses with a plain reason when the step would fail — the contract paused, the work in the wrong status, the wallet not allowed to take this action — and as a final check it eth_calls the exact transaction from your wallet address, so a doomed transaction is never handed out. Steps and their extra fields: post (workType, standard, priceUsd, location, expiresInDays) creates a new job — anyone can post; the on-chain WorkType bucket is derived from workType and the rich description lives in standard; price is stored on chain in cents; location is written on chain PUBLICLY and PERMANENTLY. claim / unclaim / cancel / approve / reject (workId) act on an existing job by id. proof (workId, proofHash) records that you finished the work — proofHash is the SHA-256 of your evidence, 64 lowercase hex characters, no 0x prefix: we take a hash, never a file (hash it yourself, or use the free anchor_proof tool). settle (workId, paymentTxHash, tokenContractAddress, tokenId, qualityScore) records that a payment ALREADY happened, on any rail, in any token, at any amount its two parties agreed — pass tokenContractAddress as "native" for a plain ETH payment; this call is a receipt, not a payment, and moves no money by itself. Call chain_work_status first if you are unsure of a job's current state. Cost and signer: free to prepare; the person's own wallet signs and pays its own gas, and the house never holds a key.

Input Schema

NameRequiredDescriptionDefault
stepYesThe lifecycle action to prepare.
chainYesWhich live EWP deployment: "base" (chainId 8453) or "robinhood" (Robinhood Chain, chainId 4663). Same contract bytecode on both.
walletYesYour OWN 0x… address — the wallet that will sign and pay gas for this transaction. Never send a private key anywhere.
workIdNoEvery step except post. The numeric id of the work on THIS chain (from find_work, chain_work_status, or your own post's receipt).
tokenIdNosettle only. An NFT/token id if the payment minted one; empty string otherwise.
locationNopost only. Where the work is. Written on chain PUBLICLY and PERMANENTLY — prefer a neighborhood or city over an exact street address.
priceUsdNopost only. A positive number of US dollars (e.g. 50 for $50). Stored on chain as cents.
standardNopost only. The rich, specific description written on chain (e.g. "drinking_water_safety", or a fuller sentence). Defaults to workType if omitted.
workTypeNopost only. Free text describing the work (e.g. "soil_sampling", "storm drain inspection") — bucketed into the contract's water/soil/building shelf.
proofHashNoproof only. The SHA-256 of your evidence: 64 lowercase hex characters, no 0x prefix.
qualityScoreNosettle only. Whole number, 0 to 100.
expiresInDaysNopost only. Whole number, 1 to 365: how many days the posting stays claimable.
paymentTxHashNosettle only. The transaction hash (or other reference) of a payment that already happened, on any rail.
tokenContractAddressNosettle only. The token paid with — a 0x… contract address, or the literal "native" for plain ETH. Defaults to "native".

Output Schema

NameRequiredDescriptionDefault
okNo
toolNo
fundedNo
payUsdNo
workIdNo
claimIdNo
claimableNo
next_callNo
proofRuleNo
fulfillableByNo
definitionOfDoneNo
needs_from_callerNo
notClaimableReasonNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. Added

TDQS

A4.2/5.0
Behavior5/5

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

Annotations already declare readOnly/idempotent/non-destructive, and the description is consistent with them while adding substantial context: it reads live chain state and refuses with a plain reason, it eth_calls the exact transaction from the wallet as a final simulation, it never holds a key or pays gas, and it discloses that location is written publicly and permanently and that price is stored in cents. Those are exactly the behavioral traits annotations cannot convey.

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

Conciseness3/5

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

The purpose and the no-custody guarantee are front-loaded, which is good, but the block is long and carries rhetorical filler ("this is how a stranger's own AI runs the whole job loop ... with no house involved and no house money") and repeats the no-key point twice ("never holds a key" and "the house never holds a key"). The step-to-field mapping is the genuinely valuable part and is buried mid-paragraph.

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 a 14-parameter, multi-step transaction builder this covers everything an agent needs: both chains, all eight steps, per-step required fields, the pre-flight refusal behavior, the signer/payer model, and the on-chain permanence warning. An output schema exists, so return-value explanation is correctly omitted.

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 by mapping which extra fields each step consumes (post: workType/standard/priceUsd/location/expiresInDays; proof: workId+proofHash; settle: paymentTxHash/tokenContractAddress/tokenId/qualityScore) and by explaining semantics such as the WorkType bucketing, the "native" sentinel, and that settle is a receipt rather than a payment.

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?

Specific verb and resource: "Build the exact unsigned transaction for one step of a real ecological-work job's lifecycle", with the eight steps enumerated and both chains named. An agent knows exactly what comes back (an unsigned tx, not a broadcast). It does not, however, distinguish itself from similarly named siblings such as prepare_post_work, prepare_proof, or prepare_claim, so the agent must infer which of those to use from outside the description.

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?

Gives a concrete prerequisite ("Call chain_work_status first if you are unsure of a job's current state") and states the cost model ("free to prepare; the person's own wallet signs and pays its own gas"). It explains when the tool will refuse (paused contract, wrong status, unauthorized wallet), which is useful context. It lacks explicit guidance on when to choose this over the prepare_proof / prepare_post_work siblings.

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