AI agents (MCP)

MCP Tools Reference

Reference for all 34 Sky Schedule MCP tools, read and write, with inputs and results, from listing reservations to completing flights and drafting invoices.

llms.txt

This MCP tools reference lists every tool the Sky Schedule MCP server offers: 20 read tools and 14 write tools. Agents pick tools on their own from the names and descriptions, so you rarely call them by hand, but knowing the inputs helps you write better prompts and review what an agent did. For setup, see MCP setup.

All tools

ToolTypeWhat it does
list_reservationsReadLists reservations, from today onward unless you give dates.
get_reservationReadGets one reservation by id.
list_flightsReadLists completed flight logs with Hobbs, Tach, route, and people.
get_flightReadGets one completed flight by id.
list_customersReadLists the customer roster.
get_customerReadGets one customer by id.
list_instructorsReadLists the instructor roster.
get_instructorReadGets one instructor by id.
list_aircraftReadLists the fleet with tail numbers, Hobbs, Tach, and status.
get_aircraftReadGets one aircraft by id.
list_leadsReadLists CRM leads, newest first.
get_leadReadGets one lead with its notes.
list_reportsReadLists the report types run_report can run.
list_work_ordersReadLists maintenance work orders.
list_squawksReadLists aircraft squawks.
list_inspectionsReadLists aircraft inspections and due dates.
list_inventoryReadLists parts inventory and stock levels.
list_remindersReadLists inspection due reminders.
list_reservation_commentsReadLists comments on flights, meeting rooms, ground lessons, and other bookings.
list_team_chat_channelsReadLists Team Chat channels.
create_reservationWriteBooks an aircraft for a customer, with an instructor unless it's a solo rental.
update_reservationWriteChanges times, aircraft, people, activity type, or route on a reservation.
cancel_reservationWriteCancels a reservation and records the reason.
void_reservationWritePermanently removes a reservation and its linked records.
complete_flightWriteLogs a completed flight from a reservation and updates aircraft Hobbs and Tach.
update_hobbsWriteSets an aircraft's current Hobbs, and Tach if given.
add_aircraft_documentWriteAttaches a file or link to an aircraft, such as a logbook scan.
add_fuel_reimbursementWriteLogs fuel spend on a reservation, with an optional receipt.
add_lead_noteWriteAdds a note to a CRM lead.
send_crm_lead_emailWriteEmails a CRM lead from the school.
run_reportWriteRuns a report and returns its rows. Reads only, but counts toward the write limit.
create_work_orderWriteOpens a work order, blocks the aircraft on the schedule, and sets it to Maintenance.
draft_invoice_for_flightWriteCreates a draft invoice for a completed flight. Doesn't send or charge it.
send_team_chat_messageWritePosts a message to a Team Chat channel.

Write tools share a limit of 200 calls per school per UTC day, and all tools share 1,000 requests per day. See the MCP server overview for limits and the audit log.

Inputs every tool follows

  • Ids must be the full UUID from a list or get result. A partial id is refused with: Use the full id (a UUID) from a list or search result.
  • limit on list tools is a whole number from 1 to 100. The default is 50.
  • Dates are YYYY-MM-DD. Times for reservations are ISO 8601, for example 2026-10-10T16:00:00Z.
  • Aircraft can be given as aircraftId or tailNumber. Tail numbers match without regard to case.
  • People can be given by id or by email: customerId or customerEmail, instructorId or instructorEmail. Emails match without regard to case.

Every result is JSON with a meta.rateLimit object. List results also have meta.count and meta.pageSize.

Read tools

ToolInputsReturns
list_reservationsfrom, to, limit (all optional). from defaults to today in UTC.Reservation objects, oldest first. meta.from shows the start date used. Same fields as the reservations API.
get_reservationreservationIdOne reservation.
list_flightsfrom, to, limit (all optional), filtering on flight dateCompleted flights, newest first. Same fields as the completed flights API.
get_flightflightIdOne completed flight.
list_customerslimitid, name, email, phone, status, sorted by name.
get_customercustomerIdOne customer.
list_instructorslimitid, name, email, phone, status, sorted by name.
get_instructorinstructorIdOne instructor.
list_aircraftlimitid, tailNumber, model, type, status, currentHobbs, currentTach, totalHours, hourlyRate, sorted by tail number.
get_aircraftaircraftIdOne aircraft.
list_leadslimitid, name, email, phone, status, leadScore, source, interest, notes, createdAt, followUpAt, newest first.
get_leadleadIdlead (same fields) and leadNotes, the 50 most recent notes with id, body, and createdAt.
list_reportsNoneReport types with id, category, categoryLabel, label, description, filters, and groupByOptions.
list_work_orderslimitSame fields as /work-orders.
list_squawkslimitSame fields as /squawks.
list_inspectionslimitSame fields as /inspections.
list_inventorylimitSame fields as /inventory.
list_reminderslimitSame fields as /reminders.
list_reservation_commentslimit, reservationId (optional)Same fields as the reservation comments API.
list_team_chat_channelsNoneid, name, slug, channelType, description.

Write tools

create_reservation

Books the schedule. The new reservation starts with status PENDING.

  • aircraftId or tailNumber (one is required)
  • startsAt, endsAt (required): ISO 8601. The end must be after the start.
  • activityType (optional): defaults to Dual Flight Training.
  • customerId or customerEmail (one is required)
  • instructorId or instructorEmail: required unless activityType is Solo Pilot Rental.
  • route (optional)

Returns reservationId and the full reservation. If the aircraft is already booked for any part of that time, the call fails with That time slot overlaps another reservation on this aircraft. This tool checks the aircraft for overlaps only. It doesn't check the instructor's other bookings or the booking requirements your school sets up in Sky Schedule, so review agent bookings the way you would a new staff member's.

update_reservation

  • reservationId (required)
  • Any of: startsAt, endsAt, aircraftId or tailNumber, customerId or customerEmail, instructorId or instructorEmail, activityType, route

Only the fields you send change. If the new times or aircraft overlap another active reservation on that aircraft, the call fails with Updated times overlap another reservation on this aircraft. Returns reservationId and the updated reservation.

cancel_reservation

  • reservationId (required)
  • reason (optional): stored with the cancellation. Defaults to other.

Sets the status to CANCELLED and records the cancellation as made by "Connected agent". Returns { "reservationId": "...", "status": "CANCELLED" }. Prefer this over void_reservation.

void_reservation

  • reservationId (required)

Permanently removes the reservation and its linked records. Sky Schedule keeps a void log entry. This can't be undone, so use cancel_reservation unless the booking should never have existed. Returns { "reservationId": "...", "voided": true }.

complete_flight

  • reservationId (required): the reservation must have an aircraft and start and end times.
  • hobbsStart, hobbsStop (required): numbers.
  • tachStart, tachStop (optional): numbers.
  • route (optional): overrides the reservation's route.
  • landings (optional): whole number.

Creates the completed flight log from the reservation (people, activity type, date, and times come from the reservation), marks the reservation completed, and updates the aircraft's current Hobbs and Tach. Returns completedFlightId, the new flight, and metersApplied, which says whether the aircraft meters were updated.

{
  "completedFlightId": "33333333-3333-4333-8333-333333333333",
  "flight": {
    "id": "33333333-3333-4333-8333-333333333333",
    "reservationId": "11111111-1111-4111-8111-111111111111",
    "reservationNumber": "1042",
    "activityType": "Dual Flight Training",
    "flightDate": "2026-10-09",
    "startTime": "15:00:00",
    "endTime": "17:00:00",
    "completedAt": "2026-10-09T17:20:05.611+00:00",
    "route": "KCRQ-KSEE-KCRQ",
    "hobbs": { "start": 2452.6, "end": 2454.1, "delta": 1.5 },
    "tach": { "start": 1981.5, "end": 1982.8, "delta": 1.3 },
    "customer": { "name": "Alex Student", "email": "alex.student@example.com", "phone": "555-0100" },
    "instructor": { "name": "Sam Instructor", "email": "sam.cfi@example.com", "phone": "555-0101" },
    "aircraft": { "tailNumber": "N12345", "model": "Cessna 172S Skyhawk" }
  },
  "metersApplied": true,
  "meta": {
    "rateLimit": { "limit": 1000, "remaining": 948, "reset": "2026-10-10T00:00:00.000Z" }
  }
}

update_hobbs

  • aircraftId or tailNumber (one is required)
  • hobbs (required): zero or more.
  • tach (optional)

Sets the aircraft's current Hobbs (and Tach) and adds a manual adjustment, noted "Updated via MCP", to the aircraft's Hobbs history. Returns the updated aircraft.

add_aircraft_document

  • aircraftId or tailNumber (one is required)
  • name (required): the document title.
  • fileUrl or fileBase64: a link to the file, or the file itself as base64. A base64 file is uploaded and stored with the aircraft's documents.
  • contentType (optional): for example application/pdf.
  • description (optional)

Returns documentId, aircraftId, tailNumber, title, and url. This is how an agent with access to your email or file storage can file a logbook scan or a receipt on the right tail number.

add_fuel_reimbursement

  • reservationId (required): the reservation must have an aircraft.
  • amountDollars (required): more than 0.
  • notes (optional)
  • receiptUrl or receiptBase64 (optional)
  • receiptContentType (optional): defaults to application/pdf.

Creates a pending fuel reimbursement on the reservation and a "Fuel reimbursement" document on the aircraft. Returns reimbursementId, amountCents, status (pending), and receiptUrl.

add_lead_note

  • leadId (required)
  • body (required)

Returns noteId, body, and createdAt.

send_crm_lead_email

  • leadId (required): the lead must have an email address.
  • subject (required)
  • body (required): plain text.
  • templateId (optional): a CRM email template. If the template has an attachment, it's attached.
  • templateLabel (optional): stored with the email log.

Sends a real email from your school to the lead and records it in the school's CRM email log. Returns sent: true with emailId, provider, fromEmail, and toEmail. If the email can't be sent, it returns sent: false, skipped: true, and a reason and message.

run_report

  • reportType (required): a report id from list_reports, such as flights.detail or leads.detail.
  • dateFrom, dateTo (optional): YYYY-MM-DD.
  • groupBy (optional): one of the report's groupByOptions, such as aircraft or month.
  • page (optional): defaults to 1.
  • pageSize (optional): defaults to 50, up to 500.

Returns columns, rows, total_count, page, page_size, and totals when the report has them. It only reads data, but it counts toward the 200 write calls per day.

Report ids at the time of writing, grouped by category. list_reports is always the current list.

  • Flights and reservations: flights.detail, reservations.detail
  • Students: students.list, students.flight_hours, students.reservations, students.billing, students.progress
  • Instructors: instructors.list, instructors.flights_detail, instructors.flight_hours, instructors.reservations, instructors.activity, instructors.billing
  • Aircraft: aircraft.list, aircraft.flight_hours, aircraft.reservations, aircraft.utilization
  • Maintenance: maintenance.all, maintenance.squawks, maintenance.work_orders, maintenance.inspections
  • Billing: billing.invoices, billing.invoice_line_items, billing.manual_payments, billing.balance_ledger, billing.revenue_summary
  • CRM, ground training, and logbook: leads.detail, ground_training.detail, logbook.detail

create_work_order

  • aircraftId or tailNumber (one is required)
  • title, description (required)
  • category (optional): defaults to General.
  • startDate, endDate (required): YYYY-MM-DD.
  • startTime, endTime (required): HH:MM, 24-hour.

Creates a work order with status new, puts Maintenance blocks on the schedule for that aircraft over the date range, and sets the aircraft's status to Maintenance. Returns workOrderId, aircraftId, tailNumber, status, and scheduleBlocks (how many blocks were added).

draft_invoice_for_flight

  • completedFlightId (required): the id from list_flights or complete_flight.

Creates a draft invoice for the flight using your school's billing settings. It doesn't publish, send, or charge anything; staff review and send it in Sky Schedule. Returns drafted: true with the invoice, or drafted: false with skipped: true and a reason, such as flight_already_invoiced, duplicate_draft, no_student, or manual_billing.

The draft is created under the admin who generated the current API key. If that admin can't be found, the tool asks you to rotate the connection.

send_team_chat_message

  • body (required)
  • channelId, channelSlug, or channelName (optional): which channel. Without one, the message goes to the school's general channel.

Posts as "Sky Schedule MCP". Returns messageId, channelId, channelName, body, and createdAt. Use list_team_chat_channels to find a channel.