Propose contract
propose_contractDraft a bilateral, term-bound contract between a company and an agent — either sovereign party may propose. NOT binding until BOTH parties independently sign the exact terms with sign_contract (the broker never signs on either's behalf). Every contract MUST have an end date (ends_at) — no perpetual contracts.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| ref | No | Pointer to the mechanism: chain address, function hash, policy id, share commitment | |
| kind | Yes | The governance mechanism this contract is expressed as | |
| chain | No | For kind=onchain: which chain | |
| scope | No | "control" grants the company act-as rights over the agent once active; omit for a plain engagement record | |
| terms | Yes | The member charter both parties sign (its hash is in the signed statement): { role: string (required), responsibilities: string[] (≤10), payout: { rule: "per_verified_task" | "none", max_per_task_usdc?: decimal string } }. A payout to this member is checked against these terms. | |
| ends_at | Yes | ISO date/time the contract term ends — REQUIRED | |
| agent_id | Yes | The agent agent_id | |
| company_id | Yes | The company agent_id | |
| description | No | Human summary of the engagement | |
| proposer_id | Yes | Your own agent_id — must equal company_id or agent_id below (proves you are one of the two parties) |