Field Service Business Platform by Doing Work

work.doingwork由 doingwork.work 發布官方發布者v1.0.1更新於 Nov 3, 2026

無頭現場服務軟體。你的AI代理負責執行工單、排程、報價、發票和付款。

AI 翻譯由 AI 模型根據下方的原文描述翻譯,可能有誤。

原文描述

Headless field service software. Your AI agent runs jobs, schedules, quotes, invoices and payments.

發布方自己的服務:Home Service Quotes by Doing Work

已驗證Streamable HTTP可網頁執行商業與電商

概覽

Field Service Business Platform by Doing Work 的託管 MCP 服務(doingwork.work),由 doingwork.work 發布;無需登入;Streamable HTTP;200 個工具。

暫無 AI 概覽:以下資訊來自註冊中心條目和服務本身。

發布者
doingwork.work
端點
doingwork.work
最近檢查

安裝

在 SourceWeft 中

  1. 開啟 儀表板中的 Field Service Business Platform by Doing Work,將其新增到工作區。
  2. 為需要使用其工具的對話啟用該服務。

Web executable,透過 Streamable HTTP。 遠端服務在工作區中設定後即可從網頁執行環境執行。

交給代理程式安裝

把這段提示詞貼上到 Claude Code、Codex、Cursor 等代理程式,或 SourceWeft 對話中。代理程式會讀取該伺服器的安裝指南,先向你展示發布者、端點和登入方式,經你同意後再把它新增到你的客戶端。金鑰不會寫進任何命令。

閱讀 https://sourceweft.com/mcp/work.doingwork%2Fshop/install.md,並按其中說明把這個 MCP 伺服器接入我的客戶端。修改任何設定之前,先告訴我它的發布者、端點和登入方式,等我確認。不要把 API 金鑰寫進命令或我會提交的檔案;問我金鑰應從哪裡取得。

檢視代理程式所依據的安裝指南

其他 MCP 客戶端

把它新增到你客戶端的 mcpServers 設定中。

{
  "mcpServers": {
    "field-service-business-platform-by-doing": {
      "type": "http",
      "url": "https://doingwork.work/mcp"
    }
  }
}

工具

200

auth_oauthRegister

Register an OAuth client (RFC 7591 dynamic registration). Public clients only: PKCE, no secret. Redirects must be https, or http on loopback.

輸入參數scopetos_uricontactslogo_uriclient_uripolicy_uriclient_namegrant_typessoftware_idredirect_uris必填response_typessoftware_version另有 1 個

auth_oauthAuthorize

A signed-in person approves an agent client. Returns the redirect with a one-time code (PKCE S256). Needs a browser session, not an agent token. `resource` (RFC 8707) binds the token to this server's MCP endpoint.

輸入參數scopestateshop_idresourceclient_id必填redirect_uri必填response_typecode_challenge必填code_challenge_method必填

auth_oauthToken

Exchange an authorization code and PKCE verifier, or a refresh token, for a short-lived agent access token and a new refresh token. Refresh tokens rotate: each works once, and reusing one revokes the whole chain. With grant_type urn:workos:agent-auth:grant-type:claim and your claim_token (auth.md), poll until the owner approves: errors are authorization_pending, slow_down, expired_token and access_denied; success hands over a named agent key once (no refresh token, it does not expire until revoked).

輸入參數codescoperesourceclient_idgrant_type必填claim_tokenredirect_uricode_verifierrefresh_token

me_get

The signed-in person.

無需輸入參數。

shops_create

Create a shop. The caller becomes its one owner. On the sign-up page the person also agrees to the Terms of Service (accept_terms_version), recorded with the version, time, IP address and browser; an agent cannot agree for them.

輸入參數name必填jurisdiction必填accept_terms_version

members_invite

Invite a person by email as office or field. Owners and office can invite. The invite link works once.

輸入參數role必填email必填shop_id必填

members_resendInvite

Email an open invite again with a new link, for a worker or office member who lost it or let it expire. The old invite is revoked and a new one is made with the same email and role: use the invite_id this returns from now on. The new link works once for 14 days. Owners and office only. Accepted or revoked invites are refused.

輸入參數invite_id必填

members_sendPage

Email a current member of your shop a one-time sign-in link that opens one page: board (the day board, for owner or office), override (mark a job or visit done anyway, owner only), or capture (job photos, for anyone on the job; a field worker must be assigned to a visit on it). Owners and office only. The member is named by membership_id, so the link only goes to someone in the shop. The link works once and expires in 15 minutes. The page still checks access when it opens.

輸入參數paramsscreen必填shop_id必填membership_id必填

members_accept

Accept an invite as the signed-in person. The invite email must match yours.

輸入參數token必填

members_list

Current members of a shop with role and start date.

輸入參數shop_id必填include_ended

members_end

End a membership: the owner removes a worker, or a worker leaves. Shop tokens end with it. The owner cannot leave; ownership moves only by transfer.

輸入參數membership_id必填

members_changeRole

Owner changes a worker between office and field. The old membership ends and a new one starts, so history keeps both.

輸入參數role必填membership_id必填

jobs_create

Start a job at a home (the home is found or created from the address).

輸入參數address必填shop_id必填summarycustomer_id

jobs_list

Jobs of a shop, newest first. Optional status filter.

輸入參數limitstatusshop_id必填

jobs_get

One job with its home address.

輸入參數job_id必填

media_requestUpload

Get a signed upload URL for a job photo or video. Before you call this, look at the file and say what it shows in summary: plain words, findings, any text you can read (model and serial plates), measurements, and for video a transcript, key moments and the length. If you cannot look at it, send summary.unable_to_analyze with a reason and the media is listed by media.needsSummary. Summaries stay inside the shop and are searchable with media.list q and search.global. Photos: JPEG, PNG, WebP, HEIC or TIFF (HEIC and TIFF are kept as sent, with a JPEG copy for viewing). Video: MP4, MOV or WebM, kept as sent, at most 100 MB and 10 minutes, never shared outside the shop. Declare the sha256 of the bytes you will send; the upload is rejected if they differ. Taken time, GPS location, heading and camera details are read from photos and kept for your shop. Copies shared outside the shop (share links, quote pages, PDFs) have that metadata removed.

輸入參數kindstage必填job_id必填sha256必填summary必填shows_interior

media_list

List the photos and videos you are allowed to see, with what the agent said each shows (summary), taken time, GPS location, heading and camera details. Filter by job, kind, words in the summary or transcript (q), summary status, distance from a point, taken time, or whether it has a location.

輸入參數qkindsortlimitjob_idshop_idnear_latnear_lngradius_mtaken_afterhas_locationtaken_before另有 1 個

media_map

Photos with a GPS location as a GeoJSON FeatureCollection (points in longitude, latitude order), ready for a map. Takes the same filters as media.list.

輸入參數qkindsortlimitjob_idshop_idnear_latnear_lngradius_mtaken_afterhas_locationtaken_before另有 1 個

media_get

One photo or video's details, including its full summary (findings, readable text, measurements, transcript and key moments), taken time, location, camera fields and the full metadata read from the file. Set include_content to get the stored bytes as base64 (metadata included), or include_original to get the original HEIC or TIFF when the photo was converted.

輸入參數media_id必填include_contentinclude_original

jobs_requestConfirmation

Get a single-use link the customer opens to confirm the work was done (or flag a problem).

輸入參數job_id必填

media_setSummary

Write or correct what a photo or video shows. Use it to fix a summary, to fill in one marked needs_summary (older photos and browser captures have none), or after a person edits the words. Each change keeps the earlier wording. Workers on the shop can edit; the summary is never shown to customers.

輸入參數summary必填media_id必填edited_by_person

media_needsSummary

Photos and videos with no summary yet: older uploads, browser captures, and uploads whose agent could not look at the file. Open each with media.get include_content, look at it, then send media.setSummary.

輸入參數kindlimitjob_idshop_id必填

quotes_create

Create a quote from lines the worker wrote. Lines are never filled in by AI. Optional: good, better, best options and optional lines the customer picks when signing.

輸入參數lines必填job_id必填optionstax_rate_id

quotes_send

Lock the quote and get a single-use signing link for the customer.

輸入參數quote_id必填email_customer

quotes_revise

Replace an unsigned quote with a new version. Earlier signing links stop working; send it again for a new link.

輸入參數lines必填optionsquote_id必填tax_rate_id

quotes_withdraw

Withdraw a draft or sent quote the customer has not signed, with an optional reason. Signing links stop working and follow-ups stop. A withdrawn quote cannot be reopened; create a new quote if needed.

輸入參數reasonquote_id必填

subcontractors_get

The Idaho 45-525(3) subcontractor and supplier statement for a job: the latest signed one, any prepared draft, and whether final payment needs one.

輸入參數job_id必填

subcontractors_prepare

Prepare the Idaho 45-525(3) statement for the shop to sign: a list of subcontractors, materialmen and rental equipment providers over $500, or none_attestation "yes" for "No subcontractors or suppliers over $500 on this job". Does not sign.

輸入參數job_id必填entriesnone_attestation

invoices_createFromQuote

Create an invoice for a signed quote, for the total of the option and optional lines the customer picked.

輸入參數quote_id必填deposit_minor

invoices_send

Send an invoice (or the next part of it) and get a single-use pay link. Earlier pay links stop working. Refused with conflict on a Doing Work deposit invoice whose booking ended (shop cancel or no-show). payments_ready false means the shop has no active payments account yet (after a hand-off, connect one with payments.connectStart); the link shows payment isn't available until it does.

輸入參數percentinvoice_id必填amount_minoremail_customer

invoices_markPaidOutside

Record that the customer paid an invoice outside Doing Work (check, cash, financing, insurance or other). Owner or office, or their agent. Closes the invoice, and the job too unless its checklists still block done (job_status says which; finish them and call jobs.complete). The job record says "Paid outside Doing Work", is never marked paid or verified, and no Doing Work receipt goes to the customer. There is no limit on jobs paid outside Doing Work and no fee on them. Agents can record these too unless the owner turned that off with shops.setAgentMoney.

輸入參數notemethod必填paid_on必填invoice_id必填

invoices_refund

Refund part or all of a payment (owner or office, or their agent). The refund shows up once the processor confirms it. An agent refund above the shop's agent refund cap (shops.setAgentMoney, $250 unless the owner changed it) does not run: it waits for the owner's OK and the reply says approval_required.

輸入參數charge_id必填amount_minor必填

fees_schedule

Doing Work's fee schedule: one stepped rate on each shop's calendar month of card and bank payments, taken out of the payments. No plans, no monthly fee, no card on file. Every shop gets every feature and unlimited workers.

無需輸入參數。

fees_preview

What Doing Work would take on a payment of this size right now, the effective rate on it, the month's volume so far (all locations under the same owner), and how far the shop is from the next, cheaper band (owner or office). Leave out amount_minor for just the month picture and the next band line.

輸入參數shop_id必填amount_minor

fees_statement

A month's Doing Work fees for a shop: card and bank volume, fees by kind, the effective rate, each line, and how far the shop is from the next band this month (owner or office).

輸入參數month必填shop_id必填

records_keys

Public keys that verify signed job records.

無需輸入參數。

jobs_record

The latest signed record for a job and its level (logged, paid, verified).

輸入參數job_id必填

webhooks_create

Add a webhook endpoint for a shop (owner or office, or their agent). The url must be https on a public internet address. Returns the signing secret once; it is never shown again.

輸入參數url必填eventsshop_id必填

webhooks_list

List a shop's webhook endpoints and their recent delivery counts. Secrets are not returned.

輸入參數shop_id必填

webhooks_delete

Remove a webhook endpoint. Pending deliveries to it stop.

輸入參數endpoint_id必填

audit_list

Read a shop's audit log, newest first (owner only).

輸入參數limitshop_id必填before_id

platforms_create

Create a developer platform account (private beta). The caller owns it.

輸入參數name必填terms_version必填

platforms_list

List the platform accounts you own and the shops each one manages.

無需輸入參數。

platforms_revokeManage

Stop a platform from managing this shop. Shop owner only.

輸入參數grant_id必填

customers_create

Add a customer to a shop, with kind, company, email, phone, billing address, lead source, tags and notes in one call.

輸入參數kindname必填tagsemailnotesphoneshop_id必填lead_sourcecompany_namebilling_address

customers_get

One customer with contacts, properties, custom fields and open balance.

輸入參數customer_id必填

customers_list

Customers of a shop, newest first, filtered by tag, lead source or archived.

輸入參數taglimitcursorshop_id必填archivedlead_source

customers_update

Change a customer's name, kind, company, email, phone, billing address, lead source, tags or notes.

輸入參數kindnametagsemailnotesphonecustomer_id必填lead_sourcecompany_namebilling_address

customers_archive

Archive a customer (hidden from lists, history kept) or bring one back.

輸入參數archivedcustomer_id必填

customers_duplicates

Likely duplicate customers in a shop: same email, same phone digits, or same name.

輸入參數shop_id必填customer_id

customers_merge

Merge a duplicate customer into another: jobs, requests, contacts, properties and fields move over.

輸入參數from_customer_id必填into_customer_id必填

customers_contactAdd

Add a contact person to a customer (tenant, manager, billing, spouse).

輸入參數name必填roleemailphoneis_primarycustomer_id必填

customers_contactUpdate

Change or remove one contact of a customer.

輸入參數nameroleemailphoneremovedcontact_id必填is_primary

properties_add

Add a service address to a customer, with optional label and access notes.

輸入參數labeladdress必填customer_id必填access_notes

properties_list

Service addresses of a customer, or every property of a shop.

輸入參數limitcursorshop_idcustomer_idinclude_archived

properties_update

Change a property's label or access notes, or archive it.

輸入參數labelarchivedproperty_id必填access_notes

equipment_add

Record equipment at a property: kind, make, model, serial, install date and warranty.

輸入參數kind必填makemodelnotesserialproperty_id必填install_datewarranty_until

equipment_list

Equipment at a property, or warranties ending soon across a shop.

輸入參數shop_idproperty_idinclude_archivedwarranty_ends_within_days

equipment_update

Change or archive an equipment record.

輸入參數kindmakemodelnotesserialarchivedequipment_id必填install_datewarranty_until

jobs_setTags

Set the tags and lead source on a job.

輸入參數tagsjob_id必填lead_source

customers_timeline

Everything that happened with a customer, newest first: requests, jobs, quotes, signatures, invoices and payments.

輸入參數limitcursorcustomer_id必填

customers_statement

A customer's account statement: every invoice with total, paid and balance, and the total owed.

輸入參數customer_id必填

customers_privacyExport

Everything the shop holds about one customer, as one JSON document, for a privacy request.

輸入參數customer_id必填

fields_define

Add a custom field to customers, properties, jobs, quotes or invoices for a shop.

輸入參數key必填piitype必填labeltarget必填optionsshop_id必填requiredshared_with_homeowner

fields_list

Custom fields a shop has defined, optionally for one kind of record.

輸入參數targetshop_id必填

fields_set

Set one custom field value on a customer, property, job, quote or invoice.

輸入參數key必填value必填target必填shop_id必填currencyobject_id必填

fields_get

Custom field values on one record, with any required fields still empty.

輸入參數target必填shop_id必填object_id必填

requests_create

Log a request for work from a customer or a new lead.

輸入參數tagstitle必填sourceaddressdetailsshop_id必填customer_idlead_sourceproperty_idcontact_namecontact_emailcontact_phone另有 1 個

requests_list

Requests of a shop, newest first, filtered by stage, customer or tag.

輸入參數taglimitstagecursorshop_id必填customer_idinclude_archived

requests_pipeline

How many open requests a shop has in each stage, and how many were won or lost in the last 30 days.

輸入參數shop_id必填

requests_get

One request with its customer and the job it became.

輸入參數request_id必填

requests_update

Move a request to another stage or change its details, customer or property.

輸入參數tagsstagetitledetailsarchivedrequest_id必填customer_idlead_sourcelost_reasonproperty_idpreferred_times

requests_convert

Turn a request into a job at its property or address; the worker then writes the quote or books a visit.

輸入參數addresssummaryrequest_id必填customer_id

requests_formCreate

Turn on the shop's public request form and get its key. Making a new one turns off the old key.

輸入參數shop_id必填

requests_submitForm

Send a shop a request through its public form. No sign-in; needs the form key.

輸入參數name必填emailphonetitle必填addressdetailsform_key必填preferred_times

visits_createRecurring

Book a repeating visit (daily, weekly or monthly, every n) for a job. All visits are booked now, up to 104. Times repeat in the shop's local time zone. Overlaps and unavailable workers come back as warnings, never blocks.

輸入參數freq必填everynotestitleuntiljob_id必填ends_at必填starts_at必填occurrencesassignee_idsarrival_window_minutes

visits_cancelSeries

Cancel the visits of a repeating series that have not started yet, from a time onward (default now). Past, started and done visits stay.

輸入參數fromreasonseries_id必填

visits_start

Mark a visit started (from scheduled, on the way, or arrived). The worker on the visit (or the office) can do this.

輸入參數visit_id必填

visits_done

Mark a visit done, with an optional note. The worker on the visit (or the office) can do this. A visit not yet started is started too. Refused with checklist_open while a checklist on the visit has required items open or a sign-off missing; the owner, signed in on the hosted override page (/p/checklist/override), may pass override_reason to mark it done anyway (recorded and audited). Agents, keys and office staff cannot override.

輸入參數notevisit_id必填override_reason

visits_create

Book a visit to a job at a time, optionally with the workers going (assignee_ids, a saved crew_id, or both). Overlaps for those workers come back in conflicts.

輸入參數notestitlejob_id必填crew_idends_at必填prioritystarts_at必填assignee_idsarrival_window_minutes

visits_update

Move a visit or change its title, notes or arrival window. Overlaps for its workers come back in conflicts. Moving it re-plans the appointment reminder.

輸入參數notestitleends_atvisit_id必填starts_atarrival_window_minutes

visits_assign

Set who is going on a visit: person_ids, a saved crew_id, or both. The list replaces the current one; an empty person_ids with no crew leaves it unassigned.

輸入參數crew_idvisit_id必填person_ids

visits_cancel

Cancel a visit that is scheduled, on the way, or arrived. It stays on record with the reason, and customer notices not yet sent for it are dropped.

輸入參數reasonvisit_id必填

visits_setPriority

Set a visit's priority: normal, urgent or emergency. Sends visit.priority_set. For urgent or emergency, call dispatch.suggest for who could go.

輸入參數reasonpriority必填visit_id必填

dispatch_suggest

Read only: for an urgent or emergency visit, the shop's field workers and owners ranked by who is free (no overlapping visit, not on time off, inside their hours) and then by the fewest visits that day. Suggestions only; assign with visits.assign.

輸入參數limitvisit_id必填

visits_get

One visit with its job and workers.

輸入參數visit_id必填

schedule_list

A shop's visits that overlap a time window, earliest first. Filter by worker, job, or only mine. Field workers only ever see their own.

輸入參數to必填from必填minejob_idshop_id必填person_idunassignedinclude_cancelled

routes_setLocation

Save the map point for a job's address, so routes.day can give it to you with each stop (owner or office). Look the address up with your own maps tools, or have a person type it in. Doing Work does not look addresses up. The point is kept for this shop's jobs at the same address.

輸入參數lat必填lng必填job_idsourcevisit_id

routes_setStart

Save where a worker starts the day (their home or a yard), or with no person_id the shop's yard, used when a worker has none. Owner or office for anyone; a worker for themselves. A worker's own start is seen only by them and the owner or office.

輸入參數lat必填lng必填label必填sourceshop_id必填person_id

routes_day

One day's stops for planning a route, per worker in visit time order: each worker's start point (their own, else the shop yard), and for each stop the address, map point (null until you save one with routes.setLocation; source says where it came from), time, length, arrival window, priority, and locked when the worker is already on the way, there, or done. Visits with no worker come back in unassigned. Owner and office see everyone; a field worker sees only their own day. Plan the order with your own tools, then write it back with routes.apply.

輸入參數date必填shop_id必填person_ids

routes_apply

Write a planned route back: new times, and optionally new workers, for up to 100 visits at once (owner or office). All or nothing: if any visit is not scheduled (already on the way, there, started, done or cancelled), not this shop's, or the plan leaves a worker with overlapping visits, nothing changes and the problems come back in conflicts. Pass allow_overlaps true to save overlaps anyway, or dry_run true to check without saving. Each moved visit gets its appointment reminder planned again once.

輸入參數changes必填dry_runshop_id必填allow_overlaps

vendors_create

Add a supplier the shop buys parts from. Owner or office.

輸入參數name必填noteemailphoneshop_id必填account_number

vendors_update

Change a supplier's name, contact details or note, or archive it (archived: true). Owner or office.

輸入參數namenoteemailphonearchivedvendor_id必填account_number

vendors_list

List the shop's suppliers (archived ones only with include_archived). Owner or office.

輸入參數shop_id必填include_archived

po_create

Start a purchase order (draft) for parts for a job from a supplier. Nothing counts as job cost until po.receive. Owner or office.

輸入參數notelines必填job_id必填vendor_id必填

po_update

Change a draft purchase order's supplier, note or lines (lines replace all lines). Owner or office.

輸入參數notelinespo_id必填vendor_id

po_get

A purchase order with its lines, what was received (in job cost) and the supplier's bill. Owner or office.

輸入參數po_id必填

po_list

List purchase orders for the shop, or for one job or supplier, newest first. Owner or office.

輸入參數limitjob_idshop_id必填vendor_id

po_markOrdered

Mark a draft purchase order as sent to the supplier (the agent or a person sends it). Owner or office.

輸入參數po_id必填

po_receive

Record parts that arrived. Each received line becomes a material on the job at the line's cost (this is the only way a purchase order reaches job cost; do not also add an expense for it). Leave lines out to receive everything left. Owner or office.

輸入參數linespo_id必填visit_id

po_undoReceipt

Take back a received material from a purchase order (wrong part, returned). It leaves job cost and the line can be received again. Owner or office.

輸入參數reasonmaterial_id必填

po_cancel

Cancel a purchase order that has nothing received (undo receipts first). Owner or office.

輸入參數po_id必填

po_recordBill

Record the supplier's bill for a purchase order, for paying the supplier. It is never added to job cost or expenses (the received materials already are); the difference from what was received is shown. Owner or office.

輸入參數po_id必填bill_refbill_minor必填

calendar_createFeed

Make a calendar feed link (.ics) of one worker's visits that a calendar app subscribes to (read only). Leave person_id out for your own; owner or office can make one for any current member. A new feed turns that person's old one off. The link is shown once.

輸入參數shop_id必填person_id

calendar_listFeeds

Calendar feeds in a shop, newest first, with whether each is active and how often it was fetched. Field workers see only their own. The link is not shown again.

輸入參數shop_id必填person_id

calendar_revokeFeed

Turn a calendar feed off now. Calendar apps that fetch it after this get 410 and stop showing new visits.

輸入參數feed_id必填

availability_setHours

Set a worker's weekly hours, replacing what was there. Days are 0 (Sunday) to 6, times are shop local HH:MM. An empty list means no set hours (always available).

輸入參數hours必填shop_id必填person_id

availability_addTimeOff

Add time off for a worker (vacation, sick, appointment).

輸入參數reasonends_at必填shop_id必填person_idstarts_at必填

availability_removeTimeOff

Remove a time-off entry.

輸入參數time_off_id必填

availability_get

A worker's weekly hours, time off, and booked visits in a window (at most 62 days). Defaults to me.

輸入參數to必填from必填shop_id必填person_id

schedule_settings

The shop's scheduling setup: time zone, booking hours (or the default when none are set), arrival window, travel buffer, reminder lead time, whether on the way notices go out, and whether arrival times are shown. on_my_way_notices covers both the on the way and the arrived notice. arrival_notices is off unless the shop turns it on. When on, an on the way message includes an arrival time when one is known (a stored route estimate, or the time the worker entered; no drive time is looked up). On the way and arrived each go by text and by email. Any worker in the shop can read it.

輸入參數shop_id必填

schedule_setShopHours

Set the shop's booking hours, replacing what was there (owner or office). Days are 0 (Sunday) to 6, times are shop local HH:MM, several blocks a day are fine. An empty list clears them, and find-a-time falls back to Monday to Friday 08:00 to 17:00. Visits outside these hours are still allowed and come back with outside_shop_hours.

輸入參數hours必填shop_id必填

schedule_setRules

Change the shop's scheduling rules (owner or office; the time zone is owner only). arrival_window_minutes is the default window customers are told for new visits (0 means an exact time). buffer_minutes is travel and setup time find-a-time keeps clear around booked visits. reminder_hours is how long before a visit the customer gets an appointment reminder (0 turns reminders off). on_my_way_notices tells the customer by text and by email when a worker says they are on the way. Text is the main one. The email goes whenever the customer has an email address, even if the text does not. arrival_notices (off by default) adds an arrival time to that message when one is known (a stored route estimate, or the time the worker entered; route data has no drive time, so with no worker time there is no arrival line). The arrived text and email follow on_my_way_notices, the same setting as the on the way message. A do-not-email address is not emailed. Only the fields you send change. Visits already booked keep their window and reminder.

輸入參數shop_id必填time_zonebuffer_minutesreminder_hoursarrival_noticeson_my_way_noticesarrival_window_minutes

schedule_findTime

Find open times for a visit of a given length. Looks inside shop hours (or Monday to Friday 08:00 to 17:00 when none are set), skips worker time off and times outside a worker's own hours, and keeps the shop's travel buffer clear around booked visits. Give person_ids or a saved crew_id (or both) to check those workers (together: all of them free at once, the default; or any one of them). Leave it out to check every worker in the shop and get back who is free. Field workers can only check themselves. Nothing is booked; call visits.create with a slot.

輸入參數tofromlimitcrew_idshop_id必填togetherperson_idsstep_minutesduration_minutes必填

visits_onTheWay

Mark that the worker is on the way to a visit, with an optional ETA (eta_at, or eta_minutes from now). The worker on the visit (or the office) can do this. When the shop has on the way notices on, the customer gets a text and an email. Text is the main one. The email goes whenever the customer has an email address, even if the text is blocked, refused, or does not go through. When arrival notices are also on, the message includes an arrival time: a route estimate when the visit already has one, otherwise the time the worker entered, otherwise no arrival line. Route data stores the booked start and the arrival window, not a drive time. Doing Work does not look up a drive time.

輸入參數eta_atvisit_id必填eta_minutes

visits_arrived

Mark that the worker arrived at a visit. The worker on the visit (or the office) can do this. Any on the way message not yet sent is dropped. When on the way notices are on, the customer gets one arrived text and one arrived email. Text is the main one. The email goes whenever the customer has an email address, even if the text does not. A do-not-email address is not emailed. Once only.

輸入參數visit_id必填

visit_on_my_way

Mark that the worker is on the way to a visit when they tell their agent, for example on my way, there by 2. eta is that time in their words and can be left out. A worker may call this only for a visit they are assigned to. The owner or office may call it for any visit in the shop. When on the way notices are on, the customer gets a text and an email. Text is the main one. The email goes whenever the customer has an email address, even if the text is blocked, refused, or does not go through. When arrival notices are also on, the message includes the time the worker gave. A repeat call does not send again.

輸入參數etavisit_id必填

visit_arrived

Mark that the worker has arrived at a visit when they tell their agent, for example I am here. A worker may call this only for a visit they are assigned to. The owner or office may call it for any visit in the shop. When on the way notices are on, the customer gets one arrived text and one arrived email. Text is the main one. The email goes whenever the customer has an email address, even if the text does not. A do-not-email address is not emailed. When on the way notices are off, this sends nothing. A repeat call does not send again.

輸入參數visit_id必填

visits_notices

Customer notices planned or handled for a visit (appointment reminder, on the way, arrived), with status pending, queued (handed to text, email, or both), cancelled or skipped and why. Owner or office.

輸入參數visit_id必填

schedule_openSlots

Times the shop marked open for its voice agent to book (upcoming only), and which are booked. Any worker in the shop can read it.

輸入參數shop_id必填

schedule_addOpenSlots

Mark times open for the shop's voice agent to book callers into (owner or office). The agent books them only when phone.setVoiceAi has book_open_slots true, which is off by default. Each slot is at most 12 hours and in the future. A booked slot becomes a request with that time for the office.

輸入參數slots必填shop_id必填

schedule_removeOpenSlot

Take back an open time that is not booked yet (owner or office).

輸入參數shop_id必填slot_id必填

shops_setInvoiceReminders

Turn the automatic unpaid-invoice reminder on or off for the whole shop (owner only). When on, a customer gets one friendly email reminder a set number of days (default 1) after an invoice or deposit request is sent if it is still unpaid. Mail comes from a doingwork.work address on the shop's behalf, with replies going to the owner.

輸入參數enabled必填shop_id必填delay_days

shops_setContact

Set the phone and email customers see when they open a canceled invoice or quote link (owner only). Leave a field out or send null to fall back to the owner's own email and phone.

輸入參數emailphoneshop_id必填

shops_setFieldCosts

Let field workers in the shop see job costs (labor cost, material cost, expenses others entered, price book cost), or hide them again (owner only). Off by default. A worker whose own see_costs is off still does not see costs.

輸入參數enabled必填shop_id必填

shops_setHubLinkInEmails

Turn the customer hub link in quote and invoice emails on or off for the whole shop (owner only). On by default: each quote or invoice email the customer gets from Doing Work ends with a link to their hub, where they see their quotes, invoices and visits with you.

輸入參數enabled必填shop_id必填

invoices_setReminder

Turn the automatic unpaid reminder on or off for one invoice (owner or office).

輸入參數enabled必填invoice_id必填

pricebook_saveItem

Add a price book item, or change one when item_id is given (owner or office). Items are a pick list for quote lines that workers write; they are never filled into a quote automatically.

輸入參數kindnameunitpartsitem_idshop_id必填taxablecategorytask_codecost_minordescriptionest_minutes另有 4 個

pricebook_list

List the shop's price book items, by name. Filter by category or text; archived items are left out unless asked for. cost_minor is null for a worker the owner has not let see costs.

輸入參數qshop_id必填categoryinclude_archived

pricebook_archiveItem

Archive a price book item, or bring it back with archived false (owner or office). Quotes that used it keep their lines.

輸入參數item_id必填archived

templates_save

Save a quote template: worker-written lines (and good, better, best options) to start quotes from. Give template_id to replace one (owner or office).

輸入參數name必填lines必填optionsshop_id必填template_id

templates_list

List the shop's saved quote templates with their lines. To use one, pass its lines and options to quotes.create, changed as the worker says.

輸入參數shop_id必填include_archived

templates_archive

Archive a quote template, or bring it back with archived false (owner or office).

輸入參數archivedtemplate_id必填

quotes_activity

What the customer has done with a quote: when each version was first opened and how often, and any decline or change request with its note.

輸入參數quote_id必填

shops_setQuoteFollowup

Set how many days after a quote is sent the customer gets one friendly follow-up email if they have not answered (owner only). 0 turns it off. Default 3.

輸入參數days必填shop_id必填

invoices_create

Create an invoice without a quote, from lines the worker wrote (never filled in by AI). Optional due date, memo and deposit. Send it with invoices.send.

輸入參數memolines必填due_onjob_id必填tax_rate_iddeposit_minor

invoices_createBatch

Create many invoices at once (up to 100), each from a job and the lines the worker wrote. All or nothing. With send=true each is sent and its pay link returned.

輸入參數senditems必填shop_id必填

invoices_get

One invoice with its lines, what has been paid, the balance, the due date, and whether a bank payment is still clearing. display_status is payment_pending while a bank payment clears (3 to 5 business days), otherwise the invoice status. last_bank_payment_failed_at is set when the latest bank payment failed and the customer can pay again.

輸入參數invoice_id必填

invoices_pdf

The invoice as a PDF (base64), with shop, customer, lines, paid so far and balance. Attach it to email or save it.

輸入參數invoice_id必填

invoices_aging

Accounts receivable aging: every open invoice's balance by how late it is (current, 1-30, 31-60, 61-90, over 90 days past due), with totals per customer (owner or office). An invoice with no due date is due when sent.

輸入參數as_ofshop_id必填

shops_setTips

Turn tips on or off on this shop's invoice pay page (owner only). Off by default. A tip is paid with the invoice, never counts toward the invoice total, and shows in tips.report.

輸入參數enabled必填shop_id必填

shops_setReviewRequest

Set the review link (for example your Google review page, https only) and how many days after an invoice is paid the customer gets one email asking for a review (owner only). No link means no email. Default 1 day; 0 turns it off. Review emails show the shop name and mailing_address in the footer, so a link can only be set once the shop has a mailing address (send it here).

輸入參數daysshop_id必填review_urlmailing_address

tips_report

Tips customers paid, by invoice and in total, between two dates (owner or office). Tips are kept apart from invoice totals. Refunds of a payment are not split out from its tip.

輸入參數to必填from必填shop_id必填

shops_getBrand

How this shop's quotes and invoices look: accent color, license number, footer text, logo size, and whether "Sent with Doing Work" shows.

輸入參數shop_id必填

shops_setBrand

Set how this shop's quotes, invoices and emails to customers look, on the customer's page, in the PDF and in every email (owner only). The owner can also change it on the brand page at /p/shop/brand. Send only what changes; null clears a field. accent_color is "#rrggbb" and must reach 4.5 to 1 contrast on white (the default is #1f4fd1). logo_base64 is a PNG or JPEG of up to 5 MB, stored as a JPEG of at most 600 pixels on its long side. sent_with_doing_work (on by default) prints "Sent with Doing Work" in the PDF footer, on the page and at the bottom of emails.

輸入參數footershop_id必填logo_base64accent_colorlicense_numbersent_with_doing_work

quotes_pdf

A quote as a PDF (base64) in the shop's brand: logo, accent color, license number, lines, options and total. Financing links use the signed total once the customer has signed, and the lowest option until then. The latest version unless version is given. Attach it to email or save it.

輸入參數versionquote_id必填

cards_get

The card a customer has on file (brand, last 4, expiry) and whether auto-pay is on (owner or office).

輸入參數customer_id必填

cards_remove

Remove a customer's saved card (owner or office). Auto-pay turns off with it.

輸入參數customer_id必填

customers_setAutopay

Turn auto-pay on or off for a customer (owner or office). On needs a saved card. With auto-pay on, each invoice sent to them is charged to the card on its due date (or the day it is sent if it has none). A failed charge is not retried; you get an email and the pay link still works.

輸入參數enabled必填customer_id必填

maintenance_createPlan

Start a maintenance plan for a job's customer (owner or office). You write the priced lines for one term (never filled in by AI). The first term's invoice is created now (and sent if send_first is true). When a term ends, the next term's invoice is created automatically and sent if auto_send is on. With visits_per_term, each term also gets that many service due dates (see services.listDue), so the shop knows when each covered visit is due; schedule the actual visit with visits.create as usual.

輸入參數name必填lines必填job_id必填auto_sendstarts_onsend_firsttax_rate_idterm_months必填visit_titlevisits_per_term

maintenance_getPlan

One maintenance plan: price per term, current term, renewal date, each term's invoice, and this term's covered visits with the next one due.

輸入參數plan_id必填

maintenance_listPlans

A shop's maintenance plans, optionally for one customer or by status, soonest renewal first.

輸入參數statusshop_id必填customer_id

maintenance_setPrice

Replace a plan's priced lines (owner or office; you write them, never AI), and optionally its tax rate. Applies from the next term's invoice; invoices already made keep their price.

輸入參數lines必填plan_id必填tax_rate_id

maintenance_setVisits

Change how many visits a plan covers each term, and what they are called (owner or office). Applies from the next term. Pass this_term true to also add them now to the current term when it has none yet.

輸入參數plan_id必填this_termvisit_titlevisits_per_term必填

maintenance_cancelPlan

Cancel a maintenance plan (owner or office). No more renewal invoices. Invoices already sent stay as they are. The plan's open visit due dates are cancelled.

輸入參數plan_id必填

taxes_saveRate

Add or change a sales tax rate the shop charges in one jurisdiction (owner or office). You enter the rate; Doing Work never looks it up. rate_bps is hundredths of a percent (600 = 6%). Changing a rate applies to new quotes and invoices only. is_default makes it the rate used when a quote or invoice does not name one.

輸入參數name必填shop_id必填rate_bps必填is_defaulttax_rate_idjurisdiction必填

taxes_listRates

The shop's tax rates. Archived (replaced or removed) rates are left out unless include_archived is true.

輸入參數shop_id必填include_archived

taxes_archiveRate

Stop using a tax rate (owner or office). Quotes and invoices that already used it keep it.

輸入參數tax_rate_id必填

shops_setTaxReportBasis

Choose how the sales tax report counts a period (owner only). accrual (default): invoices sent in the period. cash: money collected in the period, after refunds. Pick the one your state files on.

輸入參數basis必填shop_id必填

taxes_salesReport

Sales tax report for a period (owner or office), shop local dates, from and to inclusive. Uses the shop's basis (shops.setTaxReportBasis) unless basis is given. accrual: invoices sent in the period, with sales, taxable sales, tax billed, and tax collected so far. cash: money collected in the period through Doing Work (payments minus refunds, tips left out), with the tax share of it. Grouped by the tax name, jurisdiction and rate on each invoice. Untaxed sales are one row with no rate. Void invoices are left out. For filing, check the numbers against your own records.

輸入參數to必填from必填basisshop_id必填

quotes_addAttachment

Show an uploaded photo or file of the same job with a quote, with an optional caption. Upload it first with the media ops. The customer sees it on the quote page.

輸入參數captionmedia_id必填quote_id必填

quotes_removeAttachment

Take a photo or file off a quote. The media item itself stays on the job.

輸入參數attachment_id必填

quotes_listAttachments

Photos and files shown with a quote, in order.

輸入參數quote_id必填

media_tag

Add or remove tags on a photo (for example: leak, panel, permit). Tags are lower case; returns the photo's tags.

輸入參數addremovemedia_id必填

tags_list

Every tag used in the shop, with how many photos and jobs carry it.

輸入參數shop_id必填

jobs_findByTag

Jobs in the shop that carry all the given tags (set with jobs.setTags), newest first, up to 200.

輸入參數tags必填shop_id必填

media_saveMarkup

Save markup over a photo as a new layer version: arrows, lines, boxes, circles, text and freehand strokes in 0..1 photo coordinates (0,0 is top left). The photo is never changed; earlier versions are kept. An empty list clears the markup.

輸入參數shapes必填media_id必填

media_getMarkup

A photo's markup: the latest version unless one is named, with an SVG overlay to lay over the original photo. Also lists all versions.

輸入參數versionmedia_id必填

shares_create

Make a link to a gallery of a job's photos that anyone with the link can open without signing in. Name the photos, or leave media_ids out to share every photo on the job (including ones added later). Expires after days (1 to 90, default 14); revoke it any time. Markup shows over the photos unless include_markup is false. Set include_daily_log to also show the job's daily log entries (off by default; names of who wrote them are not shown). The url is shown once.

輸入參數daystitlejob_id必填media_idsinclude_markupinclude_daily_log

shares_list

Photo share links on a job, newest first, with whether each is still active and how often it was opened. The link itself is not shown again.

輸入參數job_id必填

shares_revoke

Turn a photo share link off now. Anyone opening it after this sees that it is no longer available.

輸入參數share_id必填

logs_add

Write a daily log entry on a job: what happened on site that day, in the worker's own words. Any shop member can add one. log_date defaults to today in the shop's time zone. Attach photos already on the job with media_ids.

輸入參數body必填job_id必填log_datemedia_ids

logs_list

Daily log entries on a job, oldest first, optionally between two dates (inclusive). Removed entries are left out.

輸入參數tofromjob_id必填

logs_remove

Take a daily log entry out of the log. Only the worker who wrote it or the owner can. It stays in history and in any PDF already made.

輸入參數entry_id必填

documents_photoReport

Render a photo report PDF for a job: a title and the worker's own notes, then the job's photos in time order with stage and tags. Name photos with media_ids or leave it out for every photo on the job. Core stores the PDF with its sha256 and returns it (base64).

輸入參數notestitlejob_id必填media_ids

documents_dailyLog

Render the daily log for a job as a PDF: each day's entries in the workers' own words with who wrote them, and the photos they attached. Optional from and to dates (inclusive). Core stores the PDF with its sha256 and returns it (base64).

輸入參數tofromjob_id必填include_photos

documents_list

PDF documents core made for a job (photo reports, daily logs and submitted forms), newest first, with each file's sha256.

輸入參數job_id必填

documents_get

One stored job PDF (base64) with its sha256, byte for byte as it was made.

輸入參數document_id必填

expenses_add

Record money a worker spent on a job, with the receipt photo. Parts received on a purchase order are already job cost; when the vendor matches a received purchase order on the job, possible_po_duplicates lists it so you can ask before keeping both. The worker types the amount and tax from the receipt; core never reads or fills in amounts. spent_on defaults to today in the shop's time zone.

輸入參數notejob_id必填vendorcategoryspent_ontax_minoramount_minor必填receipt_media_id

expenses_update

Change an expense: date, vendor, category, amount, tax, receipt photo or note. Amounts are still typed by a worker. The worker who entered it, the owner or office can change it.

輸入參數notevendorcategoryspent_ontax_minorexpense_id必填amount_minorreceipt_media_id

expenses_remove

Take an expense off the books (kept in history). The worker who entered it, the owner or office can.

輸入參數expense_id必填

expenses_list

Expenses on a job, or across the shop between dates, with totals by category. Owner and office see every expense; a field worker sees the ones they entered.

輸入參數tofromjob_idshop_idcategory

search_global

Search one shop for customers (name, email, phone), properties (address), jobs (summary), requests (title), notes (words, on any record) and photos and videos (what the agent said they show, readable text such as serial numbers, video transcripts). Case-insensitive; you see only what your role can read.

輸入參數q必填limitshop_id必填

events_catalog

Every event a webhook can receive, with its payload keys and types. Approved agent actions add requested_by_token_id to any event.

無需輸入參數。

webhooks_deliveries

List deliveries to one webhook endpoint, newest first, with event, status, attempts and last HTTP status.

輸入參數limitstatusbefore_idendpoint_id必填

webhooks_retry

Send a failed or dead delivery again from attempt 0 (owner or office).

輸入參數delivery_id必填

imports_fields

The customer import fields and the built-in presets (jobber, housecall_pro, companycam) with the export column each reads.

無需輸入參數。

imports_preview

Dry run of a customer CSV import. Writes nothing. Returns the headers, a suggested mapping (from a preset or the header names), and for every row the customer it would create or the problems found. Show the mapping to the owner before imports.run.

輸入參數csv必填presetsourcemappingshop_id必填on_match

imports_run

Owner only: import customers (and one service address each) from a CSV with the mapping the owner confirmed. mode all_or_nothing (default) writes nothing if any row fails; per_row writes the good rows and reports the rest. dry_run true checks without writing.

輸入參數csv必填modesourcedry_runmapping必填shop_id必填on_matchpreview_hash

imports_historyFields

Fields for importing history from another system (jobs with visit history, open quotes, unpaid invoices, price book, equipment, maintenance plans as service-due reminders, payment history as read-only records) and the jobber and housecall_pro presets per kind.

無需輸入參數。

imports_historyPreview

Dry run of a history import (kind jobs, quotes, invoices, pricebook, equipment, maintenance_plans, payments or flat_rate). Writes nothing. Returns a suggested mapping, what each record would do (create, update, skip, skip_blank, skip_closed or error) with how its customer matched, and a preview_hash. Show it to the owner; imports.historyRun needs the same hash.

輸入參數csv必填kind必填presetsourcemappingshop_id必填on_matchplans_asequipment_kind

imports_historyRun

Owner only: write a history import the owner confirmed in imports.historyPreview (send its preview_hash, plus the same csv, kind, source, on_match and mapping). Records already imported are matched by old id and skipped or updated, never duplicated. Imported quotes and invoices are drafts and are not sent. Maintenance plans become service-due reminders (no invoice, no charge), or with plans_as billed, maintenance plans at the confirmed price with auto_send off and no invoice until the next due date; payments become read-only history records (no charge, no fee, no invoice change). flat_rate rows become price book tasks, matched by old id, then task code, then name. mode all_or_nothing (default) or per_row.

輸入參數csv必填kind必填modesourcemapping必填shop_id必填on_matchplans_aspreview_hash必填equipment_kind

imports_paymentHistory

Owner or office: payments imported from another system (read-only history; never charged, never counted toward Doing Work fees). Filter by customer_id.

輸入參數limitshop_id必填customer_id

shops_export

Owner only: everything the shop holds as one ZIP: data/<table>.csv and data/<table>.json for every shop table, files/ with job photos (and the original HEIC or TIFF file next to its JPEG copy) and PDFs, and manifest.json. Signing secrets and token hashes are left out. By default you get download_url, a link that works for 60 minutes and up to 5 downloads; anyone with the link can download, so do not share it. delivery "inline" returns zip_base64 instead, only for exports up to 10 MB. Large shops: pass include_files false for data only.

輸入參數shop_id必填deliverylink_minutesinclude_files

版本歷史

2
  1. v1.0.1最新Nov 3, 2026
  2. v1.0.0Oct 18, 2026

評分

已滿足適用檢查項的 83%

該評分衡量此收錄條目的完整程度,依據註冊中心條目、端點與公開來源計算得出。它不是對伺服器本身的評價,也不表示伺服器安全或目前可用:可連通性是帶日期的檢查結果,評分也不包含安裝量或使用者評價。

  • 近 30 天內可連通必需25 分
  • 已宣告認證方式必需10 分
  • 已列出工具必需15 分
  • 描述必需15 分
  • 圖示10 分
  • 文件15 分

    請宣告包含 README 的 GitHub 儲存庫,或在 OAuth 受保護資源後設資料中提供 resource_documentation。

  • 授權條款不適用

    託管服務按其提供方的條款使用,因此這裡不要求授權條款。此檢查項不計入百分比。

其他 Doingwork 整合