Available MCP Tools
The Booked55 MCP server exposes 71 tools, covering contacts, contact import, companies, events, tasks, notes, pipelines, deals, email templates, campaigns, sequences and newsletters. Each one can be invoked by any MCP-compatible AI client, including ChatGPT and Claude. Every tool that ships is listed below, and a client always sees the current list for itself — see Tool discovery.
Contacts
list_contacts
List contacts with optional filters and pagination — by company, event, pipeline, client status, or tags. Use search_contacts instead when you have a name, email, or phone to match. Results are scoped to your organization, and to the contacts assigned to you when your org has per-user data isolation switched on.
Example prompt:
List the contacts on my main pipeline who are tagged "warm".get_contact
Retrieve a single contact by ID — the full record, including company, pipeline placement, events, meeting details, and bio. Get the ID from list_contacts or search_contacts.
Example prompt:
Show me everything on file for Jane Doe.create_contact
Create a new contact with a name and optional email, phone, role, and company. If the contact belongs to a company, create the company first using create_company. It is not idempotent, so search first — calling it twice creates two contacts. It can record that the person asked not to be called, texted or emailed (do_not_contact), and an address already on your organization's do-not-email list is created opted out of marketing email.
Example prompt:
Add a new contact: Jane Doe, [email protected], Sales Director at Acme Corp.update_contact
Update an existing contact's fields such as email, phone, roles, tags, or company association. Send only the fields you want to change; omitted fields are left alone. It can add or remove a tag. It cannot write notes — use create_note with entity_type "contact" for that. It can set a Do not call, Do not text or Do not email flag when the person asks; only an owner or manager can clear one, and the assistant never clears one on its own.
Example prompt:
Update Jane Doe's phone number to +1-555-0199.set_contact_photo
Give a contact a profile picture from a web address, or replace the one it has. The address must be an https link to a PNG, JPEG or WebP picture (up to 5 MB) that opens without signing in. Booked55 downloads it once, crops it to a square and keeps its own copy. A picture that is only a file is uploaded by the person on the contact's page, and taking a picture off is done there too.
Example prompt:
Use the headshot on Jane Doe's company page as her contact picture.search_contacts
Find contacts by name, email, phone or tag. Matches the query as a case-insensitive substring of the name, email or phone, then adds the contacts carrying a tag that is the query or has a word starting with it, and returns at most 20 matches — it cannot page, so narrow the query rather than expecting the rest. The query must be at least 2 characters.
Example prompt:
Find all contacts whose email contains "@acme.com".bulk_add_event_to_contacts
Record that several contacts attended one event. Appends the event to each contact's event_ids array, skipping any that already have it, so re-running it with the same arguments is safe.
Example prompt:
Add the "SaaS Connect Toronto" event to all contacts I met at that conference.bulk_update_contacts_pipeline
Update the pipeline and stage for multiple contacts at once. Updates existing pipeline items and creates new ones for contacts without a pipeline item.
Example prompt:
Move all contacts from the "Discovery" stage to "Proposal Sent" in my main pipeline.Contact import
get_contact_import_format
Read Booked55's contact-import CSV format: the column headers in order, what each column means, the formatting rules, and the size limit of 5,000 rows and 5 MB per file. The AI converts your spreadsheet to this format with its own tools; Booked55 does no conversion and spends no AI credits. Over OAuth it needs write:contacts, like the other two import tools.
Example prompt:
Import the contacts in this spreadsheet into Booked55.validate_contacts_csv
Check a converted CSV against the import rules without importing anything. Returns the row count, the errors that stop the import and the warnings that don't; the same problem in many rows is listed once, with the number of rows. The AI fixes its conversion and validates again until the file is valid. Needs write:contacts over OAuth.
Example prompt:
Check that file again before importing it.import_contacts_csv
Import a validated CSV — once, after the AI has shown you the row count and any warnings and you have said to go ahead. It can also place every contact in one pipeline stage, add them all to an event, or assign them to a teammate. It is not idempotent, so it is never retried automatically. A file over 5,000 rows or 5 MB is split into smaller files first, each validated and imported in turn, because the Import CSV button has the same limits. Needs write:contacts over OAuth, plus the write scope for anything else the file creates, such as companies or tasks.
Example prompt:
Go ahead and import them, all in the "New lead" stage of my main pipeline.Companies
list_companies
List the companies in your organization, with optional filtering by assignee and pagination. Use it to browse; use search_company when you have a name to match. The notes on a company payload is the body of its newest note, with note_count beside it — call list_notes for the rest.
Example prompt:
List the companies assigned to me.get_company
Retrieve a single company by its ID — name, contact details, location, industries, size, revenue, and description. The notes field carries the body of the company's newest note, with note_count beside it; call list_notes for the whole history.
Example prompt:
Get the details for company ID abc123.create_company
Create a new company record. Best practice: use search_company first to avoid duplicates, and search_company_ai if the regular search returns no results.
Example prompt:
Create a company called "TechStart Inc." in Toronto, Canada.update_company
Update an existing company's own attributes — name, contact details, location, industries, size, revenue, description. Send only the fields you want to change; omitted fields are left alone. It cannot write notes: use create_note with entity_type "company" for that. create_company still takes an opening note, because a new record has none to overwrite.
Example prompt:
Change Acme Corp's industry to Logistics and its employee range to 51-200.search_company
Find companies already in the CRM by name. Matches the query as a case-insensitive substring. Use it to resolve a company_id before creating a contact; use search_company_ai only when this returns nothing.
Example prompt:
Search for companies with "consulting" in the name.search_company_ai
AI-powered company search via Perplexity. Use when the standard search_company returns no results — this tool can find companies by alternative names, descriptions, or industry context. It creates nothing; pass what it returns to create_company. It spends your organization's LLM budget, so call it once per company rather than speculatively.
Example prompt:
Find the company that makes Slack (the messaging app).Events
list_events
List the events in your organization, each with its ID, name, date range, location, and contact_count. Useful for browsing what exists before creating something new. Use search_event instead when you already know part of the name.
Example prompt:
What events do we have on the books?get_event
Retrieve a single event by its ID — name, date range, frequency and recurrence, location, description, cost, creator, and assignee. Unlike list_events and search_event it does not include contact_count.
Example prompt:
Show me the details of the SaaS Connect Toronto event.create_event
Create a new event with a name, date, and optional location and description. Use search_event first to avoid duplicates.
Example prompt:
Create an event called "SaaS Connect Toronto" on March 15, 2026.search_event
Find events by name. Matches the query as a case-insensitive substring of the event name only — not the description or location — and ranks the matches by relevance.
Example prompt:
Search for events containing "SaaS" in the name.Tasks
list_tasks
List tasks with optional filters: contact, assignee, status, task type (activity_type), and date range. This is the tool for "what is due this week" or "what did I do with this contact". With queue set to past_meetings it lists the meetings that have ended with no outcome recorded yet, newest first, like the top of the Daily Tasks page. Every task carries a meeting_bot summary of the Booked55 notetaker for its video call, but a list never carries the transcript or the AI meeting summary — pass the task ID to get_task for those.
Example prompt:
Show me everything still open for John Smith this week.get_task
Retrieve a single task by its ID, including the linked contact and company. It is the only tool that returns meeting_summary and meeting_transcript for a recorded call, so it is the one to use for "what was said in my call with X" — read meeting_summary first, and fall back to the transcript for detail and exact quotes.
Example prompt:
Summarise my meeting with Jane Doe and list what each side agreed to do.create_task
Create a task for a contact, either planned or already done. Requires a description, a date, and a task type (activity_type). The date is scheduled exactly as given, even if it falls on a weekend or the assignee's day off. To log something that already happened, pass status "completed" together with task_result_description, which is filed as the task's first note.
Example prompt:
Log the call I just had with John Smith: he wants pricing by Friday.update_task
Update an existing task, including marking it complete by setting status to "completed" and describing the outcome in task_result_description — which is filed as a note on the task rather than stored on it. task_result_outcome, by contrast, is a real field on the task. On a task typed into Booked55, changing the date or the meeting link moves a booked notetaker with it; on a calendar-synced task the calendar decides. Nothing here starts or stops a recording — that is done in the Booked55 app.
Example prompt:
Mark the Acme follow-up call complete: they showed up and want pricing by Friday.skip_task
Skip one occurrence of a recurring pipeline follow-up: moves a task that a pipeline stage's Task Cadence created to that stage's next cadence date, which Booked55 works out, without completing it. The task stays open. Only an open, cadence-created task on a pipeline card whose stage still has Task Cadence turned on can be skipped; to move any other task, or to a date you choose, use update_task. Every call moves the task one more step. Over OAuth it needs write:tasks.
Example prompt:
Skip this week's follow-up with Dana at Acme and let the cadence pick the next one.Notes
list_notes
Read the notes on one record, newest first — a contact, company, task, deal, pipeline item, event or event attendance. Optional filters: sources (user, meeting_bot, email_sync, inbound, import, system), q to match text in the body, and limit/offset for paging. With include_related on a contact or a company, the answer also carries the notes written on the things below it — that contact's tasks, deals and pipeline card, or that company's contacts and their tasks.
Example prompt:
Show me every note on Jane Doe, including the ones from her tasks.create_note
Write a new note on a record. Takes the parent (entity_type and entity_id), the text, and an optional note_at date so an imported or backdated note lands in the right place in the history. The note records the account that wrote it and is not idempotent — calling it twice writes two notes.
Example prompt:
Add a note to Jane Doe: "Prefers a call before 10am, decision due end of quarter."update_note
Rewrite an existing note's body. Only the person who wrote the note, an owner or a manager may change it — check can_edit on the note before trying. A note cannot be moved to another record or re-dated, and no tool here deletes a note.
Example prompt:
Fix the typo in that last note about Jane Doe.Pipelines
list_pipelines
List the sales pipelines (opportunities) in your organization, in board order, each with its ID, name, description and settings. It does not return stages: pass a pipeline's ID to list_pipeline_stages for those. Takes no arguments.
Example prompt:
What pipelines do we have?list_pipeline_stages
List the stages of one pipeline in board order, each with its ID, name, whether a card entering it marks the contact as a client (markAsClient), and any automation that moves cards on. This is where the stage_id for the card tools, bulk_update_contacts_pipeline and import_contacts_csv comes from. An empty list means the pipeline has no stages yet; an ID that is not a pipeline in your organization, or was deleted, is refused with pipeline_not_found.
Example prompt:
What stages does my main pipeline have?list_client_types
List your organization's Product/Service Types — the labels for what a client bought. The AI uses one to label the deal that is created when a card enters a stage that marks the contact as a client. Read-only. Over OAuth it needs write:contacts, not read:contacts, because Booked55 gates Product/Service Types on permission to create contacts.
Example prompt:
Which products or services can I record on a deal?create_pipeline_item
Place a contact on a pipeline at a stage, creating a pipeline item (a card), with an optional value. Get the stage from list_pipeline_stages. A contact can have only one card in the organization, so a second one is refused — move the existing card with update_pipeline_item instead. A stage that marks the contact as a client also creates a deal, which needs a value. The card comes back with latest_note — the body of its newest note, which is what the board shows — and note_count.
Example prompt:
Add Acme Corp's Jane Doe to the "Qualification" stage of my main pipeline at $50,000.update_pipeline_item
Update an existing pipeline item — move it to another stage or pipeline, or change its value or status. A value is needed only when the card moves into a stage that marks the contact as a client and its saved value is not above 0 (a card saved at 0 still needs one, and sending 0 with the move is accepted). It cannot write notes: use create_note with entity_type "pipelineItem" for that, and list_notes to read the ones already there.
Example prompt:
Move the Acme Corp deal to the "Negotiation" stage.Deals
list_deals
List the closed sales (deals) in your organization — the Deals page as data, filterable by contact, assignee, Product/Service Type and date range. A deal is a closed sale, not a pipeline item: a pipeline item is a contact's position on a board and has its own id and its own tools. Results are scoped to your organization, and to the deals assigned to you when your org keeps deals private per user.
Example prompt:
List the deals I closed last month.get_deal
Retrieve one deal by ID, in full — contact, value, description of what was sold, deal date, Product/Service Type and assignee. Get the ID from list_deals or get_deals_on_date; a pipeline item's ID is a different record and will not resolve here.
Example prompt:
Show me the details of that $50,000 sale to Acme Corp.create_deal
Record a closed sale against a contact. It also marks that contact as a client, and files a thank-you follow-up task on whoever referred them. It is not idempotent, so check list_deals for that contact first — a contact moved into a pipeline client stage already has the deal that stage created.
Example prompt:
Record a $12,500 annual retainer sold to Jane Doe on March 4th.update_deal
Change a deal that is already recorded — its value, description, deal date, Product/Service Type or assignee. Send only the fields you want to change. The contact a deal belongs to cannot be changed; a deal filed against the wrong contact has to be deleted and recorded again.
Example prompt:
Change the value of the Acme Corp deal to $15,000.delete_deal
Delete a deal. This removes the sale and its value from your organization's revenue figures for everyone, and there is no undo — it is the only tool on this server that deletes a record, and it needs its own delete:deals consent over an OAuth connection. The contact stays a client and their pipeline item is untouched.
Example prompt:
Delete the duplicate deal recorded for Jane Doe on March 4th.get_deals_scoreboard
Deal counts per day over a date range — the revenue row of the Booked55 Scoreboard, split into first deals (a contact's first ever purchase) and repeat deals. Only days with at least one sale appear. Dates are YYYY-MM-DD and both are required, so resolve "last month" to explicit dates first.
Example prompt:
How many sales did we close each day last month?get_deals_on_date
The individual sales recorded on one calendar day — the deals behind a single day's figure on the scoreboard, each flagged when it is that contact's first ever purchase. Use list_deals with a start and end date for any range longer than a day.
Example prompt:
Which deals closed on March 4th?get_deal_revenue_metrics
Revenue totals for a date range in one call: total paid, deal count, how many distinct contacts bought, average per sale, and the repurchase count and rate. Use it for "how much did we close last quarter" rather than paging through list_deals.
Example prompt:
How much revenue did we close last quarter?get_contact_deal_summary
How much each of several contacts has bought — sale count and total value per contact, for up to 100 contacts in one call. Use it to rank contacts by spend, or to check whether a contact has ever bought, instead of calling list_deals once per contact. It returns no individual deals.
Example prompt:
Which of my contacts have spent the most with us?Design system
get_design_system
Read your organization's design system: the shared folder of text files (CSS, HTML, notes) that say how your emails and other branded material should look. The assistant calls it before it designs or restyles anything branded, and gets the list of files plus the running notes of what was decided before. If nothing is saved yet it says so, designs something sensible, and offers to save the look once you are happy with it.
Example prompt:
Design a welcome email that matches our brand.read_design_system_files
Read the full text of up to 10 design system files in one call, such as your colour and font tokens or a reusable email footer. The assistant treats what it reads as reference for how things should look and read, never as instructions to act: a file cannot make it send, delete, share or change anything.
Example prompt:
Use our standard email footer in this template.save_design_system_file
Create or replace one file in your design system, and keep a short dated line in notes.md about what was decided, so the next conversation starts from it. The folder is shared by everyone in your organization, so the assistant saves only what you have agreed to. Text files only (.md, .css, .html, .js, .json, .txt), up to 100 KB per file, 50 files and 1 MB in total. Nothing here deletes a file.
Example prompt:
Save this colour palette and button style as our design system.Email templates
list_email_templates
Find your organization's saved email templates. Give it some text and it returns the best matches by name, then subject, then body; leave the text out and it lists them newest first, page by page. It returns each template's name, subject and description but not its content — get_email_template reads that. When your org keeps templates private per user, you see only the ones assigned to you.
Example prompt:
Which of our templates are about renewals?get_email_template
Read one template whole: its name, subject, the email your recipients get, and for a designed email the Visual builder design. The assistant reads a template before changing it, because update_email_template saves the complete content.
Example prompt:
Show me what our welcome email says.create_email_template
Start a new email template with its name, subject and kind, and get back its id. The kind is either a designed email for the Visual builder, or a text email for the basic editor. The name must be unique in your organization. It creates an empty template: the content is written next and saved with update_email_template.
Example prompt:
Write a welcome email template for new clients.update_email_template
Save a template's content. Booked55 checks it before saving anything: a designed email needs both its HTML and its builder design, and the design must be one the Visual builder can open. When the check fails nothing is saved, and the assistant gets every problem back with its exact location so it can fix them and save again. Name, subject and description can be changed in the same call.
Example prompt:
Make the button in that template purple and save it.upload_email_image
Host a picture on Booked55 and get its permanent address for an email template. It takes the web address of a picture that is already online, such as the logo on your website, and in ChatGPT it takes a picture you attached to the chat. Booked55 keeps its own copy, so the email does not depend on the other site. PNG, JPEG, GIF and WebP, up to 5 MB each.
Example prompt:
Use the logo from our website at the top of that template.create_email_image_upload_link
Get a one-time link for sending picture files to Booked55. The assistant sends the files to it itself when it can; when it cannot, it gives you a page to open in your browser, where you drop the pictures in and tell it you are done. The link works for 30 minutes and takes up to 20 pictures.
Example prompt:
Put the three photos I attached into the newsletter template.list_email_images
List the pictures you have hosted on Booked55 for email templates, newest first, each with its address and size. The assistant uses it after you add pictures through an upload link, and to reuse a picture instead of hosting it twice. It lists only your own pictures.
Example prompt:
Reuse the banner image from last month's template.Campaigns
list_campaigns
List your Touchpoints (a personal email to contacts you pick) and Broadcasts (a marketing email; contacts who unsubscribed from marketing email are left out), newest first, optionally by type or status. Newsletter issues are found through the newsletter tools instead.
Example prompt:
Which of my Broadcasts are still drafts?get_campaign
One campaign in full — its subject, email, who it goes to, when it is scheduled, and a sentence saying what to do next. Once Booked55 has worked out the recipients it also says how many people the campaign will reach, which the assistant shows you before anything is sent.
Example prompt:
Show me the March product update Broadcast before I send it.save_campaign
Create a Touchpoint or Broadcast draft, or change one. Pick the recipients by hand or by filters (with people to leave out), write the subject and email or copy them from a saved template, and add or remove people before launch. Saving never sends anything. Recipients can change only before launch, and the email only once Booked55 has worked out who it goes to — a few seconds after saving. When your org limits people to their own contacts, you can add only contacts assigned to you.
Example prompt:
Draft a Broadcast to every client in Toronto using our spring promo template, but leave out Jane Doe.send_test_email
Send one test copy of a campaign to a single address — usually your own — from your connected Gmail or Outlook mailbox, so you can see it in an inbox before launch. It never goes to the campaign's recipients. Merge fields such as the contact's first name are left unfilled in a test copy. It is real email, so the assistant sends it only after you say so, and over OAuth it needs the send:email permission.
Example prompt:
Send me a test of that campaign.launch_campaign
Send a campaign to all its recipients now, schedule it for later, or cancel a scheduled send before it starts. It sends real email from your connected mailbox, under your name, so the assistant first shows you the subject and how many people it goes to, and launches only after you say go. Once sending has started it cannot be stopped from here. Booked55 refuses to launch when the person who created the campaign has no mailbox connected, since it sends from theirs, and refuses a Broadcast or newsletter issue until the organization's mailing address is set (it goes in the footer). A Touchpoint still reaches contacts who unsubscribed from marketing email; the assistant tells you so before launching one. Over OAuth sending needs the send:email permission; cancelling a schedule does not.
Example prompt:
Schedule that Broadcast for Tuesday at 9am.get_campaign_results
How a campaign did: sent, opened, clicked, replied (positive, neutral or negative), auto-replies, bounces and unsubscribes, each link with its clicks, and one row per recipient. Filter the rows by who opened, clicked, replied or bounced, or by the link they clicked. It also lists the people who were not emailed, and why.
Example prompt:
Who clicked the pricing link in last week's Broadcast?Sequences
list_sequences
List your email sequences — automated series of emails sent to each enrolled contact on a schedule — with their type (Drip Campaign, Cold Outreach or Sequence), status and number of steps. When your org limits people to their own contacts, you see only the sequences assigned to you.
Example prompt:
What sequences do we have running?get_sequence
One sequence with its steps in the order they send: each step's email template and how long it waits (step 1 counts from enrolment, each later step from the email before it), plus how many contacts are at each status, the email totals, and what can be done next.
Example prompt:
Walk me through the steps of our cold outreach sequence.save_sequence
Create a sequence or change one. A new sequence starts as a draft that sends nothing. The assistant writes each step's email as a template first, then lists the steps in order — the list is the whole sequence, so a step left out is removed. It can thread every step into one conversation under one subject, and stop a contact's remaining emails when they reply. Changing the steps of an active sequence affects people already in it and can send email, so the assistant shows you the new steps and asks first; over OAuth that also needs the send:email permission.
Example prompt:
Build a three-step follow-up for people I met at the conference: a thank-you, a case study after 3 days, and a check-in after a week.set_sequence_status
Start a draft sequence, pause one, or resume a paused one. Pausing stops all sending and keeps everyone where they were; resuming sends each paused contact's next email on the next send run. Starting or resuming sends real email, so the assistant does it only after you say so, and over OAuth it needs the send:email permission. Starting or resuming is refused until the organization's mailing address is set.
Example prompt:
Pause the renewal sequence until after the holidays.update_sequence_contacts
Enroll contacts in a sequence, take them out, or both in one call. New contacts start at step 1; someone already in the sequence is skipped, and someone who finished or was taken out before starts over. Taking someone out stops their remaining emails. Enrolling sends real email, so it needs your go-ahead and, over OAuth, the send:email permission; removing people needs only contact write access. When your org limits people to their own contacts, you can add only contacts assigned to you.
Example prompt:
Add the five contacts from yesterday's demo to the follow-up sequence, and take Jane Doe out of it.get_sequence_results
Who is in a sequence and how it is going: counts by status (active, completed, paused, cancelled, unsubscribed, bounced), email totals, and each contact's progress — which steps went out and when the next one is due. For one contact it also returns every email the sequence sent them, with opens, replies and clicks.
Example prompt:
Who replied to the cold outreach sequence this month?Newsletters
list_newsletters
List your newsletters — recurring emails to a list of subscribed contacts, sent as numbered issues — with how often each goes out, how many subscribers it has and its next send day.
Example prompt:
How many subscribers does each of our newsletters have?get_newsletter
One newsletter with its latest issues and what to do next, and on request its subscribers. An issue that has not been sent yet shows up here as a draft, with the id the campaign tools use to edit, test and send it.
Example prompt:
Is there a draft issue of the monthly newsletter waiting?save_newsletter
Create a newsletter or change its name, schedule (weekly, every other week or monthly) or the template every issue starts from. Saving never sends anything. On each send day Booked55 drafts the next issue from that template, addressed to the active subscribers — and it waits there until you send it.
Example prompt:
Start a monthly client newsletter that goes out on the 1st, using our newsletter template.update_newsletter_subscribers
Add contacts to a newsletter or remove them, in one call. Removing someone marks them unsubscribed from that newsletter, and adding them again does not resubscribe them, so the assistant removes people only when you ask. The change applies to issues drafted afterwards. When your org limits people to their own contacts, you can add only contacts assigned to you.
Example prompt:
Subscribe all my Toronto clients to the monthly newsletter.create_newsletter_issue
Draft the next issue of a newsletter now, instead of waiting for its send day. Nothing is sent: the issue is a campaign addressed to every active subscriber, pre-filled from the newsletter's template. The assistant edits it with save_campaign, sends you a test, and launches it with launch_campaign once you say go. Only one draft issue can wait at a time.
Example prompt:
Draft this month's newsletter issue about our new pricing.Support
request_callback
Ask the Booked55 support team to phone you back about a problem you are having with Booked55 itself. Takes the number to ring and what you need help with, and files a support request with our team — it calls none of your contacts and creates no task, note or event. The number is saved to your Booked55 profile for next time unless you ask it not to. It cannot be read back or cancelled, so do not file a second request for the same problem. Over an OAuth connection it is refused, because the route carries no permission scope: ask from inside Booked55, or connect with an API key.
Example prompt:
Can someone from Booked55 call me on 416-731-5959? My imported contacts are not showing up.Notes on other records
A note is its own record now, with an author and a date, rather than a text field on the thing it is about. Two consequences worth knowing when you read a tool's answer:
- The notes-ish fields you get back are the newest note only.
task_result_descriptionon a task,noteson a company, andlatest_noteon a pipeline card each carry the body of that record's most recent note, with anote_countbeside it. For the whole history, with each note's author and date, calllist_notes. - The update tools cannot write them.
update_companyandupdate_pipeline_itemno longer take anotesfield; usecreate_noteinstead.create_companyandcreate_pipeline_itemstill take an opening note, because a brand-new record has nothing to overwrite. On a task,task_result_descriptionis still accepted bycreate_taskandupdate_taskand is filed as a note on that task — it rewrites the note a person typed, never one the meeting notetaker or the email sync wrote.
Reading notes needs read:notes and writing them write:notes; the two contact and company rollups ride on read:contacts / read:companies instead. There is no delete scope and no delete tool — removing a note is something a person does in the app. See Authentication & Scopes.
Tool discovery
AI clients can discover available tools programmatically via the MCP protocol. The server responds to tools/list with the full schema for every tool, including parameter types, required fields, and descriptions.
Best practices
- Search before creating: Always search for existing records before creating new ones to avoid duplicates. The AI assistant is trained to do this automatically.
- Be specific: Include names, emails, and dates in your prompts so the AI can fill in the correct parameters.
- Chain actions: You can ask the AI to perform multiple steps in sequence, e.g. "Create a company called Acme Corp, then add John Smith as a contact at that company."
Related
Ready to get started?
Create your free Booked55 account and start managing your sales pipeline in minutes.