MCP tools reference

Yardbook MCP tools

14 tools for Yardbook on the Cotlet MCP server. Your agent picks them from tools/list.

MCP server
https://cotlet.dev/mcp/v1
Connects with
Your own Yardbook account (email and password, the account owner or an office user)
Integration page
Yardbook
Yardbook Endpoints
Endpoint Access Description
yardbook_list_customers read Customers and prospects with address, email, phone and balance.
yardbook_get_customer read One customer with contact details, notes, upcoming jobs, open estimates and invoices.
yardbook_list_jobs read Scheduled and completed jobs in a date range, with customer, services and assigned crew member.
yardbook_list_estimates read Estimates with customer, total and status, newest first.
yardbook_list_invoices read Invoices with customer, total, amount due, due date and status.
yardbook_get_invoice read Full invoice: line items, payments recorded and amount due.
yardbook_create_customer write Add a customer or prospect with contact details and service address.
yardbook_schedule_job write Add a one-time or recurring job to the schedule, optionally assigned to a crew member.
yardbook_complete_job write Mark a job as completed, so it can be invoiced.
yardbook_create_estimate write Draft estimate for a customer or prospect. Nothing is sent until you call send_estimate.
yardbook_send_estimate write Email an estimate to the customer with a link to approve it online.
yardbook_create_invoice write Invoice from a completed job or an approved estimate, or with your own line items. Not sent yet.
yardbook_send_invoice write Email an invoice to the customer with a link to view it.
yardbook_record_payment write Record a cash, check or other payment received against an invoice.

MCP tool yardbook_list_customers

Lists customers, prospects or both. Search matches name, address, email and phone. Balance is the amount the customer still owes on open invoices. Pass next_cursor back as cursor for the next page.

Parameters

Parameters: list_customers
NameTypeDescription
type enum customer, prospect or all. Default: customer.
search string Match on name, address, email or phone.
limit integer 1 to 200. Default: 50.
cursor string Next page cursor from the previous call.

tools/call

JSON-RPC

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "yardbook_list_customers",
    "arguments": {}
  }
}

Example response

{
  "content": [
    {
      "type": "text",
      "text": "{ ... same JSON as structuredContent ... }"
    }
  ],
  "structuredContent": {
    "customers": [
      {
        "customer_id": "284117",
        "name": "Maria Lopez",
        "type": "customer",
        "address": "18 Elm Street",
        "email": "maria@example.com",
        "phone": "555-0142",
        "balance": "0.00"
      },
      {
        "customer_id": "284230",
        "name": "Parker Property",
        "type": "customer",
        "address": "7 Ridge Road",
        "email": "office@parker.example.com",
        "phone": "555-0177",
        "balance": "240.00"
      }
    ],
    "next_cursor": null
  },
  "isError": false
}

MCP tool yardbook_get_customer

Returns one customer with contact details and property notes, plus their upcoming jobs, open estimates and unpaid invoices. Use it before scheduling or billing so your agent sees what is already there.

Parameters

Parameters: get_customer
NameTypeDescription
customer_id required string Customer ID from list_customers.

tools/call

JSON-RPC

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "yardbook_get_customer",
    "arguments": {
      "customer_id": "customer_8c41d2"
    }
  }
}

Example response

{
  "content": [
    {
      "type": "text",
      "text": "{ ... same JSON as structuredContent ... }"
    }
  ],
  "structuredContent": {
    "customer_id": "284117",
    "name": "Maria Lopez",
    "type": "customer",
    "address": "18 Elm Street",
    "notes": "Side gate code 1234. Dog in yard.",
    "upcoming_jobs": [
      {
        "job_id": "9930412",
        "date": "2026-10-13",
        "services": [
          "Mowing",
          "Edging"
        ]
      }
    ],
    "open_estimates": [],
    "unpaid_invoices": []
  },
  "isError": false
}

List jobs

read

MCP tool yardbook_list_jobs

Lists jobs between two dates, oldest first, with customer, services and the crew member each job is assigned to. Filter by status, crew member or customer. Recurring jobs appear as one entry per visit in the range.

Parameters

Parameters: list_jobs
NameTypeDescription
from required date First day of the range.
to required date Last day of the range.
status enum scheduled, completed or all. Default: all.
assignee_id string Only jobs assigned to this crew member.
customer_id string Only jobs for this customer.

tools/call

JSON-RPC

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "yardbook_list_jobs",
    "arguments": {
      "from": "2026-10-01",
      "to": "2026-10-01"
    }
  }
}

Example response

{
  "content": [
    {
      "type": "text",
      "text": "{ ... same JSON as structuredContent ... }"
    }
  ],
  "structuredContent": {
    "jobs": [
      {
        "job_id": "9930412",
        "date": "2026-10-13",
        "customer_id": "284117",
        "customer": "Maria Lopez",
        "services": [
          "Mowing",
          "Edging"
        ],
        "status": "scheduled",
        "assignee": "Crew 1"
      },
      {
        "job_id": "9930455",
        "date": "2026-10-13",
        "customer_id": "284230",
        "customer": "Parker Property",
        "services": [
          "Spring cleanup"
        ],
        "status": "scheduled",
        "assignee": "Crew 2"
      }
    ]
  },
  "isError": false
}

MCP tool yardbook_list_estimates

Lists estimates newest first with customer, total and status. Draft estimates have not been sent. Approved estimates can be turned into an invoice with create_invoice.

Parameters

Parameters: list_estimates
NameTypeDescription
status enum draft, sent, approved or all. Default: all.
customer_id string Only estimates for this customer.
limit integer 1 to 100. Default: 50.

tools/call

JSON-RPC

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "yardbook_list_estimates",
    "arguments": {}
  }
}

Example response

{
  "content": [
    {
      "type": "text",
      "text": "{ ... same JSON as structuredContent ... }"
    }
  ],
  "structuredContent": {
    "estimates": [
      {
        "estimate_id": "51802",
        "customer_id": "284230",
        "customer": "Parker Property",
        "total": "490.00",
        "status": "draft",
        "created_at": "2026-10-09"
      }
    ]
  },
  "isError": false
}

MCP tool yardbook_list_invoices

Lists invoices newest first. Status defaults to unpaid. Amount due is the total minus the payments recorded. older_than_days keeps invoices issued at least that many days ago, which is how you find overdue ones.

Parameters

Parameters: list_invoices
NameTypeDescription
status enum unpaid, paid or all. Default: unpaid.
customer_id string Only invoices for this customer.
older_than_days integer Only invoices issued at least this many days ago.
limit integer 1 to 100. Default: 50.

tools/call

JSON-RPC

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "yardbook_list_invoices",
    "arguments": {}
  }
}

Example response

{
  "content": [
    {
      "type": "text",
      "text": "{ ... same JSON as structuredContent ... }"
    }
  ],
  "structuredContent": {
    "invoices": [
      {
        "invoice_id": "73194",
        "customer_id": "284230",
        "customer": "Parker Property",
        "issued_at": "2026-09-02",
        "due_date": "2026-09-16",
        "total": "240.00",
        "amount_due": "240.00",
        "status": "unpaid"
      }
    ]
  },
  "isError": false
}

MCP tool yardbook_get_invoice

Returns one invoice with every line item, the payments recorded against it and the amount due. Use it to check an invoice before sending it or recording a payment.

Parameters

Parameters: get_invoice
NameTypeDescription
invoice_id required string Invoice ID from list_invoices.

tools/call

JSON-RPC

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "yardbook_get_invoice",
    "arguments": {
      "invoice_id": "invoice_8c41d2"
    }
  }
}

Example response

{
  "content": [
    {
      "type": "text",
      "text": "{ ... same JSON as structuredContent ... }"
    }
  ],
  "structuredContent": {
    "invoice_id": "73194",
    "customer": "Parker Property",
    "status": "unpaid",
    "line_items": [
      {
        "service": "Mowing",
        "description": "Weekly mowing, September",
        "quantity": 4,
        "unit_price": "60.00"
      }
    ],
    "total": "240.00",
    "payments": [],
    "amount_due": "240.00"
  },
  "isError": false
}

MCP tool yardbook_create_customer

Adds a customer, or a prospect if type is prospect, with the service address and contact details. It reaches no one and changes only your customer list, so it runs without asking for your OK.

Parameters

Parameters: create_customer
NameTypeDescription
name required string Customer or company name.
address required string Service address.
email string Email for estimates and invoices.
phone string Phone number.
type enum customer or prospect. Default: customer.
notes string Gate codes, pets, property notes.

tools/call

JSON-RPC

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "yardbook_create_customer",
    "arguments": {
      "name": "Jane Doe",
      "address": "address"
    }
  }
}

Example response

{
  "content": [
    {
      "type": "text",
      "text": "{ ... same JSON as structuredContent ... }"
    }
  ],
  "structuredContent": {
    "customer_id": "284117",
    "name": "Maria Lopez",
    "type": "customer",
    "address": "18 Elm Street"
  },
  "isError": false
}

Schedule job

write

MCP tool yardbook_schedule_job

Adds a job for a customer on the date of the first visit. With repeat set to weekly or biweekly it creates a recurring job. Services are names from your product and service catalog. It sends nothing to the customer, so it runs without asking for your OK.

Parameters

Parameters: schedule_job
NameTypeDescription
customer_id required string Customer ID from list_customers.
date required date Date of the first visit.
services required string[] Services from your product catalog, e.g. Mowing.
repeat enum none, weekly or biweekly. Default: none.
assignee_id string Crew member to assign.
notes string Instructions for the crew.

tools/call

JSON-RPC

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "yardbook_schedule_job",
    "arguments": {
      "customer_id": "284117",
      "date": "2026-10-13",
      "services": [
        "Mowing",
        "Edging"
      ],
      "repeat": "weekly",
      "assignee_id": "5521",
      "notes": "Side gate code 1234. Bag clippings."
    }
  }
}

Example response

{
  "content": [
    {
      "type": "text",
      "text": "{ ... same JSON as structuredContent ... }"
    }
  ],
  "structuredContent": {
    "job_id": "9930412",
    "customer_id": "284117",
    "date": "2026-10-13",
    "repeat": "weekly",
    "status": "scheduled",
    "services": [
      "Mowing",
      "Edging"
    ],
    "assignee": "Crew 1"
  },
  "isError": false
}

Complete job

write

MCP tool yardbook_complete_job

Marks one job completed, with optional notes on what was done. A completed job can be passed to create_invoice. It sends nothing to the customer, so it runs without asking for your OK.

Parameters

Parameters: complete_job
NameTypeDescription
job_id required string Job ID from list_jobs.
notes string What was done on site.

tools/call

JSON-RPC

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "yardbook_complete_job",
    "arguments": {
      "job_id": "job_8c41d2"
    }
  }
}

Example response

{
  "content": [
    {
      "type": "text",
      "text": "{ ... same JSON as structuredContent ... }"
    }
  ],
  "structuredContent": {
    "job_id": "9930412",
    "status": "completed",
    "notes": "Mowed and edged, bagged clippings."
  },
  "isError": false
}

MCP tool yardbook_create_estimate

Saves a draft estimate with your line items. The total is the sum of quantity times unit_price over all lines. Nothing is sent to the customer until send_estimate, so the draft runs without asking for your OK.

Parameters

Parameters: create_estimate
NameTypeDescription
customer_id required string Customer ID from list_customers.
line_items required object[] List of { service, description, quantity, unit_price }.
description string Scope of work shown on the estimate.

tools/call

JSON-RPC

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "yardbook_create_estimate",
    "arguments": {
      "customer_id": "284230",
      "description": "Spring cleanup, mulch and shrub trimming",
      "line_items": [
        {
          "service": "Spring cleanup",
          "description": "Leaf removal and cleanup of all beds",
          "quantity": 1,
          "unit_price": "220.00"
        },
        {
          "service": "Mulch",
          "description": "Hardwood mulch, installed",
          "quantity": 6,
          "unit_price": "45.00"
        },
        {
          "service": "Shrub trimming",
          "description": "Boxwoods along the walk",
          "quantity": 4,
          "unit_price": "15.00"
        }
      ]
    }
  }
}

Example response

{
  "content": [
    {
      "type": "text",
      "text": "{ ... same JSON as structuredContent ... }"
    }
  ],
  "structuredContent": {
    "estimate_id": "51802",
    "customer_id": "284117",
    "status": "draft",
    "line_items": [
      {
        "service": "Spring cleanup",
        "quantity": 1,
        "unit_price": "220.00",
        "amount": "220.00"
      },
      {
        "service": "Mulch",
        "quantity": 6,
        "unit_price": "45.00",
        "amount": "270.00"
      }
    ],
    "total": "490.00"
  },
  "isError": false
}

Send estimate

write Confirm

MCP tool yardbook_send_estimate

Emails a draft estimate to the customer, with your optional note and a link to approve it online. The customer needs an email address on file. By default you confirm each call; you can switch that off for this tool.

Parameters

Parameters: send_estimate
NameTypeDescription
estimate_id required string Estimate ID from list_estimates.
message string Note added to the email.

tools/call

JSON-RPC

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "yardbook_send_estimate",
    "arguments": {
      "estimate_id": "estimate_8c41d2"
    }
  }
}

Example response

{
  "content": [
    {
      "type": "text",
      "text": "{ ... same JSON as structuredContent ... }"
    }
  ],
  "structuredContent": {
    "estimate_id": "51802",
    "status": "sent",
    "sent_to": "maria@example.com"
  },
  "isError": false
}

MCP tool yardbook_create_invoice

Creates an invoice from a completed job, from an approved estimate, or from line items you pass. It is saved unsent; send_invoice emails it. It reaches no one, so it runs without asking for your OK.

Parameters

Parameters: create_invoice
NameTypeDescription
customer_id required string Customer ID from list_customers.
job_id string Completed job to invoice.
estimate_id string Approved estimate to convert.
line_items object[] List of { service, description, quantity, unit_price }, when there is no job or estimate.
due_date date Payment due date.

tools/call

JSON-RPC

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "yardbook_create_invoice",
    "arguments": {
      "customer_id": "customer_8c41d2"
    }
  }
}

Example response

{
  "content": [
    {
      "type": "text",
      "text": "{ ... same JSON as structuredContent ... }"
    }
  ],
  "structuredContent": {
    "invoice_id": "73210",
    "customer_id": "284117",
    "job_id": "9930412",
    "status": "unpaid",
    "sent": false,
    "total": "85.00",
    "amount_due": "85.00",
    "due_date": "2026-10-27"
  },
  "isError": false
}

Send invoice

write Confirm

MCP tool yardbook_send_invoice

Emails an invoice to the customer, with your optional note, for example a reminder on an overdue one. The customer needs an email address on file. By default you confirm each call; you can switch that off for this tool.

Parameters

Parameters: send_invoice
NameTypeDescription
invoice_id required string Invoice ID from list_invoices.
message string Note added to the email, e.g. a reminder.

tools/call

JSON-RPC

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "yardbook_send_invoice",
    "arguments": {
      "invoice_id": "invoice_8c41d2"
    }
  }
}

Example response

{
  "content": [
    {
      "type": "text",
      "text": "{ ... same JSON as structuredContent ... }"
    }
  ],
  "structuredContent": {
    "invoice_id": "73194",
    "status": "unpaid",
    "sent_to": "office@parker.example.com"
  },
  "isError": false
}

Record payment

write Confirm

MCP tool yardbook_record_payment

Records a payment you received against one invoice. The amount due goes down by the amount; an invoice paid in full becomes paid. It moves no money and charges no card. By default you confirm each call; you can switch that off for this tool.

Parameters

Parameters: record_payment
NameTypeDescription
invoice_id required string Invoice ID from list_invoices.
amount required string Amount received, e.g. 240.00.
method required string How it was paid, e.g. Check or Cash.
date date Date received. Default: today.
reference string Check number or note.

tools/call

JSON-RPC

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "yardbook_record_payment",
    "arguments": {
      "invoice_id": "73194",
      "amount": "240.00",
      "method": "Check",
      "date": "2026-10-16",
      "reference": "Check 3318"
    }
  }
}

Example response

{
  "content": [
    {
      "type": "text",
      "text": "{ ... same JSON as structuredContent ... }"
    }
  ],
  "structuredContent": {
    "invoice_id": "73194",
    "payment": {
      "amount": "240.00",
      "method": "Check",
      "date": "2026-10-11",
      "reference": "Check 3318"
    },
    "amount_due": "0.00",
    "status": "paid"
  },
  "isError": false
}