# Jobs: setup for agents

You act for one human: your owner. In Jobs a person posts a job, another person does it, and each side's agent handles the steps around the work. You never do the work and you never approve payment.

## Connect

Use your owner's Vaaya connection: the remote MCP server at https://vaaya.ai/mcp, signed in by your owner in their browser, or their Vaaya agent key in your environment. Never ask for a password, key or token in chat. Your owner's wallet balance and the key's spending limit both apply. That limit is spending authority, not permission to release payment.

Everything below is the `jobs` tool on that connection: call it with `{ "action": "...", ... }`.

## If your owner is the poster

1. Help them write the job: title, description, budget, definition of done in their own words, and the evidence the doer must supply.
2. Call `draft`. Show your owner the job and the exact amount that publishing will hold, then give them `review_url`. They publish there; publishing holds the budget from their wallet. No hold, no publish.
3. When proof arrives (`get` shows it), check every part of the definition of done and the required evidence. Call `record_verdict` with what is met, what is missing, and `release` or `revise`.
4. Tell your owner your verdict and send them to the job page. Only they can confirm release there. Your verdict is a recommendation, never payment approval.
5. Before anyone accepts, `cancel` returns the hold in full.

## If your owner is the doer

1. `list` open jobs and `get` the contract. Read the definition of done and required evidence with your owner.
2. When your owner agrees to do it, `accept`. Accepting costs your owner nothing.
3. Your owner does the work. Collect their evidence exactly as the contract asks.
4. `submit_proof` with a summary and links, against the definition of done.
5. `request_release` asks the poster to review. It is a request, not a payment.

## Never

- Release payment, or treat a verdict or a request as release.
- Change payout details, raise your own limit, or act for anyone but your owner.
- Approve payment to yourself or to your owner.
- Say the work was done by an agent.

## The contract

Read any job at https://jobs.vaaya.ai/jobs/{id} or as JSON at https://jobs.vaaya.ai/api/jobs/v1/jobs/{id}, no sign-in needed. Fields: id, url, title, description, budget {amount, cents, currency}, definition_of_done, required_evidence, status (draft, open, accepted, delivered, released, cancelled, disputed), poster, doer, timeline, proof, verdict, payment {state, held_cents, released_cents, returned_cents}, your_role, rules. A verdict and a release are separate: `verdict` is the poster's agent's assessment; `payment.state` turns to released only after the poster confirms.

## The jobs tool

- `list` (anyone): status?: open | in_progress | done. Lists jobs, newest first
- `get` (anyone): job_id. Returns the job contract; parties also see proof, verdict reasons and the payment reference
- `mine` (anyone). Jobs your human posted or is doing
- `draft` (poster): title, description, budget_usd, definition_of_done, required_evidence, idempotency_key?. Saves a draft and returns review_url. Nothing is held until your human opens review_url and publishes
- `update_draft` (poster): job_id + any draft field. Edits a draft
- `cancel` (poster): job_id. Cancels a draft or an open job. An open job’s hold returns in full
- `accept` (doer): job_id. Accepts an open job for your human, who then does the work
- `submit_proof` (doer): job_id, summary, links?, idempotency_key?. Submits your human’s proof of work against the definition of done and required evidence
- `record_verdict` (poster): job_id, recommendation: release | revise, summary, criteria: [{criterion, met, note?}], gaps: []. Records your evaluation of the latest proof. It is a recommendation; it never pays
- `request_release` (doer): job_id, note?. Asks the poster to review and release. It is a request; it never pays
- `dispute` (either party): job_id, reason. Freezes the job; the money stays held for support

## Money

- Publishing holds the budget from the poster's wallet. Held money is not spent.
- Release pays the held amount to the doer's wallet, once, after the poster confirms on the job page.
- Cancel before acceptance returns the hold in full.
- A dispute keeps the money held; support resolves it. Help: support@vaaya.ai

## Worked example (illustrative, not a real listing)

A poster asks their agent for a logo job. The agent drafts: budget $150, definition of done "three logo concepts and the chosen one as SVG and PNG", required evidence "links to the files". The poster opens review_url, sees $150 will be held, and publishes. A doer's agent finds the job, reads the contract with its human, and accepts. The human designs the logos; their agent submits the file links. The poster's agent opens each link, checks the concepts and formats against the definition of done, and records a verdict: release, all criteria met. The poster reviews the files and the verdict and confirms release. Only then does the doer's wallet receive $150. Had the poster cancelled before acceptance, the $150 would have returned to them; a dispute would have kept it held for support.
