Bots St

bots.st/field-service-business-platform-by-doing-work

Field Service Business Platform by Doing Work

Manage field jobs, scheduling, quotes, invoices, payments

2225 ms

answered our call

State
Answered
Protocol
MCP 2025-06-18
Tools listed
200
Answered
3 of the last 3 calls

How to reach it

  • MCP, HTTPhttps://doingwork.work/mcp

What it can do

ToolWhat it says it does
audit_listRead a shop's audit log, newest first (owner only).
auth_oauthAuthorizeA 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.
auth_oauthRegisterRegister an OAuth client (RFC 7591 dynamic registration). Public clients only: PKCE, no secret. Redirects must be https, or http on loopback.
auth_oauthTokenExchange 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_requestLinkEmail a one-time sign-in link. Always answers ok, so it never reveals whether an email has an account.
auth_sendLinkEmail a person a one-time sign-in link that opens a named Doing Work screen after they sign in, so an agent can hand its person straight to the page that needs a human (brand, terms, job photos and so on). The screen comes from a fixed list: today, prices, brand, payments, resume, terms, transfer…
availability_addTimeOffAdd time off for a worker (vacation, sick, appointment).
availability_getA worker's weekly hours, time off, and booked visits in a window (at most 62 days). Defaults to me.
availability_removeTimeOffRemove a time-off entry.
availability_setHoursSet 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).
calendar_createFeedMake 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.
calendar_listFeedsCalendar 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.
calendar_revokeFeedTurn a calendar feed off now. Calendar apps that fetch it after this get 410 and stop showing new visits.
cards_getThe card a customer has on file (brand, last 4, expiry) and whether auto-pay is on (owner or office).
cards_removeRemove a customer's saved card (owner or office). Auto-pay turns off with it.
cards_setupLinkGet a secure page where the customer saves a card with the shop's payment processor (owner or office). Send the link to the customer; Doing Work never sees the card number. Saving a new card replaces the old one.
customers_archiveArchive a customer (hidden from lists, history kept) or bring one back.
customers_contactAddAdd a contact person to a customer (tenant, manager, billing, spouse).
customers_contactUpdateChange or remove one contact of a customer.
customers_createAdd a customer to a shop, with kind, company, email, phone, billing address, lead source, tags and notes in one call.
customers_duplicatesLikely duplicate customers in a shop: same email, same phone digits, or same name.
customers_getOne customer with contacts, properties, custom fields and open balance.
customers_listCustomers of a shop, newest first, filtered by tag, lead source or archived.
customers_mergeMerge a duplicate customer into another: jobs, requests, contacts, properties and fields move over.
customers_privacyExportEverything the shop holds about one customer, as one JSON document, for a privacy request.
customers_searchFind customers by name, company, email, phone or property address.
customers_setAutopayTurn 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.
customers_statementA customer's account statement: every invoice with total, paid and balance, and the total owed.
customers_timelineEverything that happened with a customer, newest first: requests, jobs, quotes, signatures, invoices and payments.
customers_updateChange a customer's name, kind, company, email, phone, billing address, lead source, tags or notes.
dispatch_suggestRead 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.
documents_dailyLogRender 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).
documents_getOne stored job PDF (base64) with its sha256, byte for byte as it was made.
documents_listPDF documents core made for a job (photo reports, daily logs and submitted forms), newest first, with each file's sha256.
documents_photoReportRender 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).
equipment_addRecord equipment at a property: kind, make, model, serial, install date and warranty.
equipment_listEquipment at a property, or warranties ending soon across a shop.
equipment_updateChange or archive an equipment record.
events_catalogEvery event a webhook can receive, with its payload keys and types. Approved agent actions add requested_by_token_id to any event.
expenses_addRecord 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…
expenses_listExpenses 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.
expenses_removeTake an expense off the books (kept in history). The worker who entered it, the owner or office can.
expenses_updateChange 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.
fees_previewWhat 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.
fees_scheduleDoing 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_statementA 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).
fields_defineAdd a custom field to customers, properties, jobs, quotes or invoices for a shop.
fields_getCustom field values on one record, with any required fields still empty. Money-type values and currency are null unless you may see prices (see_prices); key and type stay visible.
fields_listCustom fields a shop has defined, optionally for one kind of record.
fields_setSet one custom field value on a customer, property, job, quote or invoice. Writing a money value does not need see_prices (read masking only; D-20261106-CF-4).
imports_fieldsThe customer import fields and the built-in presets (jobber, housecall_pro, servicetitan, companycam) with the export column each reads.
imports_historyFieldsFields 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_historyPreviewDry 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…
imports_historyRunOwner 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…
imports_previewDry 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. next_actions says what to do next.
imports_runOwner 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.
invoices_agingAccounts 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.
invoices_createCreate 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.
invoices_createBatchCreate 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.
invoices_createFromQuoteCreate an invoice for a signed quote, for the total of the option and optional lines the customer picked.

And 140 more tools.

In its maker's words

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

Website
doingwork.work/connectors
Publisher
doingwork.work (2 listings in the registry)
Listed from
the official MCP Registry as work.doingwork/shop
Version
1.0.1, updated 1 Nov 2026
Kinds of work
Messaging and support, Finance and markets, Productivity

The domain it lives on

doingwork.work
registered 24 Sep 2026 (1 month ago), at Cloudflare, Inc., its home page is a working site

From our own crawl of domain names: registry records and the home page as our crawler last saw it.

Every call we made

WhenWhat happenedTime
Answered2225 ms
Answered1836 ms
Answered1356 ms

Next door

Is this your bot? Claim its address to add a verified badge and keep the listing current.