---
canonical_url: "https://buildwithwave.com/docs/developers/tool-reference"
title: "Tool reference"
description: "What a Wave key can do, tool by tool: lookups, jobs and people, photos and documents, notes, estimates, drying logs, and downloads."
group: "developers"
lane: "reference"
status: "published"
publishedAt: 2026-10-03
updatedAt: 2026-10-09
sidebarOrder: 80
tags: ["developer", "reference", "tools", "mcp"]
relatedSlugs:
  - "developers/what-you-can-ask-for"
  - "developers/errors-and-limits"
  - "developers/api-examples"
  - "developers/for-assistants"
sidebarLabel: "Tool reference"
---

{/* Generated by scripts/generate-developer-reference.mjs from contracts/api-v1/tool-registry.yaml. Edit the script, then run npm run docs:reference. */}

Each tool below is listed once, by the name your assistant sees over MCP, with the HTTP request it matches on `/api/v1`. A word such as job_id stands in for the record you picked. A tool marked HTTP only is for scripts.

Changes save when you ask, and they show in Wave under your name. Lookups are included with the key. Creating an estimate uses one estimate credit, the same as in Wave.

Wave serves the live list through [get_guide](#get_guide), with recipes for common asks.

## Look up

### `get_context`

Shows who the key works for, the company, its timezone, whether Slack is connected, whether the key is Read or Write, and the company's credits.

- Works with: Read or Write key
- Credit: Included.
- HTTP: `GET /api/v1/context`

### `get_guide`

Returns Wave's live guide for assistants: how Wave works, every tool, and ready-made recipes for common asks. Have your assistant read it first.

- Works with: Read or Write key
- Credit: Included.
- HTTP: `GET /api/v1/guide`

### `find_jobs`

Finds open jobs by customer name, street address, title, claim number, carrier, adjuster, or the customer's phone. It also lists the jobs in one status, the jobs still drying, the jobs with or without photos, or the jobs created in a date range. A job number such as #16 opens that job directly.

- Works with: Read or Write key
- Credit: Included.
- HTTP: `GET /api/v1/jobs`

### `get_job`

Opens one job by its id or its number: status, people, claim, carrier, adjuster, referral, the newest notes, how many photos it has, and each estimate with its label and total.

- Works with: Read or Write key
- Credit: Included.
- HTTP: `GET /api/v1/jobs/job_id`

### `list_changes`

Lists what changed across the company's jobs since your assistant last looked: notes, status moves, assignments, new files, schedules, and estimate activity. Changes made through a key are marked.

- Works with: Read or Write key
- Credit: Included.
- HTTP: `GET /api/v1/changes`

### `get_job_activity`

Shows what has happened on a job, newest first, with who did it. Narrow it to notes, changes, or one teammate.

- Works with: Read or Write key
- Credit: Included.
- HTTP: `GET /api/v1/jobs/job_id/activity`

### `lookup_customer`

Finds people by name, phone, or email, with their phone, email, address, roles, and the jobs they are on. Set a role to find an adjuster.

- Works with: Read or Write key
- Credit: Included.
- HTTP: `GET /api/v1/customers`

### `list_job_statuses`

Lists the company's statuses in board order, with how many open jobs are in each.

- Works with: Read or Write key
- Credit: Included.
- HTTP: `GET /api/v1/job-statuses`

### `list_team`

Lists the teammates a job can be assigned to, with each person's name and role.

- Works with: Read or Write key
- Credit: Included.
- HTTP: `GET /api/v1/team`

### `list_referral_sources`

Lists the referral sources the company tracks, so a job gets tagged with the right one.

- Works with: Read or Write key
- Credit: Included.
- HTTP: `GET /api/v1/referral-sources`

### `search_price_list`

Searches Wave's catalog by words or by code, and returns the matching items.

- Works with: Read or Write key
- Credit: Included.
- HTTP: `GET /api/v1/price-list`

### `get_price_list_item`

Returns the details for catalog codes you already have, with near matches for any code Wave does not have.

- Works with: Read or Write key
- Credit: Included.
- HTTP: `GET /api/v1/price-list/items`

### `search_standards`

Searches the industry standards Wave holds and returns short excerpts with their sources, so your assistant answers in its own words and cites the standard.

- Works with: Read or Write key
- Credit: Included.
- HTTP: `GET /api/v1/standards/search`

### `get_estimate`

Returns one estimate with its rooms, room totals, lines, and estimate totals, the same numbers you see in Wave. Ask for room totals only, or for one room.

- Works with: Read or Write key
- Credit: Included.
- HTTP: `GET /api/v1/estimates/estimate_id`

### `get_drying_log`

Returns the drying log on a job: each area, each day, and each reading.

- Works with: Read or Write key
- Credit: Included.
- HTTP: `GET /api/v1/jobs/job_id/drying-log`

## Jobs and people

### `create_job`

Creates a job and fills it in with one request: the customer, the loss address, phone and email, carrier, claim and policy numbers, referral source, and who it is assigned to.

- Works with: Write key
- Credit: Included.
- HTTP: `POST /api/v1/jobs`

### `update_job_overview`

Updates the job's facts: title, loss type, date and cause of loss, water category, address, referral source, claim number, carrier, policy number, and adjuster. Send only what changed.

- Works with: Write key
- Credit: Included.
- HTTP: `PATCH /api/v1/jobs/job_id/overview`

### `add_contact`

Adds a person to a job, or links someone already in Wave, with the phone or email you gave. A name already on the job updates that person.

- Works with: Write key
- Credit: Included.
- HTTP: `POST /api/v1/jobs/job_id/contacts`

### `update_contact`

Changes the name, phone, or email of a person on the job.

- Works with: Write key
- Credit: Included.
- HTTP: `PATCH /api/v1/jobs/job_id/contacts/contact_id`

### `assign_job`

Puts a teammate on the job, by name.

- Works with: Write key
- Credit: Included.
- HTTP: `POST /api/v1/jobs/job_id/assignees`

### `unassign_job`

Takes a teammate off the job.

- Works with: Write key
- Credit: Included.
- HTTP: `DELETE /api/v1/jobs/job_id/assignees/person`

### `cancel_job`

Cancels a job, with the reason if you give one.

- Works with: Write key
- Credit: Included.
- HTTP: `POST /api/v1/jobs/job_id/cancel`

### `reopen_job`

Reopens a cancelled job so the work can go on.

- Works with: Write key
- Credit: Included.
- HTTP: `POST /api/v1/jobs/job_id/reopen`

### `move_job_status`

Moves a job onto one of the company's statuses.

- Works with: Write key
- Credit: Included.
- HTTP: `POST /api/v1/jobs/job_id/status`

## Photos, videos, and documents

### `list_job_photos`

Lists a job's photos, newest first, with each photo's room, caption, uploader, and when it was taken, plus how many photos each room holds.

- Works with: Read or Write key
- Credit: Included.
- HTTP: `GET /api/v1/jobs/job_id/photos`

### `list_job_videos`

Lists a job's videos, newest first, with each video's room, caption, length, and a link to play it.

- Works with: Read or Write key
- Credit: Included.
- HTTP: `GET /api/v1/jobs/job_id/videos`

### `view_photos`

Shows photos as pictures your assistant can see, each with its room, caption, and a link you can open. For a video, it shows a still frame.

- Works with: Read or Write key
- Credit: Included.
- HTTP: `GET /api/v1/photos`

### `move_photos`

Files a job's photos into rooms, or back into Unsorted, the way you sort them on the Files tab. A room the job does not have yet is added.

- Works with: Write key
- Credit: Included.
- HTTP: `POST /api/v1/jobs/job_id/photos/rooms`

### `update_photos`

Adds, changes, or clears a caption or a name on a job's photos.

- Works with: Write key
- Credit: Included.
- HTTP: `PATCH /api/v1/jobs/job_id/photos`

### `get_photo_upload_link`

Returns a link where you pick photos on your phone or computer, and Wave adds them to the job, into a room when you name one.

- Works with: Write key
- Credit: Included.
- HTTP: `GET /api/v1/jobs/job_id/photos/upload-link`

### `upload_job_photos`

Adds JPEG, PNG, or HEIC photos to a job from a script, filed like a drop on the Files tab, with one room for all of them or a room, caption, and name for each. Over MCP, your assistant uses [get_photo_upload_link](#get_photo_upload_link) instead.

- Works with: Write key
- Credit: Included.
- HTTP only: `POST /api/v1/jobs/job_id/photos`

### `list_job_documents`

Lists the PDFs and other files on a job's Files tab, newest first, with each file's name, kind, size, uploader, and room.

- Works with: Read or Write key
- Credit: Included.
- HTTP: `GET /api/v1/jobs/job_id/documents`

### `read_document`

Reads a PDF from the job's Files tab page by page, scanned pages included, so your assistant answers from the document's own words.

- Works with: Read or Write key
- Credit: Included.
- HTTP: `GET /api/v1/documents/document_id`

## Notes

### `correct_note`

Corrects a job note with your new words. The earlier text stays in the note's history.

- Works with: Write key
- Credit: Included.
- HTTP: `PATCH /api/v1/jobs/job_id/notes/note_id`

### `retract_note`

Removes a job note you wrote, along with its corrections.

- Works with: Write key
- Credit: Included.
- HTTP: `DELETE /api/v1/jobs/job_id/notes/note_id`

### `add_note`

Adds a note to the job as you. It also posts to Slack when an admin has turned on **New note** in Slack notifications, a switch that starts off.

- Works with: Write key
- Credit: Included.
- HTTP: `POST /api/v1/jobs/job_id/notes`

## Estimates

### `create_estimate`

Creates an estimate on a job, empty or with rooms and lines. Wave prices catalog lines with your regional pricing, and your own lines carry the price you set.

- Works with: Write key
- Credit: One estimate credit, the same as in Wave.
- HTTP: `POST /api/v1/jobs/job_id/estimates`

### `add_rooms`

Adds rooms to an estimate from the measurements and day counts you stated. A room name already on the estimate updates that room.

- Works with: Write key
- Credit: Included.
- HTTP: `POST /api/v1/estimates/estimate_id/rooms`

### `add_line_items`

Adds many lines at once: items from Wave's catalog, priced by Wave, or your own lines at the price you set. Any line that was not added comes back with the reason.

- Works with: Write key
- Credit: Included.
- HTTP: `POST /api/v1/estimates/estimate_id/line-items`

### `update_line_item`

Changes a line's quantity or its note. Wave keeps the price.

- Works with: Write key
- Credit: Included.
- HTTP: `PATCH /api/v1/estimates/estimate_id/line-items/line_id`

### `remove_line_item`

Removes one line from an estimate.

- Works with: Write key
- Credit: Included.
- HTTP: `DELETE /api/v1/estimates/estimate_id/line-items/line_id`

### `update_room`

Updates a room's name, measurements, demo days, or drying days.

- Works with: Write key
- Credit: Included.
- HTTP: `PATCH /api/v1/estimates/estimate_id/rooms/room_id`

## Drying logs

### `create_drying_log`

Starts a drying log and plans the rooms you send. On a job with no estimate yet, Wave sets up the estimate and its rooms too.

- Works with: Write key
- Credit: One estimate credit, only when it starts a log on a job with no estimate yet.
- HTTP: `POST /api/v1/jobs/job_id/drying-log`

### `update_drying_settings`

Changes the drying start date, or how many days the job or one area runs.

- Works with: Write key
- Credit: Included.
- HTTP: `PATCH /api/v1/jobs/job_id/drying-log/settings`

### `add_drying_readings`

Records readings for an area on a day, or many rows at once. Wave starts the log, adds the area, or extends the plan when it needs to.

- Works with: Write key
- Credit: One estimate credit, only when it starts a log on a job with no estimate yet.
- HTTP: `POST /api/v1/jobs/job_id/drying-log/readings`

### `add_drying_note`

Adds a note on the drying log as you, and starts the log when the job has none yet.

- Works with: Write key
- Credit: One estimate credit, only when it starts a log on a job with no estimate yet.
- HTTP: `POST /api/v1/jobs/job_id/drying-log/notes`

### `skip_drying_day`

Marks a day as not monitored, in one area or every area, by day number or date.

- Works with: Write key
- Credit: Included.
- HTTP: `POST /api/v1/jobs/job_id/drying-log/skip-day`

## Downloads

### `export_pdf`

Returns a link to download a PDF of the job, the same one the Export dialog builds: the estimate or invoice, cover page, photos report, drying log, and attached documents, alone or as one packet. Opening the link changes nothing. Downloading a PDF that holds the estimate marks the estimate final in Wave.

- Works with: Read or Write key
- Credit: Included.
- HTTP: `GET /api/v1/jobs/job_id/export-pdf`

### `export_job_photos`

Returns a link to a ZIP of a job's photos, one room's photos, or just the ones you pick, named by room the way the Files tab names them.

- Works with: Read or Write key
- Credit: Included.
- HTTP: `GET /api/v1/jobs/job_id/photos/export`

## Undo

### `undo_my_last_action`

Takes back the last change this key made, when nothing else has changed that record since.

- Works with: Write key
- Credit: Included.
- HTTP: `POST /api/v1/undo`

## Related

- [What you can ask for](/docs/developers/what-you-can-ask-for): the same work, in plain requests
- [Errors and retries](/docs/developers/errors-and-limits): what to do when a request needs a change
- [API examples](/docs/developers/api-examples): the same requests in curl
- [For assistants](/docs/developers/for-assistants): where an assistant reads first
