MCP configuratie-tools
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
| Tools | Lezen/schrijven | Niveau | Omschrijving |
|---|---|---|---|
| env_describe / config_diff_vs_baseline / recent_changes | lezen | - | Wat is deze omgeving, wat wijkt af van een verse installatie, en wat is er onlangs gewijzigd |
| object_explain / pricing_explain / availability_why_not_bookable | lezen | - | 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_participants | schrijven | 1 | Producten aanmaken en wijzigen, met hun periodes, extra opties en deelnemerstypen |
| product_set_active | schrijven | 1 | Een product aan- of uitzetten |
| combi_create / combi_update | schrijven | 1 | Arrangementen samenstellen |
| theme_describe / theme_set_variables / theme_set_css / theme_set_logo / theme_rebuild | lezen/schrijven | 1 | Het front-thema: kleuren en variabelen, eigen CSS, logo, en opnieuw compileren |
| brand_set_logo | schrijven | 1 | Het huisstijllogo |
| content_block_describe / content_block_create / content_block_update | lezen/schrijven | 1 | De blokken waaruit een frontpagina is opgebouwd |
| content_block_delete | schrijven | 1 | Een 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_items | lezen/schrijven | 1 | De 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_update | lezen/schrijven | 1 | Contentpagina's in het front |
| page_list / page_check_links | lezen | - | Alle contentpagina's, en welke interne links in menu's, contentblokken en de homepage nergens naartoe gaan |
| page_delete | schrijven | 1 | Een pagina verwijderen. Geweigerd als een andere taalversie ernaar verwijst, tenzij je die verwijzing meteen laat opruimen |
| theme_set_menu | schrijven | 1 | Welk menu de kop van een thema per taal toont |
| homepage_set | schrijven | 1 | Welke pagina het front opent als een bezoeker op het basisadres komt |
| template_describe / template_create / template_update / template_section_set | lezen/schrijven | 1 | E-mail- en pdf-sjablonen en hun kop-, voet- en css-onderdelen |
| workflow_describe | lezen | - | 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_set | schrijven | 2 | Een boekingsstatus wijzigen: of hij bezetting inneemt, en waar iemand een boeking met de hand naartoe mag verplaatsen |
| auto_set / auto_delete | schrijven | 2 | Automatische statusovergangen: van welke status naar welke, op welk moment, en welke e-mail of sms daarbij hoort |
| language_list | lezen | - | De talen van de omgeving (actief, standaard) en welke onderdelen vertaalbaar zijn |
| language_activate | schrijven | 1 | Een fronttaal aan- of uitzetten; het plan telt wat er in die taal nog leeg staat |
| language_missing_report | lezen | - | 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_set | lezen/schrijven | 1 | Vertalingen 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_menunoemt 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_setwaarschuwt 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.hrefin 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:
language_activate_planlaat zien hoeveel teksten er per onderdeel nog leeg staan. Pas na akkoord zetlanguage_activate_applyde taal aan.language_missing_reportgeeft de werkvoorraad: per onderdeel welke teksten ontbreken, met de brontekst erbij.- De agent vertaalt en
translation_set_planlaat per tekst zien wat er zou veranderen.translation_set_applyslaat 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.


