Tradify by Cotlet
REMOTE · COTLET.DEV · 2 COMPONENTS
Jobs, quotes, invoices and schedule in Tradify.
Available components
Last scanned (3 hours ago)
Scores higher than 57% of remote servers
Reachable. Last reached 24 Oct 2026.
Category CRM and Sales
How this component scores in each security and reliability category. Every signal is checked automatically against the live server, and we only credit what we can confirm. How we score → Why this is hard to score →
Endpoint Security66
- The endpoint's TLS certificate is valid, in date, and uses a strong key. View diagnostics → Pass
- Authorisation check failed: no authorisation is required to call this server, and it exposes a tool marked destructive (cotlet_browser_click). See how to fix → View diagnostics → Fail
- HTTPS is enforced; there's no plaintext access path. View diagnostics → Pass
- The HSTS (Strict-Transport-Security) header is present. View diagnostics → Pass
- DNSSEC is configured correctly; the domain's records validate against the full chain to the root. View diagnostics → Pass
Transport & Reachability100
- Verified streamable-http transport via a live MCP handshake. View diagnostics → Pass
Schema Quality & AI Usability78
- 100% of prompts and resources have a non-trivial description (not blank, and not just the item's name).Pass
- AI-judged instruction clarity (good).Pass
- Context-footprint check failed: tool/resource definitions use about 4781 tokens (~144/item across 33 items; 32 tools + 1 resources), over budget; trim descriptions and params. See how to fix → Fail
- Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management0
- Stability check failed: schema churn in the 1 day we've observed: 3 tool removals, 0 breaking changes, 0 auth/transport breaks, 0 additions. See how to fix → Fail
Tool Coverage96
- 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
- 88% of tool parameters carry a description.Partial
Tool Safety100
- No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
- All 2 tool(s) whose name or description implies an irreversible operation declare an MCP destructiveHint annotation.Pass
- An AI judge read all 34 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities100
- Implements a current MCP spec version (2026-07-28).Pass
Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.
- 24 Oct 26 −1
- Stability: unverified → fail ▼ security
- A breaking change shipped without a version bump: still 0.1.0 ▼ security
- Tool “cotlet_balance” was removed ▼ security
- Tool “cotlet_browser_connect” was removed ▼ security
- Tool “cotlet_browser_sessions” was removed ▼ security
- The server rewrote its instructions, which are the text every model session reads security
- Tool “cotlet_browser_click” rewrote its description, which is the text the model reads security
- Tool “cotlet_browser_close” rewrote its description, which is the text the model reads security
- Tool “cotlet_browser_navigate” rewrote its description, which is the text the model reads security
- Tool “cotlet_browser_open” rewrote its description, which is the text the model reads security
- Tool “cotlet_browser_press” rewrote its description, which is the text the model reads security
- Tool “cotlet_browser_read” rewrote its description, which is the text the model reads security
- Tool “cotlet_browser_screenshot” rewrote its description, which is the text the model reads security
- Tool “cotlet_browser_scroll” rewrote its description, which is the text the model reads security
- Tool “cotlet_browser_select” rewrote its description, which is the text the model reads security
- Tool “cotlet_browser_type” rewrote its description, which is the text the model reads security
- Tool “cotlet_browser_upload” rewrote its description, which is the text the model reads security
- Tool “create_customer” rewrote its description, which is the text the model reads security
- Tool “create_invoice_from_quote” rewrote its description, which is the text the model reads security
- Tool “create_job” rewrote its description, which is the text the model reads security
- Tool “create_quote” rewrote its description, which is the text the model reads security
- Tool “get_job” rewrote its description, which is the text the model reads security
- Tool “list_appointments” rewrote its description, which is the text the model reads security
- Tool “list_customers” rewrote its description, which is the text the model reads security
- Tool “list_invoices” rewrote its description, which is the text the model reads security
- Tool “list_jobs” rewrote its description, which is the text the model reads security
- Tool “list_quotes” rewrote its description, which is the text the model reads security
- Tool “record_payment” rewrote its description, which is the text the model reads security
- Tool “schedule_appointment” rewrote its description, which is the text the model reads security
- Tool “send_invoice” rewrote its description, which is the text the model reads security
- Tool “send_quote” rewrote its description, which is the text the model reads security
- Tool “update_job_status” rewrote its description, which is the text the model reads security
- Schema quality: 106 → 144 ▼ functional
- 23 Oct 26 69
First indexed and scored.
Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.
Captured 24 Oct 2026 · Probed https://cotlet.dev/mcp/v1/tradify
TLS valid
Negotiated TLS 1.3 with TLS_AES_128_GCM_SHA256 .
| Subject | Issuer | Valid from | Valid until | Key | Signature | Serial |
|---|---|---|---|---|---|---|
| CN=cotlet.dev | CN=YE1,O=Let's Encrypt,C=US | 12 Oct 2026 | 10 Jan 2027 | ECDSA 256 | ECDSA-SHA384 | 6afd7585ee8e24a40f5683c10835ec990a8 |
| SANs: *.cotlet.dev, cotlet.dev | ||||||
| CN=YE1,O=Let's Encrypt,C=US (CA) | CN=Root YE,O=ISRG,C=US | 3 Sept 2025 | 2 Sept 2028 | ECDSA 384 | ECDSA-SHA384 | 5ddd70dd31f801c85c186a7a04b80afe |
| CN=Root YE,O=ISRG,C=US (CA) | CN=ISRG Root X2,O=Internet Security Research Group,C=US | 13 May 2026 | 2 Sept 2032 | ECDSA 384 | ECDSA-SHA384 | 872165fc34b6e5fba8add5b3705fb53a |
| CN=ISRG Root X2,O=Internet Security Research Group,C=US (CA) | CN=ISRG Root X1,O=Internet Security Research Group,C=US | 13 May 2026 | 2 Sept 2032 | ECDSA 384 | SHA256-RSA | 6c8f1dc727c7117f7baf853ac980f9cd |
Background: What to check on a remote MCP endpoint →
DNSSEC secure
Validation of cotlet.dev. — Secure
| Zone | DS | Keys | Algorithms | Outcome |
|---|---|---|---|---|
| . | trust_anchor | 20326, 38696 | 8, 8 | Verified |
| dev. | present | 60074 | 8 | Verified |
| cotlet.dev. | present | 2371 | 13 | Verified |
| cotlet.dev. | Verified address RRset verified with the apex keys |
Authentication No authorisation required
The endpoint answered without asking for a token. Anyone who knows the URL can reach it.
| Result | No authorisation required |
|---|---|
| HTTP status | 200 |
| Header | Value |
|---|---|
| strict-transport-security | max-age=31536000; includeSubDomains |
| x-content-type-options | nosniff |
Background: How OAuth 2.1 works in the 2026 MCP spec →
Transports 2 probes
| Transport | URL | Outcome | Status | Location |
|---|---|---|---|---|
| streamable-http | https://cotlet.dev/mcp/v1/tradify | Verified | 200 | |
| http (plaintext) | http://cotlet.dev/mcp/v1/tradify | HTTPS enforced | 301 | https://cotlet.dev/mcp/v1/tradify |
The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability. A tool's description is untrusted text the model reads on every call, which is what makes this list a security surface and not just an inventory: how tool poisoning works →
cotlet_apps Cotlet: apps I can use ~89
The apps of the user's workspace and whether each works now: access granted or requested, the app account in the user's Cloud Browser (connected, signed out, not enabled for agents), and the one step the user has to take, with the console link. Free. Needs the user's Cotlet API key or sign-in.
| Name | Type | Req | Description |
|---|---|---|---|
| app | string | – | Only this app, e.g. skool. |
No output schema declared.
No examples provided.
cotlet_browser_click Click on the page ~120
Clicks a link, button or other element of the current page in the user's Tradify Cloud Browser, by its number in the page's element list, and returns the URL and title after the click. It acts as the user on that site. Buttons that pay or buy and buttons on account or sign-in pages are refused. Every started minute of the session costs credits; it ends when closed or 3 minutes after the last call in the browser.
| Name | Type | Req | Description |
|---|---|---|---|
| element | integer | yes | The element's number in the element list of the current page. |
No output schema declared.
No examples provided.
cotlet_browser_close Close the browser ~45
Ends the session in the user's Tradify Cloud Browser: the browser keeps its cookies, goes to sleep and the per-minute charge stops. Returns the session's minutes and credits.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
cotlet_browser_navigate Go to a page ~99
Opens a public http or https address in the user's Tradify Cloud Browser and returns the URL and title it ended on. Only Tradify pages open. Every started minute of the session costs credits; it ends when closed or 3 minutes after the last call in the browser.
| Name | Type | Req | Description |
|---|---|---|---|
| url | string | yes | A public http or https address, e.g. https://example.com. In an app's browser, a page of that app. |
No output schema declared.
No examples provided.
cotlet_browser_open Open the browser ~128
Wakes the user's Tradify Cloud Browser, a real Chrome hosted on Cotlet and signed in to Tradify as the user. Use it for what the Tradify tools do not cover. Opens `url` when given and returns the page's URL and title. The user watches every step live. Every started minute of the session costs credits; it ends when closed or 3 minutes after the last call in the browser.
| Name | Type | Req | Description |
|---|---|---|---|
| url | string | – | A public http or https address, e.g. https://example.com. In an app's browser, a page of that app. |
No output schema declared.
No examples provided.
cotlet_browser_press Press a key ~109
Presses one key on the current page in the user's Tradify Cloud Browser, on the element that has focus: Tab to the next field, Enter to send, Escape to close a dialog or pop-up, arrows to move through a suggestion list. Returns the URL and title after it. Enter on account pages is refused. Every started minute of the session costs credits; it ends when closed or 3 minutes after the last call in the browser.
| Name | Type | Req | Description |
|---|---|---|---|
| key | string | yes | The key. |
No output schema declared.
No examples provided.
cotlet_browser_read Read the page ~98
Returns the current page of the user's Tradify Cloud Browser: its readable text, up to 20,000 characters, and a numbered list of its links, buttons and fields. Field values, cookies and storage are never returned. On a page longer than that, both start near where it is scrolled to. Every started minute of the session costs credits; it ends when closed or 3 minutes after the last call in the browser.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
cotlet_browser_screenshot See the page ~76
Returns a JPEG image of the visible part of the current page in the user's Tradify Cloud Browser, with its URL and title: boards, canvases and layouts that the page text does not show. Every started minute of the session costs credits; it ends when closed or 3 minutes after the last call in the browser.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
cotlet_browser_scroll Scroll the page ~176
Scrolls the current page in the user's Tradify Cloud Browser with the mouse wheel, as a person does: down or up by `screens` viewport heights (default 0.8), to the top or the bottom, or until element `element` is in view. Content that loads on scroll appears, and the next read lists it. Returns the URL, title and scroll position (at_top, at_bottom). Every started minute of the session costs credits; it ends when closed or 3 minutes after the last call in the browser.
| Name | Type | Req | Description |
|---|---|---|---|
| direction | string | – | Where to scroll. Default: down. |
| element | integer | – | Scroll until this element of the element list is in view. |
| screens | number | – | How far, in viewport heights, for down and up. Default: 0.8. |
No output schema declared.
No examples provided.
cotlet_browser_select Choose from a list ~123
Chooses an option of a drop-down list on the current page in the user's Tradify Cloud Browser, by the list's number in the element list and the option's label as read lists it (or its value). Returns the URL and title after it. Card fields and account pages are refused. Every started minute of the session costs credits; it ends when closed or 3 minutes after the last call in the browser.
| Name | Type | Req | Description |
|---|---|---|---|
| element | integer | yes | The element's number in the element list of the current page. |
| option | string | yes | The option. |
No output schema declared.
No examples provided.
cotlet_browser_type Type on the page ~149
Types text into a field of the current page in the user's Tradify Cloud Browser, by the field's number in the page's element list, and with `submit` presses Enter. Returns the URL and title after it. Password, card and one-time code fields and sign-in pages are refused: the user fills those in themselves. Every started minute of the session costs credits; it ends when closed or 3 minutes after the last call in the browser.
| Name | Type | Req | Description |
|---|---|---|---|
| element | integer | yes | The element's number in the element list of the current page. |
| submit | boolean | – | Press Enter after typing, e.g. to search. |
| text | string | yes | The text to type. |
No output schema declared.
No examples provided.
cotlet_browser_upload Upload a file ~152
Puts files into a file field of the current page in the user's Tradify Cloud Browser, or into the file picker that an upload button opens, by its number in the element list. A file is given as {"url": "https://..."} for a file online or {"file_id": "..."} for one uploaded to Cotlet first; up to 10 files, 20 MB each. Returns the URL and title after it. Every started minute of the session costs credits; it ends when closed or 3 minutes after the last call in the browser.
| Name | Type | Req | Description |
|---|---|---|---|
| element | integer | yes | The element's number in the element list of the current page. |
| files | array | yes | The files. |
No output schema declared.
No examples provided.
cotlet_get_call Cotlet: check a call ~76
Status of an earlier Cotlet call, by its call_id: pending (waits for the owner's approval in the Cotlet console), approved, running, success, rejected, expired, blocked or failed. For a call that answered with status pending or running.
| Name | Type | Req | Description |
|---|---|---|---|
| call_id | string | yes | call_id from the earlier call |
No output schema declared.
No examples provided.
cotlet_report_issue Cotlet: report a bug or a missing feature ~276
Sends a report straight to the Cotlet team: a tool that failed or returned wrong data, an error you could not get past, or a tool, field or app the task needed and Cotlet lacks. The report carries the error text and call_id when there is one, never passwords or tokens. Needs the user's Cotlet API key or sign-in.
| Name | Type | Req | Description |
|---|---|---|---|
| app | – | – | App slug the report is about, e.g. 'skool'. |
| call_id | – | – | call_id of the call that went wrong, if any. |
| client | – | – | Agent or tool sending this, e.g. 'Claude Code'. |
| description | string | yes | What you tried, what you expected and what happened, with the error text if there was one. No passwords, tokens or other secrets. |
| kind | string | yes | bug: a tool did the wrong thing or returned wrong data. error: a call failed or returned an error you could not get past. feature_request: something new the user wants. missing_feature: an app is her… |
| title | string | yes | One line, e.g. 'skool_list_members stops after 50 members'. |
| tool | – | – | Tool or endpoint name, e.g. 'skool_list_members'. |
No output schema declared.
No examples provided.
cotlet_request_apps Cotlet: request access to apps ~102
Requests access to apps for the user's workspace, as Request access in the console: a live app is granted at once, any other goes to the Cotlet team, who answer within 72 hours. Takes app slugs as listed at https://cotlet.dev/api/v1/apps. Free. Needs the user's Cotlet API key or sign-in.
| Name | Type | Req | Description |
|---|---|---|---|
| apps | array | yes | App slugs, e.g. ["skool", "substack"]. |
No output schema declared.
No examples provided.
cotlet_upload_file Cotlet: upload a file for a tool ~115
Returns a one-time upload_url and a file_id for a local file (an image for a post, an attachment). The file is sent to upload_url with an HTTP PUT; an argument that takes a file accepts {"file_id": "..."}. Up to 25 MB, the URL works once. Free. Needs the user's Cotlet API key or sign-in.
| Name | Type | Req | Description |
|---|---|---|---|
| content_type | string | – | MIME type, e.g. image/jpeg. |
| name | string | – | File name, e.g. photo.jpg. |
No output schema declared.
No examples provided.
cotlet_whoami Cotlet: who am I ~63
The Cotlet account this connection acts as: email, workspace, access status, the API key or OAuth client in use with its scope, the apps the workspace may call and its credit balance. Free. Needs the user's Cotlet API key or sign-in.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
create_customer Create customer ~159
New customer profile, optionally with contact details and a physical address. Creates an active customer with the company's default price group, document theme and tax settings, as the New Customer form does. email may hold several addresses separated by commas; quotes and invoices go there. It reaches no one and stays inside Tradify.
| Name | Type | Req | Description |
|---|---|---|---|
| address | string | – | Street address. |
| city | string | – | – |
| contact | string | – | Contact person. Default: the name. |
| string | – | Email for quotes and invoices; commas for more. | |
| mobile | string | – | – |
| name | string | yes | Customer or company name. |
| phone | string | – | – |
| postal_code | string | – | – |
| state | string | – | State or region. |
No output schema declared.
No examples provided.
create_invoice_from_quote Create invoice from quote ~214
Draft invoice from an approved or accepted quote, for all of it or part of it. Creates a draft invoice from a quote, as Create Invoice > From Quote does, linked to the quote and its job. mode entire copies every line; line_items copies the lines at the positions in lines; percentage invoices amount percent of the quote total; fixed_amount invoices amount (with tax); remaining invoices what the quote's earlier invoices did not. A part is one line at the quote's tax rate. Due date follows the customer's or your payment terms. The invoice stays a draft until send_invoice. Needs a plan with progress invoicing (Pro) for the part modes.
| Name | Type | Req | Description |
|---|---|---|---|
| amount | number | – | percentage: percent of the quote total (e.g. 50). fixed_amount: amount with tax. |
| lines | array | – | line_items: positions of the quote's lines to invoice, 1 for the first. |
| mode | string | yes | – |
| quote_id | string | yes | Quote ID from list_quotes. |
No output schema declared.
No examples provided.
create_job Create job ~158
New job for a customer. It starts as Unassigned. Creates a job for a customer, as New Job does, and Tradify gives it the next job number. It starts Unassigned; schedule_appointment books staff on it. Contact, phone and site address default to the customer's. It reaches no one and stays inside Tradify.
| Name | Type | Req | Description |
|---|---|---|---|
| contact | string | – | Job contact. Default: the customer's. |
| contact_phone | string | – | Default: the customer's phone. |
| customer_id | string | yes | From list_customers or create_customer. |
| description | string | yes | What the work is. |
| reference | string | – | Your reference, e.g. a PO number. |
| site_address | string | – | Default: the customer's address. |
No output schema declared.
No examples provided.
create_quote Create quote ~224
Draft quote with line items. Nothing is sent until you call send_quote. Creates a draft quote for a customer, as New Quote does. Each line is misc (description, quantity, unit_price) or time (hours at a billing rate; the price comes from the customer's price group unless unit_price is given). Tax uses the default rate, or tax_rate by name; amounts, tax and totals are worked out as Tradify does. job_id links it to a job of the same customer. Expiry defaults to your expiry days setting. Price list items and kits are not supported yet. The quote stays a draft until send_quote.
| Name | Type | Req | Description |
|---|---|---|---|
| customer_id | string | yes | From list_customers or create_customer. |
| description | string | – | Shown on the quote. |
| expiry_date | string | – | Default: your expiry days setting. |
| job_id | string | – | Link the quote to this customer's job (list_jobs). |
| line_items | array | yes | – |
| reference | string | – | Customer reference. |
| tax_inclusive | boolean | – | Prices include tax. |
No output schema declared.
No examples provided.
get_job Get job ~106
Full job: description, site, tasks, notes, appointments, costs, linked quotes and invoices. Returns one job: customer, contact, site address, status, reference and description, the staff on it, its tasks and notes, the Scheduler appointments (times with the company's UTC offset), the costs logged on it (products and misc costs) and the quotes and invoices linked to it. Read it before changing a job.
| Name | Type | Req | Description |
|---|---|---|---|
| job_id | string | yes | Job ID from list_jobs. |
No output schema declared.
No examples provided.
list_appointments List appointments ~136
Scheduler appointments in a date range, with staff, job, times and notes. Returns the Scheduler's job appointments that fall between from and to (both days included, at most 31 days), each with its job, customer, staff member, start and end (ISO 8601 with the company's UTC offset), notes and status (accepted, unconfirmed, declined, cancelled). staff keeps only those people, by full name.
| Name | Type | Req | Description |
|---|---|---|---|
| from | string | yes | First day. |
| staff | array | – | Only these staff members, by full name. |
| to | string | yes | Last day, up to 31 days after from. |
No output schema declared.
No examples provided.
list_customers List customers ~125
Customer profiles with contact details and sites. Lists customers by name with contact, email (may be a comma list), phone, mobile, physical address and sites. search matches name, contact, email or phone, so use it to find the customer_id before creating a job or quote. archived lists archived customers instead. Pass next_cursor back as cursor.
| Name | Type | Req | Description |
|---|---|---|---|
| archived | boolean | – | List archived customers instead. |
| cursor | string | – | next_cursor from the previous call. |
| limit | integer | – | – |
| search | string | – | Matches name, contact, email or phone. |
No output schema declared.
No examples provided.
list_invoices List invoices ~185
Invoices with customer, job, due date, total, amount paid and amount due. Lists invoices, newest first, with customer, jobs, invoice and due dates, total, paid and due (total minus payments and credits). status approved (default) is every approved invoice not fully paid; overdue is the ones past their due date; paid, draft, cancelled and all as named. customer_id lists that customer's invoices, and status then filters the page you get. Pass next_cursor back as cursor.
| Name | Type | Req | Description |
|---|---|---|---|
| cursor | string | – | next_cursor from the previous call. |
| customer_id | string | – | Only this customer's invoices (list_customers). |
| limit | integer | – | – |
| search | string | – | Matches number, reference or customer. |
| status | string | – | approved (sent, not fully paid; default), overdue, paid, draft, cancelled or all. |
No output schema declared.
No examples provided.
list_jobs List jobs ~175
Jobs with number, customer, site address, status and assigned staff. Lists jobs, newest number first. By default only active jobs (every status marked active, built-in or custom); status all, a built-in status or the name of a custom status narrows it. customer_id lists that customer's jobs, and status then filters the page you get. Pass next_cursor back as cursor.
| Name | Type | Req | Description |
|---|---|---|---|
| cursor | string | – | next_cursor from the previous call. |
| customer_id | string | – | Only this customer's jobs (list_customers). |
| limit | integer | – | – |
| search | string | – | Matches job number, customer or reference. |
| status | string | – | active (default), all, unassigned, assigned, scheduled, in_progress, to_invoice, on_hold, complete, cancelled or the name of a custom status. |
No output schema declared.
No examples provided.
list_quotes List quotes ~172
Quotes with customer, total, quote date, expiry date and status. Lists quotes, newest quote date first, with customer, linked job, total (with tax), quote, expiry and accepted dates and status. By default the quotes awaiting acceptance; expired is the ones awaiting acceptance past their expiry date. since keeps quotes dated on or after that day, so use status accepted with since to find what was won in a period. Pass next_cursor back as cursor.
| Name | Type | Req | Description |
|---|---|---|---|
| cursor | string | – | next_cursor from the previous call. |
| limit | integer | – | – |
| search | string | – | Matches number, reference or customer. |
| since | string | – | Only quotes dated on or after this day. |
| status | string | – | awaiting_acceptance (default), draft, accepted, expired, cancelled, declined or all. |
No output schema declared.
No examples provided.
record_payment Record payment ~175
Record a payment received against an invoice and reduce the amount due. Adds a payment you already received to an approved invoice, as Add Payment does: amount, date, method (by name, from Settings > Payment Methods) and a reference. It charges nobody and emails nobody. The amount cannot exceed what is due; paying it all marks the invoice paid. If an accounting app is connected, Tradify syncs the payment to it.
| Name | Type | Req | Description |
|---|---|---|---|
| amount | number | yes | Amount received, at most the amount due. |
| date | string | – | Payment date. Default: today. |
| invoice_id | string | yes | Invoice ID from list_invoices. |
| method | string | – | Payment method name, e.g. Bank Deposit, Cash, Credit Card. Default: Unknown. |
| reference | string | – | e.g. the check number. |
No output schema declared.
No examples provided.
schedule_appointment Schedule appointment ~226
Book a job appointment on the Scheduler for staff, optionally emailing the customer a confirmation. Books the job on the Scheduler from start to end for each staff member named (by full name; default the signed-in user), as the Scheduler does. Each staff member gets Tradify's "You've been scheduled" notice, and an Unassigned or Assigned job becomes Scheduled. email_customer also sends the customer the appointment confirmation email, with customer_message in it. By default you confirm each call, and you can switch that off for this tool. Waits for the owner's approval.
| Name | Type | Req | Description |
|---|---|---|---|
| customer_message | string | – | Extra text in that email. |
| email_customer | boolean | – | Email the customer a confirmation. |
| end | string | yes | ISO 8601; without a zone, company time. |
| job_id | string | yes | Job ID from list_jobs. |
| notes | string | – | Notes for the crew. |
| staff | array | – | Staff member names, one appointment each. Default: you. |
| start | string | yes | ISO 8601; without a zone, company time. |
No output schema declared.
No examples provided.
send_invoice Send invoice ~208
Approve the invoice and email it to the customer, with payment reminders if enabled. Approves a draft invoice (Tradify gives it its number) and emails it from Tradify with the link to view and pay it; payment reminders follow if you enabled them. Without to it goes to the customer's email. Subject and text default to your invoice email template. An approved invoice can be sent again. Tradify sends this mail only when the login has 2-Step Security set up; otherwise the call stops before approving. By default you confirm each call, and you can switch that off for this tool. Waits for the owner's approval.
| Name | Type | Req | Description |
|---|---|---|---|
| invoice_id | string | yes | Invoice ID from list_invoices or create_invoice_from_quote. |
| message | string | – | Email text. Default: your invoice template. |
| send_me_a_copy | boolean | – | – |
| subject | string | – | Default: your invoice email template. |
| to | array | – | Recipient emails. Default: the customer's email. |
No output schema declared.
No examples provided.
send_quote Send quote ~200
Approve the quote and email it to the customer with a link to accept or decline online. Approves a draft quote (it becomes awaiting acceptance) and emails it from Tradify with the link where the customer accepts or declines it online. Without to it goes to the customer's email. Subject and text default to your quote email template. An approved quote can be sent again. Tradify sends this mail only when the login has 2-Step Security set up; otherwise the call stops before approving. By default you confirm each call, and you can switch that off for this tool. Waits for the owner's approval.
| Name | Type | Req | Description |
|---|---|---|---|
| message | string | – | Email text. Default: your quote template. |
| quote_id | string | yes | Quote ID from list_quotes or create_quote. |
| send_me_a_copy | boolean | – | – |
| subject | string | – | Default: your quote email template. |
| to | array | – | Recipient emails. Default: the customer's email. |
No output schema declared.
No examples provided.
update_job_status Update job status ~137
Set a status on a job, built-in or one of your custom statuses. Sets a job's status, as Change Status on the Jobs list does: to_invoice, on_hold, complete, cancelled, the others of the built-in list, or the name of a custom status from Settings > Jobs > Job Statuses (spaces as underscores). It reaches no one, and one more call sets it back.
| Name | Type | Req | Description |
|---|---|---|---|
| job_id | string | yes | Job ID from list_jobs. |
| status | string | yes | unassigned, assigned, scheduled, in_progress, to_invoice, on_hold, complete, cancelled or the name of a custom status. |
No output schema declared.
No examples provided.
How do I install the Tradify by Cotlet MCP server?
Tradify by Cotlet is a hosted endpoint at https://cotlet.dev/mcp/v1/tradify, so there is nothing to install locally. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.
remote · cotlet.dev
claude mcp add --transport http dev-cotlet-tradify 'https://cotlet.dev/mcp/v1/tradify'
What is the Tradify by Cotlet MCP server?
Tradify by Cotlet is an MCP server listed in the public MCP registry as dev.cotlet/tradify. Jobs, quotes, invoices and schedule in Tradify. This page covers its hosted endpoint (https://cotlet.dev/mcp/v1/tradify).
Is the Tradify by Cotlet MCP server safe to use?
Tradify by Cotlet scores 68 out of 100 on VerifyMCP. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.
What tools does the Tradify by Cotlet MCP server expose?
Tradify by Cotlet exposes 32 tools: cotlet_whoami, cotlet_apps, cotlet_request_apps, cotlet_get_call, cotlet_upload_file, and 27 more. Their descriptions and schemas cost roughly 4,596 tokens of context every time the server is loaded.
Does the Tradify by Cotlet MCP server require authentication?
No. We connected to Tradify by Cotlet without credentials and it answered, so anything it exposes is reachable by anyone who knows the address.
Is the Tradify by Cotlet MCP server still maintained?
Tradify by Cotlet is still listed as active in the MCP registry. We last reached this channel on 24 October 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.