NestDaddy

Field Service Business Platform by Doing Work

work.doingwork/shop · v1.0.1

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

Connect Remote server

Terminal
claude mcp add --transport http shop https://doingwork.work/mcp
~/.cursor/mcp.json
{
  "mcpServers": {
    "shop": {
      "url": "https://doingwork.work/mcp"
    }
  }
}
.vscode/mcp.json
{
  "servers": {
    "shop": {
      "type": "http",
      "url": "https://doingwork.work/mcp"
    }
  }
}
Claude Desktop
Settings > Connectors > Add custom connector
URL: https://doingwork.work/mcp

Tools 80 found in our last check

  • auth_requestLink

    Email a one-time sign-in link. Always answers ok, so it never reveals whether an email has an account.

  • auth_sendLink

    Email 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, resum…

  • auth_oauthRegister

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

  • 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.

  • 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 cl…

  • me_get

    The signed-in person. Call me.start for shops, what this connection can do, and the next tasks.

  • me_start

    Start here. Shops this connection can use, the grant in plain words, counts, and the next tasks for the state of each shop.

  • me_shops

    Shops the signed-in person belongs to right now, with their role. A shop key gets only the one shop that key is bound to.

  • shops_create

    Create a shop. The caller becomes its one owner. The caller must already have accepted the current Terms and Privacy, once for their account, which covers every shop. Until then this call is refused and names /p/legal. On the sign-up page, one checkbox records both current versi…

  • members_invite

    Invite a person by email as office, lead or field. Owners and office can invite. A lead cannot. The invite link works once. Shop roles are owner, office, lead and field.

  • 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 offic…

  • 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).…

  • members_accept

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

  • members_list

    Current members of a shop with role and start date. Role is owner, office, lead or field.

  • 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.

  • members_changeRole

    Owner changes a worker among office, lead and field. The old membership ends and a new one starts, so history keeps both. Shop roles are owner, office, lead and field.

  • jobs_create

    Start a job at a home, found or created from the address: address is an object, not a string, with required line1, locality, postal_code and jurisdiction (line2 is optional; jurisdiction is an ISO 3166-2 code like US-ID, and a US shop also accepts ID, id, or Idaho), for example…

  • jobs_list

    Jobs of a shop you belong to, newest first. A field worker sees only jobs with a visit they are assigned to. A lead also sees jobs their crew is on. Another shop is refused, including a shop token pointed at a different shop. Optional status filter. Shop roles are owner, office,…

  • jobs_get

    One job with its home address and, when it was converted from a request, that request. A field worker gets not found unless they are assigned to a visit on it. A lead also gets a job their crew is on. Notes on the job are notes_list and notes_add (target_kind job, target_id this…

  • 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 what you se…

  • 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 h…

  • 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.

  • 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),…

  • jobs_requestConfirmation

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

  • 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…

  • 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.

  • quotes_create

    Create a quote (AI can draft lines; a person who can send quotes approves agent-drafted lines before the quote is sent). Optional: good, better, best options and optional lines the customer picks when signing.

  • quotes_send

    Lock the quote and get a single-use signing link for the customer (the customer signs on the hosted page; an agent cannot sign or accept a quote). Who may send is shops.sendPermissions: the owner always may, office for any job, a lead for jobs on their crew, and a field worker f…

  • quotes_revise

    Pass the COMPLETE new line list; any line you omit is removed. Replace an unsigned quote with a new version. Earlier signing links stop working; send it again for a new link.

  • 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.

  • quotes_get

    One customer quote in this shop: doc_no and doc_label (Q-12), status, every version with its lines and totals, the job and customer, when it was sent and viewed, and the signer name and signed time once someone has signed. Read only. This is a quote, not an AI line draft (that i…

  • quotes_list

    Customer quotes in one shop, newest first. Filter by job_id, status, or both. Read only. Send shop_id or job_id. A shop you are not a member of is refused, and a job you cannot access is not found.

  • 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.

  • 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.

  • payments_connectLink

    Owner only: the link to the shop's payment setup page. Give it to the owner; they open it, sign in, and press one button to set up card and bank payments with Stripe. Nothing starts until they do. status is none, onboarding, active, restricted or settling_only.

  • invoices_createFromQuote

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

  • invoices_send

    Send an invoice (or the next part of it) and get a single-use pay link. Who may send is shops.sendPermissions: the owner always may, office for any job, a lead for jobs on their crew, and a field worker for jobs assigned to them, until the owner turns that off. Lines an agent dr…

  • 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…

  • invoices_refund

    Refund part or all of a payment (owner or office, or their agent). The reply says requested. Confirmation arrives shortly, and invoices.get is where the confirmed refund shows. An agent refund above the shop's agent refund cap (shops.setAgentMoney, $250 unless the owner changed…

  • fees_schedule

    Doing Work's fee: the first $1,000 of payments each calendar month is free, then 0.5%, never more than $149 per owner per month. No subscription. The fee comes out of the payment.

  • fees_preview

    What Doing Work would keep on a payment of this size right now, the effective rate on it, and the owner's payment total so far this month (owner or office). Leave out amount_minor for just the month picture. The checkout may ask Stripe to hold more, then return the difference wh…

  • fees_statement

    A month's Doing Work fees for a shop: payments, fees by kind, the effective rate, and each line (owner or office). volume_minor is the owner's month total the fee was based on, the same number fees.preview returns as month_volume_minor for this month. Refunds do not lower that t…

  • records_keys

    Public keys that verify signed job records.

  • jobs_record

    The latest signed record for a job and its level (logged, paid, verified). When the job has none yet, record is null and reason says so.

  • 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.

  • webhooks_list

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

  • webhooks_delete

    Remove a webhook endpoint. Pending deliveries to it stop.

  • audit_list

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

  • platforms_create

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

  • platforms_list

    List the platform accounts this person owns and the shops each one manages: a person OAuth grant is not bound to one shop and gets that list, empty when they own none, and a shop-bound token (a named agent key or a dws_ shop token) is refused and should call me.shops.

  • platforms_revokeManage

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

  • customers_create

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

  • customers_get

    One customer with contacts, properties, custom fields and open balance. A field worker gets not found unless the customer has a job they are assigned to. open_balance_minor is null when see_prices is off.

  • customers_list

    Customers of a shop, newest first, filtered by tag, lead source or archived. A field worker sees only customers on a job they are assigned to.

  • customers_search

    Find customers by name, company, email, phone or property address.

  • customers_update

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

  • customers_archive

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

  • customers_duplicates

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

  • customers_merge

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

  • customers_contactAdd

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

  • customers_contactUpdate

    Change or remove one contact of a customer.

  • properties_add

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

  • properties_list

    Service addresses saved on a customer (properties_add, or jobs_create when you pass customer_id); a job with no customer keeps its address on jobs_get and is not listed here.

  • properties_update

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

  • equipment_add

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

  • equipment_list

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

  • equipment_update

    Change or archive an equipment record.

  • jobs_setTags

    Set the tags and lead source on a job.

  • customers_timeline

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

  • customers_statement

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

  • customers_privacyExport

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

  • fields_define

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

  • fields_list

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

  • fields_set

    Set 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).

  • fields_get

    Custom 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.

  • requests_create

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

  • requests_list

    Requests of a shop, newest first, filtered by stage, customer or tag. A field worker sees a request only when they are assigned to a visit on its job.

  • requests_pipeline

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

  • requests_get

    One request with its customer and the job it became. A field worker gets not found unless they are assigned to a visit on that job.

  • requests_update

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

Details

Endpointhttps://doingwork.work/mcp (Streamable HTTP)
First published1 Nov 2026
Last updated1 Nov 2026
Registry namework.doingwork/shop

More finance and crypto servers See all

Listing data from the official MCP registry. Status and tools from NestDaddy's daily check. Browse all MCP servers.