Skip to main content
The server knows 106 operations, and by default it advertises 25 of them as tools. The rest are still fully available — you reach them through three discovery tools instead of having all 106 definitions loaded into every conversation. You only ever see or reach operations covered by the scopes you approved at connect time — a read-only connection never shows a tool that writes, and discovery does not change that.
⚠️ marks tools annotated as destructive. Well-behaved clients ask before running these.You do not need to memorise tool names. Ask in plain language and the client picks the tool — the names are here for debugging and for writing your own client.

The discovery model

Advertising every operation cost about 33,000 tokens of tool definitions before the client had read a single word of your question, and near-neighbours (create_schedule_item vs. create_schedule_items) made the choice ambiguous. The default surface is now about 6,500 tokens, and the long tail is fetched on demand. So the write flow is: list_capabilitiesdescribe_operationsinvoke_operation. invoke_operation cannot call arbitrary URLs or endpoints. operation must name an operation in this catalogue, and one your connection is authorised for; anything else is refused.

Keeping the old tool list

If you built against the pre-reduction surface and your client enumerates tools, append ?tools=all to the MCP URL (or send x-daysync-mcp-tools: all) to get all 106 advertised exactly as before. Nothing was removed either way: every tool name that used to exist is still callable by name, whether or not it appears in tools/list. An integration that hardcodes create_pass_type needs no change.

Where to start

A few tools do most of the work:

Session tools

Always available on any connection.

Files

Four tools cover the whole file lifecycle. They are advertised by default, because they are the only route to file content.

Choosing an upload source

upload_file takes a source: Uploading does not attach anything — call attach_file next.
Bulletins do not support attachments. Chat files are not in list_files either; use search_chat_files.Prefer attach_file over re-sending an entity’s update body with attachments, which replaces the whole set.

Limits and rejections

File reads are bounded by the same organization, tour, role and per-item visibility rules as everything else: a file on a private item you are not on is not listed, and files on another tour are not reachable.

By scope

Organization · Read

organization.read — 3 tools

Users · Read

users.read — 3 tools

Tours · Read

tours.read — 8 tools
get_tour_data, get_day_sheet_data, export_day_sheet, list_files and get_file each span several resources, so they need the read scope for all of them — see Scopes. They appear with tours.read but fail without the rest.
The day sheet is a read, despite export_day_sheet being a POST. It rides tours.read, creates nothing on the tour, and changes no record — the POST is only because the render takes a body. Start from a preset (FULL, SCHEDULE, MINIMAL) and narrow it with options; ids you pass that you cannot see are dropped and counted in ignoredIdCount. See Day sheet.

Tours · Write

tours.write — 3 tools

Schedule · Read

schedule.read — 6 tools

Schedule · Write

schedule.write — 20 tools
Schedule templates are per user. list_schedule_templates shows only the connected account’s own templates, and a template can only be applied to a day of the tour its items came from. See Schedule Templates.

Venues · Read

venues.read — 7 tools

Venues · Write

venues.write — 6 tools

Accommodation · Read

accommodation.read — 7 tools

Accommodation · Write

accommodation.write — 12 tools

Guest list · Read

guestlist.read — 4 tools

Guest list · Write

guestlist.write — 10 tools
Prefer update_guest_statuses over looping update_guest, which requires the guest’s whole record on every call. And read delete_pass_type’s response rather than only its success: without force it deliberately deletes nothing when a guest still holds the pass.

Bulletins · Read

bulletins.read — 1 tool

Bulletins · Write

bulletins.write — 3 tools

Chat · Read

chat.read — 10 tools. Read-only, and 1:1 direct messages are never exposed. See Chat.

Retrying a write safely

Every additive write tool — create_tour, create_schedule_item, create_schedule_items, create_venue, create_accommodation, create_room, create_key_contact, create_tag, create_pass_type, create_bulletin, add_guest, save_schedule_template, apply_schedule_template and upload_attachment — accepts an optional idempotency_key. That last row is why a duplicated tool call — the failure mode a retrying agent is most prone to — does not silently create two schedule items.

Why a tool might be missing

  1. It is not on the default surface. Most operations are not advertised as tools. Call list_capabilities to find it, then describe_operations and invoke_operation — or append ?tools=all to the MCP URL to advertise everything.
  2. You did not consent to its scope. Reconnect and approve it. invoke_operation distinguishes this case explicitly: it answers INSUFFICIENT_SCOPE and names the scope needed, rather than telling you the operation does not exist.
  3. The application does not hold that scope. Nothing you can do client-side — the partner credential needs it.
  4. Your session predates the tool. Tool lists are cached from session start; start a new chat.
See Troubleshooting.

When something new becomes a tool

So the surface does not creep back up, new capabilities follow a fixed rule:
  1. If an existing tool covers it with one more field, that tool is extended.
  2. Otherwise it becomes an operation — reachable via list_capabilities / describe_operations / invoke_operation from day one, with no client change and no re-consent.
  3. It is promoted to an advertised tool only if an agent needs it to orient itself (a read), or it is the only route to a capability (files); its name is unambiguous against every other advertised tool; and its schema is small — a multi-kilobyte write body belongs behind describe_operations, which delivers it just in time.
  4. Reference and lookup data stays bundled into one read rather than one tool per table.

Every tool maps to a documented REST endpoint — see Scopes & Permissions for the mapping.