Functionele omschrijving
Moeilijkheidsgraad:

De tools achter de configuratiedeur /mcpconfig: waarmee een omgeving wordt ingericht. Producten en prijzen, het front en het thema, e-mailsjablonen en de boekingsworkflow. Een sleutel met scope config opent deze deur; hoe je verbindt staat in Een AI-agent verbinden met de MCP-server. Het dagelijkse werk zit achter een andere deur — zie MCP operationele tools.

Plan en toepassen zijn twee tools

Elke schrijvende handeling bestaat hier uit twee tools: ..._plan laat zien wat er zou veranderen en schrijft niets, ..._apply voert het uit. Dat is geen formaliteit maar de kern van hoe deze deur veilig te gebruiken is: je laat een plan zien aan iemand die er ja op zegt, en pas dan wordt er iets geschreven. Ze hebben elk hun eigen recht, dus je kunt iemand wel laten kijken en niet laten wijzigen.

Een _apply die niets aantreft om te wijzigen is een succes en geen fout: als de waarde al stond zoals gevraagd, meldt het antwoord dat er niets veranderde. Een client die zijn antwoord kwijtraakte kan dus gewoon opnieuw proberen.

Twee sloten en het productieslot

Voordat hier iets geschreven wordt, moeten twee sloten open staan: één die de leverancier zet voor de hele omgeving, en één die de licentiehouder zelf zet. Staat er één dicht, dan wordt ook het plan geweigerd — anders zou de deur die je niet open kunt doen wel in detail vertellen wat erachter staat.

Daarbovenop geldt voor de zwaarste tools een derde voorwaarde: op een productieomgeving worden ze helemaal niet uitgevoerd. Dat zijn de tools met niveau 2 in de tabel hieronder — de statussen en de automatische statusovergangen. Die verzetten bepaalt welke e-mail bij welke statuswijziging uitgaat, en dat is bij de eerstvolgende taakverwerking echte post aan echte klanten. Thema-CSS wijzigen mag wel op productie: dat is te zien en terug te draaien.

De tools

ToolsLezen/schrijvenNiveauOmschrijving
env_describe / config_diff_vs_baseline / recent_changeslezen-Wat is deze omgeving, wat wijkt af van een verse installatie, en wat is er onlangs gewijzigd
object_explain / pricing_explain / availability_why_not_bookablelezen-Uitleg bij één product: de instellingen, de prijsopbouw, en waarom het op een datum niet boekbaar is
object_create / object_update / object_set_periods / object_set_extras / object_set_participantsschrijven1Producten aanmaken en wijzigen, met hun periodes, extra opties en deelnemerstypen
product_set_activeschrijven1Een product aan- of uitzetten
combi_create / combi_updateschrijven1Arrangementen samenstellen
theme_describe / theme_set_variables / theme_set_css / theme_set_logo / theme_rebuildlezen/schrijven1Het front-thema: kleuren en variabelen, eigen CSS, logo, en opnieuw compileren
brand_set_logoschrijven1Het huisstijllogo
content_block_describe / content_block_create / content_block_updatelezen/schrijven1De blokken waaruit een frontpagina is opgebouwd
content_block_deleteschrijven1Een blok verwijderen. Geweigerd zolang het nog ergens gebruikt wordt: op een pagina, in een thema, in een ander blok of in een formulier
menu_describe_items / menu_set_itemslezen/schrijven1De items van een menu als lijst: volgorde, uitklapmenu's, de pagina waar een item naartoe gaat en het label per taal
page_describe / page_create / page_updatelezen/schrijven1Contentpagina's in het front
page_list / page_check_linkslezen-Alle contentpagina's, en welke interne links in menu's, contentblokken en de homepage nergens naartoe gaan
page_deleteschrijven1Een pagina verwijderen. Geweigerd als een andere taalversie ernaar verwijst, tenzij je die verwijzing meteen laat opruimen
theme_set_menuschrijven1Welk menu de kop van een thema per taal toont
homepage_setschrijven1Welke pagina het front opent als een bezoeker op het basisadres komt
template_describe / template_create / template_update / template_section_setlezen/schrijven1E-mail- en pdf-sjablonen en hun kop-, voet- en css-onderdelen
workflow_describelezen-De hele boekingsworkflow in één antwoord: statussen, handmatige en automatische overgangen, en welk sjabloon bij welke overgang hoort — inclusief controles op sjablonen die nergens meer naar wijzen
status_setschrijven2Een boekingsstatus wijzigen: of hij bezetting inneemt, en waar iemand een boeking met de hand naartoe mag verplaatsen
auto_set / auto_deleteschrijven2Automatische statusovergangen: van welke status naar welke, op welk moment, en welke e-mail of sms daarbij hoort
language_listlezen-De talen van de omgeving (actief, standaard) en welke onderdelen vertaalbaar zijn
language_activateschrijven1Een fronttaal aan- of uitzetten; het plan telt wat er in die taal nog leeg staat
language_missing_reportlezen-Per onderdeel de teksten die in de brontaal wel en in de nieuwe taal nog niet gevuld zijn, met de brontekst erbij
translation_get / translation_setlezen/schrijven1Vertalingen lezen en opslaan, tot 50 tegelijk, over alle vertaalbare onderdelen heen

Het front inrichten

Een front bestaat uit contentblokken, pagina's die die blokken tonen, een menu, een thema en een homepage. Met de tools gaat dat in deze volgorde: blokken maken en vullen (content_block_create, content_block_update), er pagina's van maken (page_create), het menu vullen (menu_set_items), het menu aan het thema koppelen (theme_set_menu) en de homepage kiezen (homepage_set). Tot slot laat page_check_links zien of er nog links zijn die nergens naartoe gaan.

Onderweg wordt een aantal dingen bewaakt, zodat een fout niet pas bij de bezoeker opvalt:

  • De inhoud van een contentblok wordt vóór het opslaan gecontroleerd, op dezelfde manier als in de editor. Tekst die de pagina zou breken, zoals een losse accolade of een {if} zonder {/if}, wordt geweigerd. Plaats JavaScript en CSS met accolades tussen {literal} en {/literal}.
  • Het menu in de kop wordt per taal gekozen, en een taal zonder menu valt niet terug op een andere taal. Het plan van theme_set_menu noemt elke actieve taal die daarna geen menu heeft.
  • Een menu dat voor één taal is ingesteld, heeft alleen labels in die taal nodig. Een menu voor alle talen heeft een label in elke actieve taal nodig.
  • De homepage is één instelling voor alle talen. Wisselt een bezoeker van taal, dan volgt het front de gekoppelde taalversie van die pagina. Het plan van homepage_set waarschuwt voor elke actieve taal waarin de pagina geen versie heeft.
  • De linkcontrole kijkt alleen naar links waar een bezoeker op klikt. JavaScript telt niet mee, ook als daar iets als location.href in staat.

Een extra taal toevoegen

Zet je een fronttaal aan, dan wordt er niets gekopieerd. Alles wat nog geen tekst in die taal heeft, blijft in het front leeg: de productnamen, de opties, de statussen, de labels van velden, de contentblokken, het menu en de pagina's. Er valt vrijwel nergens iets terug op de standaardtaal. De taaltools maken van dat handwerk één gestructureerde klus:

  1. language_activate_plan laat zien hoeveel teksten er per onderdeel nog leeg staan. Pas na akkoord zet language_activate_apply de taal aan.
  2. language_missing_report geeft de werkvoorraad: per onderdeel welke teksten ontbreken, met de brontekst erbij.
  3. De agent vertaalt en translation_set_plan laat per tekst zien wat er zou veranderen. translation_set_apply slaat het op.

Drie dingen worden altijd bewaakt. Een tekst die al gevuld is, wordt niet overschreven, tenzij dat uitdrukkelijk gevraagd wordt. Codes als {NAME} of ##OWNER_ID## en de HTML-opmaak van een tekst moeten na het vertalen precies zo terugkomen. En een tekst mag niet langer zijn dan het veld toestaat. Voor een contentpagina in een nieuwe taal is een eigen url nodig; die wordt niet van de oorspronkelijke pagina overgenomen.

E-mail- en pdf-sjablonen vallen hier buiten: dat zijn aparte documenten per taal, en die maak je met de sjabloontools.

Voor al deze tools is het recht menu_config_language nodig, plus het recht van het scherm waar de tekst normaal bewerkt wordt. Wie de producten niet mag wijzigen, kan ze via AI dus ook niet vertalen.

De exacte, altijd actuele lijst met alle invoervelden vraag je op met de standaard MCP-methode tools/list op de deur zelf. Wat je terugkrijgt hangt af van je rechten, dus een kortere lijst dan hier betekent meestal dat een recht ontbreekt.

BETA. Deze deur is nieuw en wordt nog doorontwikkeld. Toolnamen, invoervelden en niveaus kunnen tussen releases wijzigen zonder overgangsperiode. Gebruik de plan-variant voordat je iets toepast, en bouw er nog geen productie-integratie op die niet stuk mag.