Zum Inhalt springen
Docs · MCP-Server

Lassen Sie einen Agenten ins Reservierungsbuch schauen

Das Model Context Protocol ist die Art, wie ein Assistent ein anderes System um etwas bittet. Diese Seite beschreibt den Server, mit dem wir es sprechen: was man ihn fragen kann, was ein Schlüssel erreichen darf, und was passiert, wenn mehr verlangt wird.

Schlüssel in den Einstellungen erzeugen

API-Schlüssel sind an. Ein Schlüssel gehört zu einer Organisation und wird deshalb dort angelegt: Einstellungen, dann Organisationen, dann die gewünschte, dann deren Reiter API-Schlüssel. Haken Sie die Standorte an, an denen er arbeiten darf, und die Aktionen, die er dort ausführen darf, und kopieren Sie den Wert, der nur einmal zu sehen ist. Richten Sie Ihren Client auf den Endpunkt unten, dann läuft das heute. Was der Schlüssel ändert, wird festgehalten, und das meiste kann ein Mensch zurücknehmen.

Organisation wählen, in der er entstehen soll

Was es ist

Ein dünner Proxy vor derselben REST-API, die auch das Dashboard nutzt.

Er hält keine Datenbankverbindung und entscheidet nichts selbst. Mandantentrennung, Tariflimits, Validierung und Rate Limits erzwingt die API, weil das der einzige Ort ist, an dem sie einmal erzwungen werden können. Jedes Werkzeug unten zeigt auf eine Route, die es schon gibt, geschützt durch eine Berechtigung, die ohnehin geprüft wird.

MCP ist ein offenes Protokoll, jeder Client, der es spricht, funktioniert. Wir haben keinen Liebling.

Was ein Schlüssel ist

Ein Zugang, eine Organisation, und darüber hinaus so wenig Reichweite, wie Sie ihm lassen möchten.

  • An eine Organisation gebunden

    Die Organisation wird beim Erstellen gewählt und lässt sich danach nicht ändern. Ein Aufruf, der eine andere nennt, wird mit einem 403 abgelehnt, das keine Berechtigung aufweicht. Ein Agent für zwei Firmen braucht zwei Schlüssel.

  • Auf einzelne Standorte eingrenzbar

    Eine Organisation kann sechs Restaurants halten, und ein Schlüssel muss nicht alle erreichen. Haken Sie die Standorte an, an denen er arbeiten darf, und alles andere wird abgelehnt, auch eine Listenabfrage, die gar keinen Standort nennt.

  • Auf einzelne Aktionen eingrenzbar

    Die Karte an beiden Standorten lesen, Reservierungen nur in der Innenstadt annehmen. Aktionen werden pro Standort vergeben, die Eingrenzung ist also ein Raster und kein einzelner Schalter.

  • Protokolliert und umkehrbar

    Was ein Schlüssel ändert, wird vor der Änderung festgehalten, mit den Argumenten, dem betroffenen Datensatz und seinem Zustand davor. Lässt sich dieser Eintrag nicht schreiben, läuft der Aufruf nicht. Die meisten Änderungen kann ein Mensch in den Einstellungen zurücknehmen.

Scopes

Ein Scope ist die grobe Berechtigung, die ein Schlüssel trägt. Ein Schreib-Scope schließt seinen Lese-Scope ein, wählen Sie also den engsten, der die Aufgabe erledigt. Die kaufmännischen Zahlen liegen hinter einem eigenen Scope und sind in keinem anderen enthalten.

ScopeWas er gewährt
org:read

Organisation lesen

Organisationsdaten ansehen
org:write

Organisation verwalten

Einen Standort eröffnen und Profil, Öffnungszeiten und Buchungseinstellungen setzen
menu:read

Speisekarte lesen

Speisekarten, Bereiche, Gerichte und Tagesangebote ansehen
menu:write

Speisekarte verwalten

Speisekarten und Gerichte erstellen, bearbeiten und veröffentlichen
booking:read

Reservierungen lesen

Reservierungen, Verfügbarkeit, Ressourcen und Leistungsarten ansehen – nicht Umsatz oder Marge
booking:write

Reservierungen verwalten

Reservierungen erstellen, bestätigen, verschieben und stornieren
sales:read

Anfragen lesen

Veranstaltungsanfragen, die Vertriebs-Pipeline und den Wert jeder Stufe ansehen
sales:write

Anfragen schreiben

Anfragen erfassen, bearbeiten und durch die Pipeline bewegen
event:read

Veranstaltungen lesen

Veranstaltungen und deren Anmeldungen ansehen
event:write

Veranstaltungen verwalten

Veranstaltungen erstellen, bearbeiten und veröffentlichen
contact:read

Kontakte lesen

Gästekontakte und Gruppen ansehen
contact:write

Kontakte verwalten

Gästekontakte und deren Gruppenzugehörigkeit erstellen und bearbeiten
loyalty:read

Treueprogramm lesen

Besuche, Punkte und Prämien ansehen
staff:read

Team lesen

Teammitglieder, Dienstplan und Besetzung ansehen – nicht Löhne oder Personalkosten
staff:write

Team verwalten

Schichten und Zuteilungen erstellen und bearbeiten
analytics:read

Auswertungen lesen

Umsatz, Marge, Gedecke, No-Show-Quote und Personalkosten-Auswertungen ansehen
agent:read

Agenten-Protokoll lesen

Sehen, was dieser Schlüssel selbst getan hat – eigene Änderungen und Abfragen, nichts von anderen
agent:write

Agenten-Rücknahme

Dieser Schlüssel darf eine eigene jüngste Änderung zurücknehmen. Nur eigene, einzeln, innerhalb einer Stunde – nie die eines anderen Schlüssels und nie einen ganzen Nachmittag

Einen Admin-Scope gibt es nicht zur Auswahl. Er würde jedes Werkzeug abdecken, auch die, die nach dem Erstellen des Schlüssels dazukommen, und dem kann niemand mit einem Häkchen zustimmen.

Verbinden

Zwei Zeilen in der Konfiguration Ihres Clients. Der Endpunkt ist ein gehosteter Streamable-HTTP-Transport, es gibt also nichts zu installieren und nichts am Laufen zu halten.

Ersetzen Sie den Platzhalter durch den Schlüssel, den Sie beim Anlegen kopiert haben. Wir zeigen einen Schlüssel genau einmal, ist er weg, legen Sie einen neuen an und widerrufen den alten.

claude mcp add --transport http guestavo https://mcp.guestavo.com/mcp \
  --header "Authorization: Bearer gvsk_your_key_here"

Wie eine Ablehnung aussieht

Eine fehlende Berechtigung kommt als 403 zurück und nennt die gewünschte, sodass die Person, die den Schlüssel erstellt hat, das in den Einstellungen beheben kann, ohne diese Seite zu lesen. Ein Schlüssel für die falsche Organisation oder den falschen Standort bekommt ein 403, das keine Berechtigung behebt.

Der Skill

Eine Anleitung, die Sie Ihrem Agenten mitgeben, damit er sich das Produkt nicht über Versuch und Ablehnung erschließen muss.

Eine Datei: wie man sich verbindet, was jede Berechtigung öffnet, in welcher Reihenfolge ein Standort aufgebaut wird, jede Ablehnung, die ihm begegnet, und was sie jeweils bedeutet, und wie er seinen eigenen Fehler zurücknimmt. Sie entsteht aus derselben Werkzeugliste, die der Server ausliefert, und kann deshalb keine Produktversion beschreiben, die es nicht mehr gibt.

Dieser Text ist für alle gleich und führt deshalb jedes Werkzeug des Produkts auf, nicht die eines einzelnen Schlüssels. Sobald ein Agent verbunden ist, erfährt er, was sein eigener Schlüssel öffnet, und das ist die engere und wahrere Antwort.

Skill lesen

Oder legen Sie sie gleich dorthin, wo ein Agent sie sucht:

mkdir -p ~/.claude/skills/guestavo && curl -fsSL https://guestavo.de/docs/mcp/skill.md -o ~/.claude/skills/guestavo/SKILL.md

Die Werkzeuge

79 Werkzeuge

Erzeugt aus derselben Registry, die der Server liest, diese Liste kann also nicht von dem abweichen, was ein Client sieht. Gruppiert wie im Berechtigungsdialog, also so, wie eine Inhaberin entscheidet.

Kein Werkzeug hier schreibt einem Gast. Reservierungswerkzeuge, die sonst eine Bestätigung oder Absage mailen, laufen mit unterdrücktem Versand, wenn ein Schlüssel der Aufrufer ist, denn eine Mail an einen echten Menschen ist das Einzige, was kein Rückgängig-Knopf zurückholt.

Sehen, welche Module eingeschaltet sind

org:read
  • get_organizationNur lesendGET /api/organizations/:organizationId

    Read the organization: its name, locale and which product modules (menu, booking, events, outreach, loyalty, staff) are switched on. Call it when an action is refused because a module is off — only an owner can switch one on.

Unsere Standorte finden

org:read
  • list_propertiesNur lesendGET /api/organizations/:organizationId/properties

    List the venues (properties) in an organization. Start here to get the propertyId that menu, booking, event and staff tools ask for.

  • get_propertyNur lesendGET /api/properties/:propertyId

    Read one venue in full: address, timezone, opening hours and booking configuration. Use it to find out whether a venue is bookable at all before asking why get_booking_availability returns nothing.

Einen Standort eröffnen und einrichten

org:write
  • create_propertyÄndert DatenPOST /api/organizations/:organizationId/properties

    Create a venue: name, URL slug, type, address and timezone. Set its opening hours and booking settings afterwards with the set_property_ tools. A key narrowed to particular venues cannot call this — the new venue is not one of them.

  • update_property_profileÄndert DatenPATCH /api/properties/:propertyId/profile

    Change a venue’s name, description, address, city, country or timezone. Only the fields sent are written. The URL slug is not changeable here, because a printed QR code resolves through it.

  • set_property_operating_hoursÄndert DatenPATCH /api/properties/:propertyId/operating-hours

    Set a venue’s opening hours. Only the days you name change; the rest of the week is left alone, and exceptions merge by date, so adding one holiday cannot drop the others. removeExceptionDates takes one back off.

  • set_property_booking_settingsÄndert DatenPATCH /api/properties/:propertyId/booking-settings

    Configure how a venue takes bookings: interval, lead time, buffer, auto-confirm. enabled must be true or no slot is ever offered. publicBookingEnabled publishes the venue and requireStaffShiftCoverage can close its diary — confirm both.

Karte lesen

menu:read
  • list_menusNur lesendGET /api/menus

    List an organization's menus with their status (draft, published, archived). Supports a search term.

  • get_menuNur lesendGET /api/menus/:menuId

    Read one menu in full: its categories, the items filed under each, prices, allergens and dietary tags.

  • list_menu_itemsNur lesendGET /api/menu-items

    Search the dish catalogue by name across the whole organization. Items live independently of the menus they appear on, so use this to find a dish when the menu is unknown.

  • list_menu_categoriesNur lesendGET /api/menu-categories

    List the organization's dish sections (starters, mains, wine) as catalogue records. A section is filed here once and placed on any number of menus, so use this to find the categoryId add_category_to_menu needs.

  • list_menu_specialsNur lesendGET /api/menus/:menuId/specials

    List a menu's daily specials with the dates each one runs.

Karte aufbauen und bearbeiten

menu:write
  • create_menuÄndert DatenPOST /api/menus

    Create a menu for a venue: an empty shell with a name and a URL slug. Fill it with add_category_to_menu and add_item_to_menu_category, then publish_menu. Nobody sees it until it is published.

  • update_menuÄndert DatenPATCH /api/menus/:menuId

    Rename a menu or change its slug, description, language, currency or display options. This edits the menu itself and not what is on it; a dish is edited with update_menu_item.

  • create_menu_categoryÄndert DatenPOST /api/menu-categories

    Create a dish section in the catalogue — starters, mains, desserts. It is on no menu until add_category_to_menu places it, and one section can be placed on several menus.

  • update_menu_categoryÄndert DatenPATCH /api/menu-categories/:categoryId

    Rename a catalogue dish section or change its description or image. The change lands on every menu that section appears on.

  • create_menu_itemÄndert DatenPOST /api/menu-items

    Create a dish in the catalogue with its price, allergens and dietary tags. It is on no menu until add_item_to_menu_category files it under a section of one.

  • update_menu_itemÄndert DatenPATCH /api/menu-items/:itemId

    Edit a catalogue dish: name, description, base price, allergens, dietary tags. It changes on every menu it appears on — to change one menu only, use set_menu_item_availability on that placement.

  • add_category_to_menuÄndert DatenPOST /api/menus/:menuId/categories

    Put an existing catalogue section on a menu at a given position. Returns the assignmentId that add_item_to_menu_category needs — that id, not the categoryId, is what dishes are filed under.

  • add_item_to_menu_categoryÄndert DatenPOST /api/menus/:menuId/categories/:assignmentId/items

    Put a catalogue dish on one menu under one section, optionally with a price override for that menu alone. Takes the assignmentId add_category_to_menu returned, not a categoryId.

Karte veröffentlichen und Tagesangebot ändern

menu:write
  • create_menu_specialÄndert DatenPOST /api/menus/:menuId/specials

    Add a daily special to a menu for a given date or date range.

  • set_menu_item_availabilityÄndert DatenPATCH /api/menus/:menuId/categories/:assignmentId/items/:itemAssignmentId

    Change the availability note or price override of one item as it appears on one menu. This is how a dish comes off tonight, or goes lunch-only, without being deleted.

  • publish_menuÄndert DatenPOST /api/menus/:menuId/publish

    Publish a menu so the venue's public page and QR code serve it. Draft edits are invisible to guests until this runs.

  • archive_menuÄndert DatenPOST /api/menus/:menuId/archive

    Take a menu out of service: it stops being served publicly and is filed as archived rather than deleted. publish_menu brings it back. There is no way to delete a menu here, by design.

Vertriebs-Pipeline lesen

sales:read
  • list_inquiriesNur lesendGET /api/inquiries

    List event inquiries for an organization, filterable by venue, stage, owner and whether the next action is overdue. This answers "what has come in, and what has nobody chased".

  • get_inquiryNur lesendGET /api/inquiries/:inquiryId

    Read one inquiry: who asked, what for, when they want it, what stage it is at and the notes on it.

  • get_inquiry_pipelineNur lesendGET /api/inquiries/pipeline

    Count each pipeline stage and what it is worth, plus how many open inquiries are past their next action date. Money is reported per currency and never summed across them.

Anfragen erfassen und bewegen

sales:write
  • create_inquiryÄndert DatenPOST /api/inquiries

    Log an enquiry taken by phone or forwarded by mail: who asked, what for, roughly when, how many people. Only the name is required — leave dateFrom out when they have not picked a date rather than inventing one.

  • update_inquiryÄndert DatenPATCH /api/inquiries/:inquiryId

    Edit an enquiry: dates once the customer firms them up, headcount, owner, when it is next chased, internal notes. Setting estimatedValueCents needs analytics:read too. Use set_inquiry_status to move stage.

  • set_inquiry_statusÄndert DatenPOST /api/inquiries/:inquiryId/status

    Move an enquiry through the pipeline: new, contacted, site_visit, quoted, negotiating, won or lost. Marking one lost requires a lostReason. Its own tool rather than a field on update_inquiry, so nothing can set lost and never be asked why.

Reservierungsbuch lesen

booking:read
  • get_booking_availabilityNur lesendGET /api/public/bookings/availability/slots

    Free booking slots at a venue on one date, optionally narrowed by party size, service type or resource. Call before create_booking. Name the venue by propertyId or by propertySlug.

  • list_booking_resourcesNur lesendGET /api/booking-resources

    List the bookable resources at a venue — tables, rooms, chairs, courts — with their capacities.

  • list_booking_service_typesNur lesendGET /api/booking-service-types

    List the service types a venue takes bookings for (dinner service, treatment, rental) with their durations.

  • list_booking_blocked_timesNur lesendGET /api/booking-blocked-times

    List a venue’s closures — holidays, maintenance windows, a table out of service — over an optional date range. This is why a date with opening hours can still offer no slots.

  • list_bookingsNur lesendGET /api/bookings

    List bookings for an organization, filterable by venue, date range, status and guest name. This answers "who is coming in tonight".

  • get_bookingNur lesendGET /api/bookings/:bookingId

    Read one booking: guest, party size, time, assigned resources, status and notes.

Buch einrichten: Leistungen, Tische, Schließzeiten

booking:write
  • create_booking_service_typeÄndert DatenPOST /api/booking-service-types

    Define something a venue takes bookings for — dinner service, a treatment, a court hire — with its duration and optional price. Create these before resources, which reference them by id.

  • update_booking_service_typeÄndert DatenPATCH /api/booking-service-types/:serviceTypeId

    Rename a service type or change its duration, price or order. Send isActive false to retire one: it stops being offered and the bookings already taken against it keep saying what was booked. There is no delete, by design.

  • create_booking_resourceÄndert DatenPOST /api/booking-resources

    Add something a booking can be assigned to — a table, a room, a chair, a court — with its capacity and largest party. serviceTypeIds narrows it to particular services, so create those first.

  • update_booking_resourceÄndert DatenPATCH /api/booking-resources/:resourceId

    Change a bookable resource: name, capacity, largest party, which services it takes, its own weekly availability. Send isActive false to take it out of service without destroying which parties sat at it.

  • create_booking_blocked_timeÄndert DatenPOST /api/booking-blocked-times

    Close a venue, or one resource, for a period: a holiday, a private hire, maintenance. Times are the venue’s own wall clock, not UTC. recurrenceRule takes FREQ=DAILY or FREQ=WEEKLY, optionally with ;UNTIL=YYYY-MM-DD.

  • update_booking_blocked_timeÄndert DatenPATCH /api/booking-blocked-times/:blockedTimeId

    Move or shorten a closure, change its reason, or scope it to one resource. Shortening it to a past window is how a closure is lifted — there is no delete here, and the original times are what an undo restores.

Reservierungen annehmen und ändern

booking:write
  • create_bookingÄndert DatenPOST /api/bookings

    Take a booking for a guest at a venue on a date and time. Check get_booking_availability first; an identical repeat is answered from the first call, not booked twice. No confirmation is sent, but the venue may still send its own reminder.

  • confirm_bookingÄndert DatenPOST /api/bookings/:bookingId/confirm

    Confirm a pending booking. This call emails nobody, but a confirmed booking becomes eligible for the venue's automatic reminder, which may reach the guest. Do not tell the caller the guest has been notified.

  • reschedule_bookingÄndert DatenPOST /api/bookings/:bookingId/reschedule

    Move an existing booking to a different date or time, keeping the guest and party size. The guest is not emailed about the change; the venue tells them.

  • cancel_bookingÄndert DatenPOST /api/bookings/:bookingId/cancel

    Cancel a booking, with an optional reason recorded against it. The reason does not reach the guest and no cancellation email is sent; the venue tells them.

Veranstaltungen lesen

event:read
  • list_eventsNur lesendGET /api/events

    List events, filterable by venue, status, category, search term, or upcoming-only.

  • get_eventNur lesendGET /api/events/:eventId

    Read one event: schedule, venue, capacity, ticketing and whether it is published.

  • list_event_registrationsNur lesendGET /api/events/:eventId/registrations

    List who has registered for an event, with party sizes and check-in state. This answers "how many are coming to the quiz".

Veranstaltungen anlegen, bearbeiten und veröffentlichen

event:write
  • create_eventÄndert DatenPOST /api/events

    Create an event at a venue. It starts as a draft and is not public until publish_event runs.

  • update_eventÄndert DatenPATCH /api/events/:eventId

    Change an event: title, description, dates, capacity, venue details, category or ticket links. Only the fields sent are written. Changes to a published event are live on the public page immediately.

  • publish_eventÄndert DatenPOST /api/events/:eventId/publish

    Publish a draft event so it appears on the venue's public page and starts taking registrations.

  • create_event_categoryÄndert DatenPOST /api/event-categories

    Create a category for the programme — live music, quiz, private hire — with a URL slug. It is on no event until create_event or update_event names its id. Slugs are unique within the organization.

  • update_event_categoryÄndert DatenPATCH /api/event-categories/:categoryId

    Rename a programme category or change its slug, description, colour, image or order. The change lands on every event filed under it, and a new slug changes the category’s public address.

Gästebuch lesen

contact:read
  • list_contactsNur lesendGET /api/contacts

    Search guests by name, email or phone, optionally within one contact group. Use it to resolve a name to a contactId.

  • get_contactNur lesendGET /api/contacts/:contactId

    Read one guest: contact details, consent state, and the email and phone endpoints they can be reached on.

  • list_contact_groupsNur lesendGET /api/contact-groups

    List contact groups (segments), static and rule-based, with member counts. Use it to find the groupId for add_contact_to_group.

Gäste anlegen, korrigieren und einsortieren

contact:write
  • create_contactÄndert DatenPOST /api/contacts

    Add a guest to the contact book. Creating a contact is not a marketing opt-in — consent is recorded separately.

  • update_contactÄndert DatenPATCH /api/contacts/:contactId

    Correct a guest’s details: name, email, phone, tags or custom fields. Only the fields sent are written, and at least one of email, phone or an external id must remain. This cannot change their marketing consent.

  • add_contact_to_groupÄndert DatenPOST /api/contact-groups/:groupId/members

    Put a guest into a contact group. Groups are how this product tags people — there is no separate tag. Adding somebody who is already in it changes nothing.

Gästegruppen anlegen und stilllegen

contact:write
  • create_contact_groupÄndert DatenPOST /api/contact-groups

    Create a contact group (a segment) to file guests into. Names are unique within the organization. Leave definition out for a hand-picked list; a definition makes it a rule-based group the platform recomputes.

  • update_contact_groupÄndert DatenPATCH /api/contact-groups/:groupId

    Rename a contact group or change its description, colour or matching rules. Changing the rules of a rule-based group changes who a campaign addressed to it will reach.

  • archive_contact_groupÄndert DatenPOST /api/contact-groups/:groupId/archive

    Take a contact group out of use: it stops appearing in the ordinary listing and is filed as archived rather than deleted, keeping every membership. unarchive_contact_group brings it back. There is no delete, by design.

  • unarchive_contact_groupÄndert DatenPOST /api/contact-groups/:groupId/unarchive

    Put an archived contact group back into use. Refused if it is not archived, so this cannot be used to check whether one is.

Besuche und Treueprogramm lesen

loyalty:read
  • list_visitsNur lesendGET /api/loyalty/visits

    Visit history: recorded guest check-ins, filterable by guest, venue, status and date range. This answers "when was she last in".

Dienstplan lesen

staff:read
  • list_staff_membersNur lesendGET /api/staff-members

    List the people on a venue's team, with their roles and employment state.

  • list_staff_shiftsNur lesendGET /api/staff-shifts

    The rota over a date range: who is on, when, in what role, and which shifts are still open. Requires from and to dates.

  • get_staff_coverage_dayNur lesendGET /api/staff-coverage/day

    Coverage for one venue on one date: rostered hours against expected demand, hour by hour, so a gap is visible. This answers "are we short on Saturday".

  • get_staff_publish_impactNur lesendGET /api/staff-shifts/publish-impact

    What publishing the rota for a venue over a date range would take off sale: with requireStaffShiftCoverage on, an unpublished shift leaves a resource bookable and a published one constrains it. Read this before publishing.

Dienstplan füllen und veröffentlichen

staff:write
  • create_staff_shiftÄndert DatenPOST /api/staff-shifts

    File a shift on the rota at a venue: date, start and end in the venue’s own wall clock, optional role and break. Leave staffMemberId out for an open shift nobody is assigned to. It is a draft until published.

  • update_staff_shiftÄndert DatenPATCH /api/staff-shifts/:shiftId

    Move a shift, reassign it, edit its role or break, or send status published to put it on the rota and draft to take it off. Where the venue requires shift cover, publishing changes what guests can book — read get_staff_publish_impact first.

Auswertungen lesen, inklusive Geld

analytics:read
  • get_booking_analyticsNur lesendGET /api/booking-analytics/summary

    Booking trend, capacity use, no-show rate, revenue and margin over a date range. The general "how did we do" number.

  • get_covers_reportNur lesendGET /api/booking-reporting/covers

    Booked covers by day and service type over a date range.

  • get_labour_cost_reportNur lesendGET /api/staff-reporting/labour-cost

    Rostered labour cost against booked covers for one venue over a date range, including cost per cover.

  • get_sales_reportNur lesendGET /api/sales-reporting

    How the enquiries taken over a date range turned out: won, lost, win rate, what the won ones were worth per currency, median hours to a first quote, and lost reasons by count. Only the value block needs analytics:read.

Sehen, was dieser Schlüssel selbst getan hat

agent:read
  • list_agent_actionsNur lesendGET /api/agent-actions

    List what THIS key has already done — its own changes and reads, newest first, with the id of each one and whether it can still be undone. Call it to check whether a write landed after a timeout, or before reporting back what you changed.

  • get_agent_action_revert_planNur lesendGET /api/agent-actions/:agentActionId/revert-plan

    Ask what undoing one of your own actions would do, and what it would refuse, without undoing anything. Call it before revert_agent_action when the change is not one you made seconds ago.

Eigene jüngste Änderungen selbst zurücknehmen lassen

agent:write
  • revert_agent_actionÄndert DatenPOST /api/agent-actions/:agentActionId/revert

    Undo one change YOU made, named by its id from list_agent_actions. Refused if it was not yours, was already undone, is older than an hour, or the record has changed since — the refusal says which.

  • revert_last_agent_actionÄndert DatenPOST /api/agent-actions/revert-last

    Undo the last change you made — this conversation only, when your client sends a session id. Pass expectedTool to be refused rather than undo the wrong thing if the ledger disagrees with what you think you did last.