Laat je agents meewerken in Lumo
In de demo koppelen we een agent via MCP aan een werkruimte met voorbeelddata, en laten we zien hoe de assistent een automation bouwt, test en aanzet.
Lumo is het RevOps-CRM met Marketing, Sales en Customer Success & Support onder één dak, gebouwd voor mensen en AI-agents samen. Je agents lezen en schrijven via de REST API en de MCP-server, onder een sleutel die nooit meer mag dan zijn maker. Alles wat ze doen, staat op dezelfde records die je team ziet.
De film
Rustig maar. Je agent heeft het al ingepland. Vannacht. In anderhalve minuut zie je hoe je team in Lumo werkt, hoe je agents het headless draaien, en hoe de assistent een automation bouwt, test en aanzet.
De film is in het Engels.
Maandagochtend, 08.00 uur. Een klant heeft vrijdagmiddag laat gemaild dat hij een vraag heeft over de uitbreiding. Niemand heeft gereageerd, want het was vrijdagmiddag laat. Nu zit het team bij de koffie en de vraag is simpel: wie belt hem terug? De accountmanager denkt dat support het oppakt. Support denkt dat het een salesvraag is. En de mail staat in één inbox, van iemand die vandaag vrij is.
Zo gaat het in de meeste teams. Niet omdat mensen niet willen, maar omdat de opvolging tussen mensen in valt. En steeds vaker ook tussen mensen en software in. Want veel teams hebben inmiddels een eigen AI-agent draaien. Eén die inkomende mail samenvat, één die bezoekers op de site herkent, één die notities uit gesprekken haalt. Die agents doen nuttig werk, maar ze doen het naast het CRM. Hun uitkomst staat in een Slack-kanaal, een spreadsheet of een mail aan één persoon. Dus moet er nog steeds iemand overtypen.
Dat is het echte probleem met AI-agents in sales en service. Niet of ze slim genoeg zijn. Wel of hun werk terechtkomt op de plek waar je team kijkt. Een agent die een terugbelactie bedenkt maar hem niet kan vastleggen, heeft niets opgelost. Een agent die wel kan schrijven, maar met een sleutel die alles mag, is een risico dat niemand wil dragen.
Lumo is gebouwd zodat dat niet hoeft. Je agent werkt in dezelfde database als je team. Hij zoekt de klant op, ziet de open deal, legt een belafspraak vast en maakt een lead aan als het een nieuwe vraag is. Dat gebeurt onder een sleutel met alleen de rechten die hij nodig heeft, met een limiet, en met een spoor in het logboek. Maandagochtend opent de accountmanager Vandaag en de belafspraak staat er al. Met de notitie erbij die de agent vannacht schreef. Dus vraagt niemand meer wie het oppakt. Het is al gedaan.
Headless betekent hier iets heel concreets: je kunt Lumo laten draaien zonder dat iemand de interface opent. Je agents en je eigen systemen lezen en schrijven via de API en de MCP-server. Alles wat ze doen, landt op dezelfde personen, organisaties, deals, leads en activiteiten die je team in het scherm ziet, en ook op uren, belcampagnes, tickets en afspraken in de planner. Er is geen aparte agentlaag en geen tweede database.
Daar horen vier spelregels bij. Ten eerste een sleutel per agent. Elke gebruiker maakt zijn eigen sleutels bij Instellingen, API-sleutels, ook een lezer. Elke sleutel krijgt rechten over 24 onderdelen van de werkruimte, telkens lezen, schrijven of beide. Een sleutel zonder schrijfrecht kan echt niets wijzigen, ook niet via een omweg. En een sleutel komt nooit boven de rechten van wie hem maakte. Wat een rol mag, stel je in bij rollen en rechten.
Ten tweede grenzen. Standaard 600 verzoeken per minuut per sleutel, maximaal 1 MiB per verzoek en lijsten van hoogstens 200 records per pagina. Een agent die in een lus raakt, loopt tegen de limiet aan in plaats van je werkruimte vol te schrijven.
Ten derde geen dubbel werk. Stuurt je agent een Idempotency-Key mee, dan maakt een herhaald verzoek binnen 24 uur geen tweede record. Agents proberen nu eenmaal opnieuw als een verbinding hapert.
Ten vierde een spoor. Elke schrijfactie via de API staat in het auditlog met de bron api en de persoon die de sleutel maakte. Bij API-sleutels zie je per sleutel wanneer hij voor het laatst werkte. Een eigenaar of beheerder met het recht Koppelingen en sleutels ziet alle sleutels van de werkruimte en kan elke sleutel intrekken.
Wil je geen eigen agent bouwen, dan kan het ook van binnenuit. Je vraagt de AI-assistent in gewone taal om een automation. Hij bouwt de regel, test hem op een echt record en zet hem pas aan na jouw akkoord. Dat is ook een agent, in de zin dat hij blijft werken als jij naar huis bent.
Elke gebruiker maakt zijn eigen sleutels, en je agent krijgt nooit meer rechten dan jij. De rest doet je agent.
Ga naar Instellingen, API-sleutels en klik op Sleutel maken. Geef hem een naam die zegt welke agent hem gebruikt, bijvoorbeeld "Inbox-agent". Kies bij Rechten alleen wat nodig is, of begin met Alleen lezen.
Vul Verloopt op in voor een proef of een tijdelijke agent. Kopieer de sleutel meteen. Je ziet hem daarna nooit meer, dus zet hem in de kluis van je agentplatform.
Geef je MCP-client het adres /mcp van je werkruimte en de sleutel als Bearer-kop. De client vraagt de lijst met tools op en krijgt alleen de tools te zien die de sleutel mag gebruiken. Werk je met een connector in Claude.ai of ChatGPT, dan geef je alleen het adres op en klik je in Lumo op Toestaan. Lumo maakt dan zelf een sleutel van 90 dagen.
Laat de agent een paar dagen alleen search, get_person en list_deals gebruiken. Kijk of hij de juiste klanten vindt. Pas daarna geef je schrijfrecht op leads of activiteiten.
Wat de agent schrijft, staat op de tijdlijn van de persoon, de organisatie en de deal. Bij API-sleutels zie je Laatst gebruikt, en in het auditlog staat elke wijziging met de bron api.
Werkt het, maak dan een tweede sleutel met ruimere rechten en trek de oude in. Doet de agent iets wat je niet wilt, klik dan op Intrekken. Hij stopt direct.
MCP is de open standaard waarmee AI-agents gereedschappen van andere systemen gebruiken. Lumo heeft een MCP-server op /mcp. Je agent stuurt een verzoek met zijn API-sleutel, en krijgt een lijst met tools terug die hij mag gebruiken. Heeft de sleutel alleen leesrecht op contacten, dan ziet de agent ook alleen de tools om te zoeken en een persoon op te halen.
Er staan 593 tools klaar, verdeeld over 24 domeinen. Een gewone sleutel ziet er 506. De andere 87 zijn voor eigenaar- en beheerwerk en verschijnen alleen bij een sleutel met workspace:admin, en die kan alleen een eigenaar maken. Met ?toolsets= achter het adres beperk je een agent verder, bijvoorbeeld tot deals en activities.
Dus doet een agent veel meer dan contacten bijhouden. Hij zoekt met search, haalt deals op met list_deals en legt een belafspraak vast met log_activity. Hij schrijft uren met log_time of start een timer met start_timer, zie tijdregistratie. Hij zet mensen in een belcampagne met create_call_campaign en legt de uitkomst vast met record_call_outcome, zie telefonie. Hij zet mensen in een Cadence met add_people_to_cadence en haalt LinkedIn-acties op met claim_linkedin_actions. Hij leest een score met get_lead_score bij leadscoring, vult een persoon aan met enrich_person, en zoekt een vrij moment met get_planner_availability voor hij boekt met create_planner_booking in de planner. Voor marketing zijn er tools als create_marketing_campaign en record_campaign_spend.
Tools die een klant benaderen, mail versturen of iets voorgoed wissen, vragen een expliciete bevestiging met confirm: true. En elke tool is ook een REST-eindpunt onder /api/v1/tools. Een script zonder MCP-client kan dus precies hetzelfde.
Het verschil met een agent naast je CRM is waar het werk terechtkomt. In Lumo is er geen inbox voor agents en geen apart tabblad met suggesties. Een belafspraak die je agent vastlegt, is gewoon een activiteit. Hij staat op de tijdlijn van de persoon en de deal, in de activiteitenlijst, en op de dag dat hij gepland is op Vandaag van degene die hem moet doen.
Dat werkt omdat de API en de MCP-server dezelfde schrijfroute gebruiken als het scherm. Dezelfde regels voor verplichte velden, dezelfde koppelingen, dezelfde waarschuwingen als iets niet klopt. Overtreedt de agent een regel, dan krijgt hij een fout terug met uitleg per regel, en er wordt niets half opgeslagen. Een lead die via MCP binnenkomt, krijgt de bron mcp als je agent zelf geen bron meegeeft. Een activiteit via MCP staat op naam van wie de sleutel maakte. Wil je hem bij een andere collega leggen, dan geeft je agent via de REST API een eigenaar mee. Zo filter je later precies op wat je agents hebben aangemaakt.
Ook je eigen automatiseringen reageren op wat een agent doet. Maakt de agent een lead aan, dan start een regel als "Nieuwe lead, dan beltaak voor vandaag" net zo goed als bij een lead uit een formulier. Zo werken agents en regels samen zonder dat je ze aan elkaar hoeft te knopen.

Een agent die alles mag, wil niemand. Daarom draait in Lumo elke agent onder een eigen API-sleutel met rechten per onderdeel. Je kiest voor elk van de 24 onderdelen of de sleutel mag lezen, schrijven of allebei. Schrijven geeft geen leesrecht, dus een sleutel die alleen leads aanmaakt, kan je klantenbestand niet uitlezen. Webhooks beheren is een apart recht.
Elke gebruiker maakt zijn eigen sleutels, ook een lezer. Maar een sleutel komt nooit boven de rechten van zijn maker uit. Mag een verkoper de uren van collega's niet zien, dan ziet zijn agent ze ook niet. Alleen een eigenaar kan een sleutel met workspace:admin maken, en ook die werkt hoogstens als beheerder, nooit als eigenaar.
De sleutel zie je één keer. Daarna staat alleen een hash in de database, dus ook wie de database zou inzien, kan geen sleutel nabootsen. Een sleutel hoort in de Authorization-kop en wordt nooit uit de URL gelezen. Met Verloopt op geef je hem een einddatum, met Intrekken zet je hem direct uit.
De grenzen zijn hard. 600 verzoeken per minuut per sleutel, daarna een nette 429 met de wachttijd. Maximaal 1 MiB per verzoek. Onbekende velden worden geweigerd in plaats van stil genegeerd. Na 30 mislukte pogingen per minuut vanaf hetzelfde adres sluit de deur even. Alles hierover lees je bij beveiliging en privacy.

Niet elk team bouwt zijn eigen agent, en dat hoeft ook niet. Je kunt een agent ook configureren via de AI-assistent in Lumo. Je typt wat je wilt: "Als een lead een week zonder actie staat, maak dan een belafspraak voor de eigenaar voor vandaag." De assistent bouwt daar een automation van, met een trigger, voorwaarden en acties. Hij heeft daarvoor 52 gereedschappen: 21 om te lezen, 21 om een concept klaar te zetten en 10 die pas na jouw akkoord iets uitvoeren, zoals een automation aanzetten of een campagne versturen.
Die automation slaat hij altijd uit op. Daarna draait hij een test op een echt record uit je werkruimte en laat zien wat er zou gebeuren: Zou lopen of Zou niet lopen, met de reden. Er wordt bij die test niets opgeslagen of verstuurd. Klopt het, dan vraagt de assistent om je akkoord om de regel aan te zetten. Pas als jij op Akkoord, uitvoeren klikt, gaat hij aan.
Vanaf dat moment werkt de regel door, ook als niemand ingelogd is. De regels voor stilstaande deals en leads worden elk uur nagelopen. Dat is het soort agent dat de meeste teams eigenlijk zoeken: één die een afspraak onthoudt en hem elke dag uitvoert. Meer over wat de assistent verder kan, staat bij de AI-assistent.
Het resultaat zie je niet in de agent, maar in de ochtend van je team. Wat je externe agents 's nachts hebben vastgelegd en wat je automations hebben ingepland, staat op Vandaag. Per persoon, met wat te laat is bovenaan. De accountmanager hoeft niet in een kanaal te zoeken wat de agent heeft bedacht. Het staat bij de klant.
Wat naar buiten gaat, gebeurt nooit ongemerkt. Een automation kan een mail uit een sjabloon sturen, vanuit de Gmail van de eigenaar van het record. Het bouwscherm waarschuwt dan dat dit echt een mail naar de persoon stuurt. Via MCP vraagt elke tool die mail verstuurt om confirm: true, en de assistent verstuurt een campagne pas na jouw akkoord. Wil je dat een mens het laatste woord heeft, laat een regel dan een taak "Verslag sturen" maken. Dan stuurt de accountmanager het verslag zelf.
En een stilstaande deal komt hoogstens één keer per week bij dezelfde regel aan de beurt. Een agent die elke nacht opnieuw dezelfde taak aanmaakt, overspoelt je team. Met Niet maken als er al zo'n open activiteit staat, voorkomt een regel dat ook bij dubbele aanroepen. Meer over de ritmes rond bellen en opvolgen lees je bij Cadence.
Alles hieronder staat in het product. Wat er nog niet is, staat verderop in de kanttekening.
Op /mcp, JSON-RPC 2.0, met 593 tools in 24 domeinen. Een gewone sleutel ziet er 506, de lijst volgt zijn rechten.
56 vaste routes onder /api/v1 plus openapi.json in OpenAPI 3.1. Daarnaast is elke MCP-tool bereikbaar via /api/v1/tools.
24 onderdelen, elk lezen, schrijven of beide. Een sleutel komt nooit boven de rechten van zijn maker.
Claude.ai en ChatGPT koppel je met OAuth 2.1. Lumo maakt dan een sleutel van 90 dagen binnen jouw rechten.
Verloopt op voor tijdelijke agents, Intrekken voor direct stoppen, Laatst gebruikt om te zien wie nog draait.
600 verzoeken per minuut per sleutel, 1 MiB per verzoek en hoogstens 200 records per pagina. Een Idempotency-Key voorkomt 24 uur lang een dubbel record.
Elke wijziging via de API staat in het logboek met de bron api en de maker van de sleutel.
Ondertekende meldingen bij een nieuwe persoon of een andere gebeurtenis, zodat je agent niet hoeft te blijven vragen.
Een voorbeeld, geen klantcase. Stel: een installatiebedrijf voor zonnepanelen en warmtepompen met zes verkopers en een binnendienst van twee. Aanvragen komen binnen via mail, het formulier op de site en telefoon. Het team heeft zelf een AI-agent gebouwd die 's avonds de algemene inbox doorloopt.
De beheerder maakt bij Instellingen, API-sleutels een sleutel "Inbox-agent" met Contacten lezen, Leads schrijven, Deals lezen en Activiteiten schrijven, en zet Verloopt op over drie maanden. Hij koppelt de agent aan /mcp.
Vrijdag, 23.10 uur. Een bestaande klant mailt dat hij naast de panelen ook een warmtepomp overweegt. De agent roept search aan met het mailadres en vindt de persoon en zijn organisatie. Met list_deals ziet hij een gewonnen deal van vorig jaar en geen open deal. Hij roept create_lead aan met de titel "Warmtepomp bij bestaande klant" en de persoon gekoppeld. Daarna zet hij een belafspraak voor maandag 08.30 uur, gekoppeld aan de lead, met als notitie een samenvatting van de mail. Dat doet hij via de REST API, met de accountmanager van die klant als eigenaar. Met log_activity had de afspraak op naam van de beheerder gestaan, want via MCP krijgt een activiteit de maker van de sleutel als eigenaar.
Zaterdag, 02.40 uur. De agent verliest even de verbinding en stuurt hetzelfde verzoek nog een keer. Omdat hij een Idempotency-Key meestuurt, blijft het bij één lead.
Zondag. In Lumo staat een automation die de assistent eerder bouwde: "Lead een week zonder actie, dan opvolgen". Die loopt elk uur, maar deze lead is nieuw, dus er gebeurt niets.
Maandag, 08.00 uur. De verkoper opent Vandaag. Bovenaan staat de belafspraak van 08.30 uur, met de samenvatting erbij. Op de lead ziet hij de bron mcp. Om 08.40 uur zet hij de lead op Gekwalificeerd. In het auditlog ziet de beheerder later dat de lead en de activiteit zijn aangemaakt via de API, onder de sleutel van de Inbox-agent. Niemand heeft gevraagd wie het oppakt.
Deze punten lopen we ook langs bij de implementatie.
De headless laag is geen los product. Het is een andere ingang voor hetzelfde systeem. De technische details, met alle routes, foutcodes en webhooks, staan bij API en integraties. Hoe sleutels, rollen, tweestapsverificatie en het auditlog samenhangen, lees je bij beveiliging en privacy.
Regels die in Lumo zelf blijven lopen, bouw je bij automatiseringen, met de hand of via de AI-assistent. Wil je de ritmes rond bellen, mailen en LinkedIn vastleggen, kijk dan bij Cadence. Een externe LinkedIn-motor praat ook via de API met Lumo, met het recht Cadence schrijven. En een overzicht van alle koppelingen, ook Gmail en de import uit Pipedrive, staat bij integraties.
Met 593 tools kan een agent bijna alles, maar niet alles. Inloggen en tweestapsverificatie, sleutels beheren, teamleden en rollen, Gmail of de agenda koppelen en geheimen teruglezen doe je in Lumo zelf. Ook de publieke kant, zoals de tekenpagina, het klantportaal, het helpcenter en de formulieren voor bezoekers, loopt niet via MCP. Een bestand groter dan ongeveer 4 MB stuur je niet in één aanroep. En een sleutel ziet binnen de rechten van zijn maker alle records van de werkruimte. Wil je dat een agent minder ziet, beperk dan zijn rechten per onderdeel of met ?toolsets=.
Een CRM dat je kunt gebruiken zonder de interface te openen. In Lumo lezen en schrijven je agents en systemen via de REST API en de MCP-server, en alles landt op dezelfde records die je team in het scherm ziet.
593 tools in 24 domeinen, van search, list_deals en log_activity tot log_time, create_call_campaign, get_lead_score en create_planner_booking. Een gewone sleutel ziet er 506. De andere 87 zijn voor beheerwerk en vragen workspace:admin.
Met elke agent of client die MCP spreekt, of die HTTP-verzoeken kan doen naar de REST API. Claude.ai en ChatGPT koppel je als connector via OAuth: je geeft het adres op, klikt in Lumo op Toestaan en er komt een sleutel van 90 dagen. Lumo schrijft geen agentplatform voor.
Elke gebruiker, ook een lezer, voor zichzelf. Een sleutel komt nooit boven de rechten van zijn maker uit. Een eigenaar of beheerder met Koppelingen en sleutels ziet alle sleutels en kan ze intrekken.
Nee. Een agent mag precies wat zijn sleutel mag, per onderdeel lezen, schrijven of beide. Een sleutel zonder schrijfrecht kan niets wijzigen, en tools die mailen, een klant benaderen of wissen vragen confirm: true.
Op de tijdlijn van de records, bij Laatst gebruikt van de sleutel, en in het auditlog, waar elke wijziging staat met de bron api en de maker van de sleutel.
Stuurt hij een Idempotency-Key mee, dan maakt het tweede verzoek binnen 24 uur geen nieuw record. Een ander verzoek met dezelfde sleutel wordt geweigerd.
Ja, via de AI-assistent. Je beschrijft wat er moet gebeuren, hij bouwt een automation, test hem op een echt record en zet hem aan na jouw akkoord.
Ja, maar nooit ongemerkt. Een MCP-tool die mail verstuurt vraagt confirm: true. Een automation stuurt een sjabloonmail vanuit de Gmail van de eigenaar van het record. En de assistent verstuurt een campagne pas na jouw akkoord.
Klik bij API-sleutels op Intrekken. De sleutel stopt direct. Wat de agent al schreef, staat in het auditlog, zodat je ziet wat je moet terugdraaien.
In de demo koppelen we een agent via MCP aan een werkruimte met voorbeelddata, en laten we zien hoe de assistent een automation bouwt, test en aanzet.
