[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"doc-\u002Fen\u002Fdocs\u002Fdeveloppeurs\u002Fmcp":3,"docs-nav-en":1916},{"_path":4,"_dir":5,"_draft":6,"_partial":6,"_locale":7,"title":8,"description":9,"body":10,"_type":1910,"_id":1911,"_source":1912,"_file":1913,"_stem":1914,"_extension":1915},"\u002Fen\u002Fdocs\u002Fdeveloppeurs\u002Fmcp","developpeurs",false,"","Drive betool from Claude (MCP)","Connect Claude, Claude Desktop or any MCP app to betool (API key or OAuth 2.1) to read your configuration and propose changes, with human validation.",{"type":11,"children":12,"toc":1896},"root",[13,65,79,114,177,184,286,291,318,324,329,820,837,842,863,1136,1166,1172,1184,1282,1287,1293,1305,1317,1335,1365,1370,1389,1433,1466,1485,1497,1553,1586,1596,1602,1626,1631,1689,1702,1739,1748,1767,1773,1798,1803,1809,1834,1840,1865,1871],{"type":14,"tag":15,"props":16,"children":17},"element","p",{},[18,21,27,29,34,36,41,43,48,50,55,57,63],{"type":19,"value":20},"text","betool exposes an ",{"type":14,"tag":22,"props":23,"children":24},"strong",{},[25],{"type":19,"value":26},"MCP server",{"type":19,"value":28}," (Model Context Protocol): an external MCP client — ",{"type":14,"tag":22,"props":30,"children":31},{},[32],{"type":19,"value":33},"Claude Code",{"type":19,"value":35},", ",{"type":14,"tag":22,"props":37,"children":38},{},[39],{"type":19,"value":40},"Claude Desktop",{"type":19,"value":42},", or any compatible application — can ",{"type":14,"tag":22,"props":44,"children":45},{},[46],{"type":19,"value":47},"read your organisation's configuration",{"type":19,"value":49}," and ",{"type":14,"tag":22,"props":51,"children":52},{},[53],{"type":19,"value":54},"propose changes in natural language",{"type":19,"value":56}," (create\u002Fedit a pipeline, a role, a mission, an evaluation…). It is like an assistant configuring betool ",{"type":14,"tag":58,"props":59,"children":60},"em",{},[61],{"type":19,"value":62},"with",{"type":19,"value":64}," you, fully governed.",{"type":14,"tag":15,"props":66,"children":67},{},[68,70,77],{"type":19,"value":69},"Two ways to connect, to the same endpoint ",{"type":14,"tag":71,"props":72,"children":74},"code",{"className":73},[],[75],{"type":19,"value":76},"https:\u002F\u002Fplatform.betool.ai\u002Fmcp",{"type":19,"value":78},":",{"type":14,"tag":80,"props":81,"children":82},"ul",{},[83,104],{"type":14,"tag":84,"props":85,"children":86},"li",{},[87,89,94,96,102],{"type":19,"value":88},"an ",{"type":14,"tag":22,"props":90,"children":91},{},[92],{"type":19,"value":93},"MCP API key",{"type":19,"value":95}," in the ",{"type":14,"tag":71,"props":97,"children":99},{"className":98},[],[100],{"type":19,"value":101},"Authorization",{"type":19,"value":103}," header — simplest for Claude Code;",{"type":14,"tag":84,"props":105,"children":106},{},[107,112],{"type":14,"tag":22,"props":108,"children":109},{},[110],{"type":19,"value":111},"OAuth 2.1 + PKCE",{"type":19,"value":113}," — for third-party applications, with no secret to handle.",{"type":14,"tag":115,"props":116,"children":118},"alert",{"type":117},"info",[119],{"type":14,"tag":15,"props":120,"children":121},{},[122,127,129,134,136,141,143,148,150,155,157,162,164,168,170,175],{"type":14,"tag":22,"props":123,"children":124},{},[125],{"type":19,"value":126},"Nothing is applied without an explicit approval.",{"type":19,"value":128}," Every change goes through a ",{"type":14,"tag":22,"props":130,"children":131},{},[132],{"type":19,"value":133},"proposal",{"type":19,"value":135},". With the ",{"type":14,"tag":58,"props":137,"children":138},{},[139],{"type":19,"value":140},"Read + proposals",{"type":19,"value":142}," scope, you approve it with an ",{"type":14,"tag":22,"props":144,"children":145},{},[146],{"type":19,"value":147},"Accept and apply",{"type":19,"value":149}," button inside betool. With the ",{"type":14,"tag":58,"props":151,"children":152},{},[153],{"type":19,"value":154},"Full",{"type":19,"value":156}," scope, the application may resolve its own proposals ",{"type":14,"tag":22,"props":158,"children":159},{},[160],{"type":19,"value":161},"after you agree in its own conversation",{"type":19,"value":163}," — the machine equivalent of that button, restricted to this scope and audited like everything else. Pick ",{"type":14,"tag":58,"props":165,"children":166},{},[167],{"type":19,"value":140},{"type":19,"value":169}," if you want the approval to happen ",{"type":14,"tag":22,"props":171,"children":172},{},[173],{"type":19,"value":174},"inside betool",{"type":19,"value":176},", and nowhere else.",{"type":14,"tag":178,"props":179,"children":181},"h2",{"id":180},"what-claude-can-do",[182],{"type":19,"value":183},"What Claude can do",{"type":14,"tag":80,"props":185,"children":186},{},[187,197,207,254,271],{"type":14,"tag":84,"props":188,"children":189},{},[190,195],{"type":14,"tag":22,"props":191,"children":192},{},[193],{"type":19,"value":194},"Read",{"type":19,"value":196},": model inventory, a pipeline's graph and nodes, node configuration contracts, roles\u002Fmissions, available tools, knowledge base.",{"type":14,"tag":84,"props":198,"children":199},{},[200,205],{"type":14,"tag":22,"props":201,"children":202},{},[203],{"type":19,"value":204},"Read your data",{"type":19,"value":206},": your organization's no-code databases — databases, tables, columns and rows. The client discovers them on its own; a key cannot be restricted to a subset of databases.",{"type":14,"tag":84,"props":208,"children":209},{},[210,215,217,223,225,230,232,237,238,243,245,252],{"type":14,"tag":22,"props":211,"children":212},{},[213],{"type":19,"value":214},"Propose",{"type":19,"value":216},": via the ",{"type":14,"tag":71,"props":218,"children":220},{"className":219},[],[221],{"type":19,"value":222},"proposals.create",{"type":19,"value":224}," tool, a ",{"type":14,"tag":58,"props":226,"children":227},{},[228],{"type":19,"value":229},"pending",{"type":19,"value":231}," change proposal — you accept or reject it in the UI. This also covers ",{"type":14,"tag":22,"props":233,"children":234},{},[235],{"type":19,"value":236},"creating a model",{"type":19,"value":49},{"type":14,"tag":22,"props":239,"children":240},{},[241],{"type":19,"value":242},"launching a benchmark",{"type":19,"value":244}," (see ",{"type":14,"tag":246,"props":247,"children":249},"a",{"href":248},"#what-can-be-proposed",[250],{"type":19,"value":251},"What can be proposed",{"type":19,"value":253},").",{"type":14,"tag":84,"props":255,"children":256},{},[257,262,264,269],{"type":14,"tag":22,"props":258,"children":259},{},[260],{"type":19,"value":261},"Write data",{"type":19,"value":263}," ",{"type":14,"tag":58,"props":265,"children":266},{},[267],{"type":19,"value":268},"(Full scope)",{"type":19,"value":270},": create, update or claim a row in one of your databases, after your explicit agreement in the conversation. Unlike configuration, a data write is not versioned — it cannot be restored.",{"type":14,"tag":84,"props":272,"children":273},{},[274,279,280,284],{"type":14,"tag":22,"props":275,"children":276},{},[277],{"type":19,"value":278},"Talk to your models",{"type":19,"value":263},{"type":14,"tag":58,"props":281,"children":282},{},[283],{"type":19,"value":268},{"type":19,"value":285},": hold a multi-turn conversation with a model you have explicitly opened to external agents — see below.",{"type":14,"tag":15,"props":287,"children":288},{},[289],{"type":19,"value":290},"Claude discovers each node's exact contract (fields, allowed values) before proposing: no guessing, no invalid configuration.",{"type":14,"tag":15,"props":292,"children":293},{},[294,296,301,303,309,311,316],{"type":19,"value":295},"A configuration's ",{"type":14,"tag":22,"props":297,"children":298},{},[299],{"type":19,"value":300},"secrets",{"type":19,"value":302}," (HMAC secret, token, password) never reach it: ",{"type":14,"tag":71,"props":304,"children":306},{"className":305},[],[307],{"type":19,"value":308},"models.inspect_pipeline",{"type":19,"value":310}," and proposals return them ",{"type":14,"tag":22,"props":312,"children":313},{},[314],{"type":19,"value":315},"masked",{"type":19,"value":317},". A proposal that sends back a configuration as it read it keeps the saved secret, without the AI ever having seen it.",{"type":14,"tag":178,"props":319,"children":321},{"id":320},"exposed-tools",[322],{"type":19,"value":323},"Exposed tools",{"type":14,"tag":15,"props":325,"children":326},{},[327],{"type":19,"value":328},"Tools are grouped by family. The client discovers them on its own when connecting; a connector's tools only appear if your organization uses it.",{"type":14,"tag":330,"props":331,"children":332},"table",{},[333,357],{"type":14,"tag":334,"props":335,"children":336},"thead",{},[337],{"type":14,"tag":338,"props":339,"children":340},"tr",{},[341,347,352],{"type":14,"tag":342,"props":343,"children":344},"th",{},[345],{"type":19,"value":346},"Family",{"type":14,"tag":342,"props":348,"children":349},{},[350],{"type":19,"value":351},"Tools",{"type":14,"tag":342,"props":353,"children":354},{},[355],{"type":19,"value":356},"Role",{"type":14,"tag":358,"props":359,"children":360},"tbody",{},[361,444,512,559,620,652,708,755],{"type":14,"tag":338,"props":362,"children":363},{},[364,374,439],{"type":14,"tag":365,"props":366,"children":367},"td",{},[368],{"type":14,"tag":71,"props":369,"children":371},{"className":370},[],[372],{"type":19,"value":373},"models",{"type":14,"tag":365,"props":375,"children":376},{},[377,383,384,390,391,397,398,404,405,411,412,418,419,425,426,432,433],{"type":14,"tag":71,"props":378,"children":380},{"className":379},[],[381],{"type":19,"value":382},"list_models",{"type":19,"value":35},{"type":14,"tag":71,"props":385,"children":387},{"className":386},[],[388],{"type":19,"value":389},"lookup_model",{"type":19,"value":35},{"type":14,"tag":71,"props":392,"children":394},{"className":393},[],[395],{"type":19,"value":396},"list_groups",{"type":19,"value":35},{"type":14,"tag":71,"props":399,"children":401},{"className":400},[],[402],{"type":19,"value":403},"inspect_pipeline",{"type":19,"value":35},{"type":14,"tag":71,"props":406,"children":408},{"className":407},[],[409],{"type":19,"value":410},"list_contexts",{"type":19,"value":35},{"type":14,"tag":71,"props":413,"children":415},{"className":414},[],[416],{"type":19,"value":417},"get_pipeline_trace",{"type":19,"value":35},{"type":14,"tag":71,"props":420,"children":422},{"className":421},[],[423],{"type":19,"value":424},"get_exchange_metadata",{"type":19,"value":35},{"type":14,"tag":71,"props":427,"children":429},{"className":428},[],[430],{"type":19,"value":431},"automation_health",{"type":19,"value":35},{"type":14,"tag":71,"props":434,"children":436},{"className":435},[],[437],{"type":19,"value":438},"get_entry_endpoints",{"type":14,"tag":365,"props":440,"children":441},{},[442],{"type":19,"value":443},"Model inventory, reading a pipeline and its executions, status of blocked automations",{"type":14,"tag":338,"props":445,"children":446},{},[447,456,507],{"type":14,"tag":365,"props":448,"children":449},{},[450],{"type":14,"tag":71,"props":451,"children":453},{"className":452},[],[454],{"type":19,"value":455},"pipeline",{"type":14,"tag":365,"props":457,"children":458},{},[459,465,466,472,473,479,480,486,487,493,494,500,501],{"type":14,"tag":71,"props":460,"children":462},{"className":461},[],[463],{"type":19,"value":464},"list_node_kinds",{"type":19,"value":35},{"type":14,"tag":71,"props":467,"children":469},{"className":468},[],[470],{"type":19,"value":471},"lookup_node_contract",{"type":19,"value":35},{"type":14,"tag":71,"props":474,"children":476},{"className":475},[],[477],{"type":19,"value":478},"lookup_module",{"type":19,"value":35},{"type":14,"tag":71,"props":481,"children":483},{"className":482},[],[484],{"type":19,"value":485},"list_all_tools",{"type":19,"value":35},{"type":14,"tag":71,"props":488,"children":490},{"className":489},[],[491],{"type":19,"value":492},"list_config_options",{"type":19,"value":35},{"type":14,"tag":71,"props":495,"children":497},{"className":496},[],[498],{"type":19,"value":499},"list_schemas",{"type":19,"value":35},{"type":14,"tag":71,"props":502,"children":504},{"className":503},[],[505],{"type":19,"value":506},"validate",{"type":14,"tag":365,"props":508,"children":509},{},[510],{"type":19,"value":511},"Node contracts, configuration options, validation of a graph before proposing",{"type":14,"tag":338,"props":513,"children":514},{},[515,524,554],{"type":14,"tag":365,"props":516,"children":517},{},[518],{"type":14,"tag":71,"props":519,"children":521},{"className":520},[],[522],{"type":19,"value":523},"agents",{"type":14,"tag":365,"props":525,"children":526},{},[527,533,534,540,541,547,548],{"type":14,"tag":71,"props":528,"children":530},{"className":529},[],[531],{"type":19,"value":532},"list_roles",{"type":19,"value":35},{"type":14,"tag":71,"props":535,"children":537},{"className":536},[],[538],{"type":19,"value":539},"lookup_role",{"type":19,"value":35},{"type":14,"tag":71,"props":542,"children":544},{"className":543},[],[545],{"type":19,"value":546},"list_missions",{"type":19,"value":35},{"type":14,"tag":71,"props":549,"children":551},{"className":550},[],[552],{"type":19,"value":553},"lookup_mission",{"type":14,"tag":365,"props":555,"children":556},{},[557],{"type":19,"value":558},"Your agents' roles and missions",{"type":14,"tag":338,"props":560,"children":561},{},[562,571,615],{"type":14,"tag":365,"props":563,"children":564},{},[565],{"type":14,"tag":71,"props":566,"children":568},{"className":567},[],[569],{"type":19,"value":570},"benchmarks",{"type":14,"tag":365,"props":572,"children":573},{},[574,580,581,587,588,594,595,601,602,608,609],{"type":14,"tag":71,"props":575,"children":577},{"className":576},[],[578],{"type":19,"value":579},"list",{"type":19,"value":35},{"type":14,"tag":71,"props":582,"children":584},{"className":583},[],[585],{"type":19,"value":586},"get",{"type":19,"value":35},{"type":14,"tag":71,"props":589,"children":591},{"className":590},[],[592],{"type":19,"value":593},"list_check_kinds",{"type":19,"value":35},{"type":14,"tag":71,"props":596,"children":598},{"className":597},[],[599],{"type":19,"value":600},"list_runs",{"type":19,"value":35},{"type":14,"tag":71,"props":603,"children":605},{"className":604},[],[606],{"type":19,"value":607},"get_run",{"type":19,"value":35},{"type":14,"tag":71,"props":610,"children":612},{"className":611},[],[613],{"type":19,"value":614},"run_status",{"type":14,"tag":365,"props":616,"children":617},{},[618],{"type":19,"value":619},"Evaluation scenarios and the results of their runs",{"type":14,"tag":338,"props":621,"children":622},{},[623,632,641],{"type":14,"tag":365,"props":624,"children":625},{},[626],{"type":14,"tag":71,"props":627,"children":629},{"className":628},[],[630],{"type":19,"value":631},"knowledge",{"type":14,"tag":365,"props":633,"children":634},{},[635],{"type":14,"tag":71,"props":636,"children":638},{"className":637},[],[639],{"type":19,"value":640},"search",{"type":14,"tag":365,"props":642,"children":643},{},[644,646],{"type":19,"value":645},"Search in your ",{"type":14,"tag":246,"props":647,"children":649},{"href":648},"\u002Fen\u002Fdocs\u002Fpipelines\u002Fbase-de-connaissances",[650],{"type":19,"value":651},"knowledge base",{"type":14,"tag":338,"props":653,"children":654},{},[655,672,697],{"type":14,"tag":365,"props":656,"children":657},{},[658,664,666],{"type":14,"tag":71,"props":659,"children":661},{"className":660},[],[662],{"type":19,"value":663},"database_query",{"type":19,"value":665}," \u002F ",{"type":14,"tag":71,"props":667,"children":669},{"className":668},[],[670],{"type":19,"value":671},"database_manage",{"type":14,"tag":365,"props":673,"children":674},{},[675,677,683,684,690,691],{"type":19,"value":676},"read; ",{"type":14,"tag":71,"props":678,"children":680},{"className":679},[],[681],{"type":19,"value":682},"create_row",{"type":19,"value":35},{"type":14,"tag":71,"props":685,"children":687},{"className":686},[],[688],{"type":19,"value":689},"update_row",{"type":19,"value":35},{"type":14,"tag":71,"props":692,"children":694},{"className":693},[],[695],{"type":19,"value":696},"claim_row",{"type":14,"tag":365,"props":698,"children":699},{},[700,702,706],{"type":19,"value":701},"Your no-code databases (write: ",{"type":14,"tag":58,"props":703,"children":704},{},[705],{"type":19,"value":154},{"type":19,"value":707}," scope)",{"type":14,"tag":338,"props":709,"children":710},{},[711,720,750],{"type":14,"tag":365,"props":712,"children":713},{},[714],{"type":14,"tag":71,"props":715,"children":717},{"className":716},[],[718],{"type":19,"value":719},"conversation",{"type":14,"tag":365,"props":721,"children":722},{},[723,729,730,736,737,743,744],{"type":14,"tag":71,"props":724,"children":726},{"className":725},[],[727],{"type":19,"value":728},"open",{"type":19,"value":35},{"type":14,"tag":71,"props":731,"children":733},{"className":732},[],[734],{"type":19,"value":735},"send",{"type":19,"value":35},{"type":14,"tag":71,"props":738,"children":740},{"className":739},[],[741],{"type":19,"value":742},"poll",{"type":19,"value":35},{"type":14,"tag":71,"props":745,"children":747},{"className":746},[],[748],{"type":19,"value":749},"history",{"type":14,"tag":365,"props":751,"children":752},{},[753],{"type":19,"value":754},"Talk to a model (see below)",{"type":14,"tag":338,"props":756,"children":757},{},[758,767,797],{"type":14,"tag":365,"props":759,"children":760},{},[761],{"type":14,"tag":71,"props":762,"children":764},{"className":763},[],[765],{"type":19,"value":766},"proposals",{"type":14,"tag":365,"props":768,"children":769},{},[770,776,777,783,784,790,791],{"type":14,"tag":71,"props":771,"children":773},{"className":772},[],[774],{"type":19,"value":775},"create",{"type":19,"value":35},{"type":14,"tag":71,"props":778,"children":780},{"className":779},[],[781],{"type":19,"value":782},"describe_kind",{"type":19,"value":35},{"type":14,"tag":71,"props":785,"children":787},{"className":786},[],[788],{"type":19,"value":789},"apply",{"type":19,"value":35},{"type":14,"tag":71,"props":792,"children":794},{"className":793},[],[795],{"type":19,"value":796},"reject",{"type":14,"tag":365,"props":798,"children":799},{},[800,802,807,808,813,815,819],{"type":19,"value":801},"Propose a change, read its contract, resolve it (",{"type":14,"tag":71,"props":803,"children":805},{"className":804},[],[806],{"type":19,"value":789},{"type":19,"value":665},{"type":14,"tag":71,"props":809,"children":811},{"className":810},[],[812],{"type":19,"value":796},{"type":19,"value":814},": ",{"type":14,"tag":58,"props":816,"children":817},{},[818],{"type":19,"value":154},{"type":19,"value":707},{"type":14,"tag":15,"props":821,"children":822},{},[823,828,829,835],{"type":14,"tag":22,"props":824,"children":825},{},[826],{"type":19,"value":827},"A model's entry URL, ready to paste.",{"type":19,"value":263},{"type":14,"tag":71,"props":830,"children":832},{"className":831},[],[833],{"type":19,"value":834},"models.get_entry_endpoints",{"type":19,"value":836}," returns the full public URL of each receiver declared on a model's Start (inbound webhook, messaging platform callback…) — enough to hand it to a partner without hunting for the path in the UI.",{"type":14,"tag":178,"props":838,"children":840},{"id":839},"what-can-be-proposed",[841],{"type":19,"value":251},{"type":14,"tag":15,"props":843,"children":844},{},[845,847,853,855,861],{"type":19,"value":846},"Every configuration change goes through ",{"type":14,"tag":71,"props":848,"children":850},{"className":849},[],[851],{"type":19,"value":852},"proposals.create(kind, payload)",{"type":19,"value":854},". Before writing a payload, the client reads its exact contract with ",{"type":14,"tag":71,"props":856,"children":858},{"className":857},[],[859],{"type":19,"value":860},"proposals.describe_kind(kind)",{"type":19,"value":862},". The available kinds:",{"type":14,"tag":330,"props":864,"children":865},{},[866,882],{"type":14,"tag":334,"props":867,"children":868},{},[869],{"type":14,"tag":338,"props":870,"children":871},{},[872,877],{"type":14,"tag":342,"props":873,"children":874},{},[875],{"type":19,"value":876},"Kind",{"type":14,"tag":342,"props":878,"children":879},{},[880],{"type":19,"value":881},"Effect once accepted",{"type":14,"tag":358,"props":883,"children":884},{},[885,902,919,936,953,977,1001,1018,1042,1066,1097,1119],{"type":14,"tag":338,"props":886,"children":887},{},[888,897],{"type":14,"tag":365,"props":889,"children":890},{},[891],{"type":14,"tag":71,"props":892,"children":894},{"className":893},[],[895],{"type":19,"value":896},"model_create",{"type":14,"tag":365,"props":898,"children":899},{},[900],{"type":19,"value":901},"Creates a model (process) — its label, description and group",{"type":14,"tag":338,"props":903,"children":904},{},[905,914],{"type":14,"tag":365,"props":906,"children":907},{},[908],{"type":14,"tag":71,"props":909,"children":911},{"className":910},[],[912],{"type":19,"value":913},"model_update",{"type":14,"tag":365,"props":915,"children":916},{},[917],{"type":19,"value":918},"Modifies an existing model's metadata",{"type":14,"tag":338,"props":920,"children":921},{},[922,931],{"type":14,"tag":365,"props":923,"children":924},{},[925],{"type":14,"tag":71,"props":926,"children":928},{"className":927},[],[929],{"type":19,"value":930},"pipeline_edit",{"type":14,"tag":365,"props":932,"children":933},{},[934],{"type":19,"value":935},"Edits a model's graph (adding, modifying, deleting nodes and links)",{"type":14,"tag":338,"props":937,"children":938},{},[939,948],{"type":14,"tag":365,"props":940,"children":941},{},[942],{"type":14,"tag":71,"props":943,"children":945},{"className":944},[],[946],{"type":19,"value":947},"pipeline_publish",{"type":14,"tag":365,"props":949,"children":950},{},[951],{"type":19,"value":952},"Publishes a model's current state, after pre-publication validation",{"type":14,"tag":338,"props":954,"children":955},{},[956,965],{"type":14,"tag":365,"props":957,"children":958},{},[959],{"type":14,"tag":71,"props":960,"children":962},{"className":961},[],[963],{"type":19,"value":964},"pipeline_plan",{"type":14,"tag":365,"props":966,"children":967},{},[968,970,975],{"type":19,"value":969},"Chains edits ",{"type":14,"tag":22,"props":971,"children":972},{},[973],{"type":19,"value":974},"then",{"type":19,"value":976}," a publication on the same model, in a single acceptance, atomically",{"type":14,"tag":338,"props":978,"children":979},{},[980,996],{"type":14,"tag":365,"props":981,"children":982},{},[983,989,990],{"type":14,"tag":71,"props":984,"children":986},{"className":985},[],[987],{"type":19,"value":988},"role_update",{"type":19,"value":665},{"type":14,"tag":71,"props":991,"children":993},{"className":992},[],[994],{"type":19,"value":995},"mission_update",{"type":14,"tag":365,"props":997,"children":998},{},[999],{"type":19,"value":1000},"Creates or modifies an agent role \u002F mission",{"type":14,"tag":338,"props":1002,"children":1003},{},[1004,1013],{"type":14,"tag":365,"props":1005,"children":1006},{},[1007],{"type":14,"tag":71,"props":1008,"children":1010},{"className":1009},[],[1011],{"type":19,"value":1012},"knowledge_update",{"type":14,"tag":365,"props":1014,"children":1015},{},[1016],{"type":19,"value":1017},"Creates or updates a text entry in the knowledge base",{"type":14,"tag":338,"props":1019,"children":1020},{},[1021,1030],{"type":14,"tag":365,"props":1022,"children":1023},{},[1024],{"type":14,"tag":71,"props":1025,"children":1027},{"className":1026},[],[1028],{"type":19,"value":1029},"knowledge_document_replace",{"type":14,"tag":365,"props":1031,"children":1032},{},[1033,1035,1040],{"type":19,"value":1034},"Replaces the file of a knowledge base document ",{"type":14,"tag":22,"props":1036,"children":1037},{},[1038],{"type":19,"value":1039},"in place",{"type":19,"value":1041},": same identifier, same public link",{"type":14,"tag":338,"props":1043,"children":1044},{},[1045,1054],{"type":14,"tag":365,"props":1046,"children":1047},{},[1048],{"type":14,"tag":71,"props":1049,"children":1051},{"className":1050},[],[1052],{"type":19,"value":1053},"database_schema_edit",{"type":14,"tag":365,"props":1055,"children":1056},{},[1057,1059,1064],{"type":19,"value":1058},"Modifies the ",{"type":14,"tag":22,"props":1060,"children":1061},{},[1062],{"type":19,"value":1063},"structure",{"type":19,"value":1065}," of a no-code database (databases, columns)",{"type":14,"tag":338,"props":1067,"children":1068},{},[1069,1092],{"type":14,"tag":365,"props":1070,"children":1071},{},[1072,1078,1079,1085,1086],{"type":14,"tag":71,"props":1073,"children":1075},{"className":1074},[],[1076],{"type":19,"value":1077},"benchmark_create",{"type":19,"value":665},{"type":14,"tag":71,"props":1080,"children":1082},{"className":1081},[],[1083],{"type":19,"value":1084},"benchmark_update",{"type":19,"value":665},{"type":14,"tag":71,"props":1087,"children":1089},{"className":1088},[],[1090],{"type":19,"value":1091},"benchmark_delete",{"type":14,"tag":365,"props":1093,"children":1094},{},[1095],{"type":19,"value":1096},"Manages evaluation scenarios",{"type":14,"tag":338,"props":1098,"children":1099},{},[1100,1109],{"type":14,"tag":365,"props":1101,"children":1102},{},[1103],{"type":14,"tag":71,"props":1104,"children":1106},{"className":1105},[],[1107],{"type":19,"value":1108},"benchmark_run",{"type":14,"tag":365,"props":1110,"children":1111},{},[1112,1117],{"type":14,"tag":22,"props":1113,"children":1114},{},[1115],{"type":19,"value":1116},"Launches",{"type":19,"value":1118}," a benchmark run — proposed, because a run consumes credits",{"type":14,"tag":338,"props":1120,"children":1121},{},[1122,1131],{"type":14,"tag":365,"props":1123,"children":1124},{},[1125],{"type":14,"tag":71,"props":1126,"children":1128},{"className":1127},[],[1129],{"type":19,"value":1130},"credit_topup",{"type":14,"tag":365,"props":1132,"children":1133},{},[1134],{"type":19,"value":1135},"Manual credit of a balance — reserved for the platform's operator organization, and validated by the credited organization",{"type":14,"tag":15,"props":1137,"children":1138},{},[1139,1144,1145,1150,1152,1157,1159,1164],{"type":14,"tag":22,"props":1140,"children":1141},{},[1142],{"type":19,"value":1143},"Creating a process end to end = several approvals.",{"type":19,"value":263},{"type":14,"tag":71,"props":1146,"children":1148},{"className":1147},[],[1149],{"type":19,"value":896},{"type":19,"value":1151}," creates the instance; a ",{"type":14,"tag":71,"props":1153,"children":1155},{"className":1154},[],[1156],{"type":19,"value":930},{"type":19,"value":1158}," then wires its Start (with its receivers) and its nodes; a ",{"type":14,"tag":71,"props":1160,"children":1162},{"className":1161},[],[1163],{"type":19,"value":947},{"type":19,"value":1165}," puts it into service. Creating an instance and wiring it remain two distinct human decisions.",{"type":14,"tag":178,"props":1167,"children":1169},{"id":1168},"create-an-mcp-key",[1170],{"type":19,"value":1171},"Create an MCP key",{"type":14,"tag":15,"props":1173,"children":1174},{},[1175,1177,1182],{"type":19,"value":1176},"Restricted to ",{"type":14,"tag":22,"props":1178,"children":1179},{},[1180],{"type":19,"value":1181},"organisation administrators",{"type":19,"value":1183},": a key carries authority over the whole organisation.",{"type":14,"tag":1185,"props":1186,"children":1187},"ol",{},[1188,1200,1263],{"type":14,"tag":84,"props":1189,"children":1190},{},[1191,1193,1198],{"type":19,"value":1192},"In betool, open ",{"type":14,"tag":22,"props":1194,"children":1195},{},[1196],{"type":19,"value":1197},"Organisation settings → MCP",{"type":19,"value":1199},".",{"type":14,"tag":84,"props":1201,"children":1202},{},[1203,1205,1210,1212],{"type":19,"value":1204},"Name the key and pick its ",{"type":14,"tag":22,"props":1206,"children":1207},{},[1208],{"type":19,"value":1209},"scope",{"type":19,"value":1211},":\n",{"type":14,"tag":80,"props":1213,"children":1214},{},[1215,1232,1247],{"type":14,"tag":84,"props":1216,"children":1217},{},[1218,1223,1225,1230],{"type":14,"tag":22,"props":1219,"children":1220},{},[1221],{"type":19,"value":1222},"Read only",{"type":19,"value":1224}," — reads configuration ",{"type":14,"tag":22,"props":1226,"children":1227},{},[1228],{"type":19,"value":1229},"and the data in your databases",{"type":19,"value":1231},", re-reads the threads opened through this channel, proposes nothing;",{"type":14,"tag":84,"props":1233,"children":1234},{},[1235,1239,1240,1245],{"type":14,"tag":22,"props":1236,"children":1237},{},[1238],{"type":19,"value":140},{"type":19,"value":263},{"type":14,"tag":58,"props":1241,"children":1242},{},[1243],{"type":19,"value":1244},"(recommended)",{"type":19,"value":1246}," — reads and submits proposals, which you approve inside betool;",{"type":14,"tag":84,"props":1248,"children":1249},{},[1250,1254,1256,1261],{"type":14,"tag":22,"props":1251,"children":1252},{},[1253],{"type":19,"value":154},{"type":19,"value":1255}," — may also resolve its own proposals, ",{"type":14,"tag":22,"props":1257,"children":1258},{},[1259],{"type":19,"value":1260},"write into your databases and converse with your models",{"type":19,"value":1262},", after you agree in the client's conversation.",{"type":14,"tag":84,"props":1264,"children":1265},{},[1266,1268,1273,1275,1280],{"type":19,"value":1267},"The ",{"type":14,"tag":22,"props":1269,"children":1270},{},[1271],{"type":19,"value":1272},"raw key is shown only once",{"type":19,"value":1274}," — copy it immediately (it can never be read again). You can ",{"type":14,"tag":22,"props":1276,"children":1277},{},[1278],{"type":19,"value":1279},"revoke",{"type":19,"value":1281}," a key at any time.",{"type":14,"tag":15,"props":1283,"children":1284},{},[1285],{"type":19,"value":1286},"The same three scopes exist for OAuth; there, you pick them on the consent screen.",{"type":14,"tag":178,"props":1288,"children":1290},{"id":1289},"connect-claude-code",[1291],{"type":19,"value":1292},"Connect Claude Code",{"type":14,"tag":15,"props":1294,"children":1295},{},[1296,1298,1303],{"type":19,"value":1297},"Add the betool MCP server to Claude Code (the key goes in the ",{"type":14,"tag":71,"props":1299,"children":1301},{"className":1300},[],[1302],{"type":19,"value":101},{"type":19,"value":1304}," header):",{"type":14,"tag":1306,"props":1307,"children":1312},"pre",{"className":1308,"code":1310,"language":1311,"meta":7},[1309],"language-bash","claude mcp add betool \\\n  --transport http \\\n  --header \"Authorization: Bearer \u003Cyour-mcp-key>\" \\\n  https:\u002F\u002Fplatform.betool.ai\u002Fmcp\n","bash",[1313],{"type":14,"tag":71,"props":1314,"children":1315},{"__ignoreMap":7},[1316],{"type":19,"value":1310},{"type":14,"tag":15,"props":1318,"children":1319},{},[1320,1322,1327,1329,1334],{"type":19,"value":1321},"Then ask Claude, in natural language: ",{"type":14,"tag":58,"props":1323,"children":1324},{},[1325],{"type":19,"value":1326},"\"inspect my pipeline X and propose a step that summarises the ticket before sending\"",{"type":19,"value":1328},". Claude reads the configuration, composes a proposal, and ",{"type":14,"tag":22,"props":1330,"children":1331},{},[1332],{"type":19,"value":1333},"you validate it in betool",{"type":19,"value":1199},{"type":14,"tag":115,"props":1336,"children":1338},{"type":1337},"warning",[1339],{"type":14,"tag":15,"props":1340,"children":1341},{},[1342,1344,1349,1351,1356,1358,1363],{"type":19,"value":1343},"Never paste secrets in clear text in the chat. Claude's reach is bounded by the ",{"type":14,"tag":22,"props":1345,"children":1346},{},[1347],{"type":19,"value":1348},"key scope",{"type":19,"value":1350},", and ",{"type":14,"tag":22,"props":1352,"children":1353},{},[1354],{"type":19,"value":1355},"every tool call is logged",{"type":19,"value":1357}," under ",{"type":14,"tag":22,"props":1359,"children":1360},{},[1361],{"type":19,"value":1362},"Organisation settings → MCP → Tool call log",{"type":19,"value":1364}," (GDPR art. 15).",{"type":14,"tag":178,"props":1366,"children":1368},{"id":1367},"talk-to-your-models",[1369],{"type":19,"value":278},{"type":14,"tag":15,"props":1371,"children":1372},{},[1373,1375,1380,1382,1387],{"type":19,"value":1374},"Reading and proposing is how you ",{"type":14,"tag":22,"props":1376,"children":1377},{},[1378],{"type":19,"value":1379},"configure",{"type":19,"value":1381}," betool. An external AI can also ",{"type":14,"tag":22,"props":1383,"children":1384},{},[1385],{"type":19,"value":1386},"use",{"type":19,"value":1388}," it: hold a real conversation with one of your models, turn after turn, exactly like any visitor on your chat. Useful to have an assistant stress-tested by another AI, to put betool behind a partner agent, or to let an internal tool query one of your processes in plain language.",{"type":14,"tag":15,"props":1390,"children":1391},{},[1392,1394,1400,1402,1408,1410,1416,1418,1424,1426,1431],{"type":19,"value":1393},"Four tools: ",{"type":14,"tag":71,"props":1395,"children":1397},{"className":1396},[],[1398],{"type":19,"value":1399},"conversation.open",{"type":19,"value":1401}," opens or resumes a thread, ",{"type":14,"tag":71,"props":1403,"children":1405},{"className":1404},[],[1406],{"type":19,"value":1407},"conversation.send",{"type":19,"value":1409}," sends a turn and returns the answer, ",{"type":14,"tag":71,"props":1411,"children":1413},{"className":1412},[],[1414],{"type":19,"value":1415},"conversation.poll",{"type":19,"value":1417}," picks up an answer that took a while, ",{"type":14,"tag":71,"props":1419,"children":1421},{"className":1420},[],[1422],{"type":19,"value":1423},"conversation.history",{"type":19,"value":1425}," re-reads the thread. That thread is ",{"type":14,"tag":22,"props":1427,"children":1428},{},[1429],{"type":19,"value":1430},"a betool context like any other",{"type":19,"value":1432},": it shows up in your conversations, the model sees the previous turns, and you can read everything in the UI.",{"type":14,"tag":115,"props":1434,"children":1435},{"type":1337},[1436],{"type":14,"tag":15,"props":1437,"children":1438},{},[1439,1444,1446,1451,1453,1457,1459,1464],{"type":14,"tag":22,"props":1440,"children":1441},{},[1442],{"type":19,"value":1443},"The model grants access, never the key.",{"type":19,"value":1445}," You must declare the ",{"type":14,"tag":22,"props":1447,"children":1448},{},[1449],{"type":19,"value":1450},"External agent",{"type":19,"value":1452}," receiver on the model's Start node: without it the call is refused, even with a ",{"type":14,"tag":58,"props":1454,"children":1455},{},[1456],{"type":19,"value":154},{"type":19,"value":1458}," scope key. Models created since this release declare it by default (the normal path is the easy path); older ones need it added, and any model can have it removed. So the model decides, never the key — and the receiver must be present in the ",{"type":14,"tag":22,"props":1460,"children":1461},{},[1462],{"type":19,"value":1463},"published",{"type":19,"value":1465}," version, the one that runs. And because a turn can trigger real effects — an email sent, a record created — it consumes the organisation's credits and is audited like every tool call.",{"type":14,"tag":15,"props":1467,"children":1468},{},[1469,1471,1476,1478,1483],{"type":19,"value":1470},"An answer is never lost: if the model works longer than the allowed wait, the call returns a ",{"type":14,"tag":22,"props":1472,"children":1473},{},[1474],{"type":19,"value":1475},"ticket",{"type":19,"value":1477}," and the turn keeps running server-side — it even survives a redeployment. The application then reads the answer with ",{"type":14,"tag":71,"props":1479,"children":1481},{"className":1480},[],[1482],{"type":19,"value":1415},{"type":19,"value":1484},". Re-sending the message speeds up nothing — and while the turn is running, sending is refused.",{"type":14,"tag":15,"props":1486,"children":1487},{},[1488,1490,1495],{"type":19,"value":1489},"Finally, this channel only reads ",{"type":14,"tag":22,"props":1491,"children":1492},{},[1493],{"type":19,"value":1494},"its own threads",{"type":19,"value":1496},". A conversation id coming from another entry — public chat, phone, email — is not readable here: your customers' exchanges do not become browsable just because an MCP application is connected.",{"type":14,"tag":15,"props":1498,"children":1499},{},[1500,1505,1507,1513,1515,1521,1523,1529,1531,1537,1539,1544,1546,1551],{"type":14,"tag":22,"props":1501,"children":1502},{},[1503],{"type":19,"value":1504},"A model already in place works untouched.",{"type":19,"value":1506}," This channel posts the same keys as a chat: the message arrives in ",{"type":14,"tag":71,"props":1508,"children":1510},{"className":1509},[],[1511],{"type":19,"value":1512},"user_message",{"type":19,"value":1514}," and the event is an ordinary ",{"type":14,"tag":71,"props":1516,"children":1518},{"className":1517},[],[1519],{"type":19,"value":1520},"on_message",{"type":19,"value":1522}," — so your filters and your agents' selections keep working. If the target model was written for another entry point (it reads ",{"type":14,"tag":71,"props":1524,"children":1526},{"className":1525},[],[1527],{"type":19,"value":1528},"telegram.text",{"type":19,"value":1530},", an objective, a page variable…), the application can supply those keys itself through ",{"type":14,"tag":71,"props":1532,"children":1534},{"className":1533},[],[1535],{"type":19,"value":1536},"variables",{"type":19,"value":1538},": they enter the flow where the other entry point would have placed them. What it cannot forge is ",{"type":14,"tag":22,"props":1540,"children":1541},{},[1542],{"type":19,"value":1543},"the identity of the turn",{"type":19,"value":1545}," — who spoke and through which channel: the server sets those keys, and any attempt is refused ",{"type":14,"tag":58,"props":1547,"children":1548},{},[1549],{"type":19,"value":1550},"and reported",{"type":19,"value":1552}," in the response.",{"type":14,"tag":15,"props":1554,"children":1555},{},[1556,1561,1563,1569,1571,1577,1579,1584],{"type":14,"tag":22,"props":1557,"children":1558},{},[1559],{"type":19,"value":1560},"If the model stays silent, look at its routing.",{"type":19,"value":1562}," A model serving several channels usually branches on the entry (",{"type":14,"tag":71,"props":1564,"children":1566},{"className":1565},[],[1567],{"type":19,"value":1568},"filter input.entry_kind == chat_widget",{"type":19,"value":1570},"…): a turn arriving with the external-agent entry then matches no branch, and nothing answers — without any error being raised. Pass ",{"type":14,"tag":71,"props":1572,"children":1574},{"className":1573},[],[1575],{"type":19,"value":1576},"as_entry_kind",{"type":19,"value":1578}," to be ",{"type":14,"tag":22,"props":1580,"children":1581},{},[1582],{"type":19,"value":1583},"routed as",{"type":19,"value":1585}," that channel. It changes only the routing key: the channel descriptor and the audit trail still say the turn came from an external AI, and the channel's real capabilities still apply.",{"type":14,"tag":15,"props":1587,"children":1588},{},[1589,1594],{"type":14,"tag":22,"props":1590,"children":1591},{},[1592],{"type":19,"value":1593},"A thread handles one turn at a time.",{"type":19,"value":1595}," Until the previous turn has returned its answer, the next one is refused, naming the turn to read. This is not an arbitrary limit: an answer is tied to its question by its position in the thread, so two turns in flight would make attribution ambiguous — a clear refusal beats a plausible, wrong answer.",{"type":14,"tag":178,"props":1597,"children":1599},{"id":1598},"connect-a-third-party-application-oauth-21",[1600],{"type":19,"value":1601},"Connect a third-party application (OAuth 2.1)",{"type":14,"tag":15,"props":1603,"children":1604},{},[1605,1607,1611,1613,1617,1619,1624],{"type":19,"value":1606},"A header key suits Claude Code. Other clients — ",{"type":14,"tag":22,"props":1608,"children":1609},{},[1610],{"type":19,"value":40},{"type":19,"value":1612},", ChatGPT, an editor, your own application — connect through ",{"type":14,"tag":22,"props":1614,"children":1615},{},[1616],{"type":19,"value":111},{"type":19,"value":1618},", with nobody handling a secret. There is nothing to prepare: ",{"type":14,"tag":22,"props":1620,"children":1621},{},[1622],{"type":19,"value":1623},"no client to declare",{"type":19,"value":1625},", no identifier to request from us.",{"type":14,"tag":15,"props":1627,"children":1628},{},[1629],{"type":19,"value":1630},"For the user, the journey is three screens:",{"type":14,"tag":1185,"props":1632,"children":1633},{},[1634,1645,1671],{"type":14,"tag":84,"props":1635,"children":1636},{},[1637,1639,1644],{"type":19,"value":1638},"In the application, add the MCP server ",{"type":14,"tag":71,"props":1640,"children":1642},{"className":1641},[],[1643],{"type":19,"value":76},{"type":19,"value":1199},{"type":14,"tag":84,"props":1646,"children":1647},{},[1648,1650,1655,1657,1662,1664,1669],{"type":19,"value":1649},"Your browser opens a ",{"type":14,"tag":22,"props":1651,"children":1652},{},[1653],{"type":19,"value":1654},"betool consent screen",{"type":19,"value":1656},": it names the application requesting access, the ",{"type":14,"tag":22,"props":1658,"children":1659},{},[1660],{"type":19,"value":1661},"organisation",{"type":19,"value":1663}," concerned, and ",{"type":14,"tag":22,"props":1665,"children":1666},{},[1667],{"type":19,"value":1668},"where the return will happen",{"type":19,"value":1670},". Check those three things — especially if you belong to several organisations.",{"type":14,"tag":84,"props":1672,"children":1673},{},[1674,1676,1680,1682,1687],{"type":19,"value":1675},"Choose the ",{"type":14,"tag":22,"props":1677,"children":1678},{},[1679],{"type":19,"value":1209},{"type":19,"value":1681}," you grant, then ",{"type":14,"tag":22,"props":1683,"children":1684},{},[1685],{"type":19,"value":1686},"Authorize",{"type":19,"value":1688},". The application never receives more than you tick, even if it asked for more.",{"type":14,"tag":115,"props":1690,"children":1691},{"type":1337},[1692],{"type":14,"tag":15,"props":1693,"children":1694},{},[1695,1700],{"type":14,"tag":22,"props":1696,"children":1697},{},[1698],{"type":19,"value":1699},"Only an organisation administrator can authorize an application.",{"type":19,"value":1701}," Connecting one creates lasting authority over the whole organisation — exactly what an MCP key is. A member with limited rights therefore cannot bypass their restrictions through this door.",{"type":14,"tag":15,"props":1703,"children":1704},{},[1705,1707,1713,1715,1721,1723,1729,1731,1737],{"type":19,"value":1706},"For integrators, discovery is fully automatic and standards-compliant: an unauthenticated call to ",{"type":14,"tag":71,"props":1708,"children":1710},{"className":1709},[],[1711],{"type":19,"value":1712},"\u002Fmcp",{"type":19,"value":1714}," returns a ",{"type":14,"tag":71,"props":1716,"children":1718},{"className":1717},[],[1719],{"type":19,"value":1720},"401",{"type":19,"value":1722}," carrying the ",{"type":14,"tag":71,"props":1724,"children":1726},{"className":1725},[],[1727],{"type":19,"value":1728},"WWW-Authenticate",{"type":19,"value":1730}," header with the address of our metadata (RFC 9728), which in turn points to authorization, token exchange, dynamic client registration (RFC 7591) and revocation (RFC 7009). PKCE ",{"type":14,"tag":71,"props":1732,"children":1734},{"className":1733},[],[1735],{"type":19,"value":1736},"S256",{"type":19,"value":1738}," is mandatory, access tokens last one hour, and the refresh token rotates on every use.",{"type":14,"tag":1306,"props":1740,"children":1743},{"className":1741,"code":1742,"language":1311,"meta":7},[1309],"# What a client does on its own — handy to check from a terminal.\ncurl -i -X POST https:\u002F\u002Fplatform.betool.ai\u002Fmcp \\\n  -H 'Content-Type: application\u002Fjson' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"initialize\"}'\n# -> 401 + WWW-Authenticate: Bearer ... resource_metadata=\"...\"\n\ncurl -s https:\u002F\u002Fplatform.betool.ai\u002F.well-known\u002Foauth-authorization-server\n",[1744],{"type":14,"tag":71,"props":1745,"children":1746},{"__ignoreMap":7},[1747],{"type":19,"value":1742},{"type":14,"tag":15,"props":1749,"children":1750},{},[1751,1753,1758,1760,1765],{"type":19,"value":1752},"A token is only valid ",{"type":14,"tag":22,"props":1754,"children":1755},{},[1756],{"type":19,"value":1757},"for betool",{"type":19,"value":1759},": replayed elsewhere, it is refused (RFC 8707). And if an already-used refresh token is presented a second time — the signature of a stolen token — ",{"type":14,"tag":22,"props":1761,"children":1762},{},[1763],{"type":19,"value":1764},"the whole session is revoked",{"type":19,"value":1766}," and the user must authorize again.",{"type":14,"tag":178,"props":1768,"children":1770},{"id":1769},"connected-applications-see-and-disconnect",[1771],{"type":19,"value":1772},"Connected applications: see and disconnect",{"type":14,"tag":15,"props":1774,"children":1775},{},[1776,1778,1782,1784,1789,1791,1796],{"type":19,"value":1777},"In ",{"type":14,"tag":22,"props":1779,"children":1780},{},[1781],{"type":19,"value":1197},{"type":19,"value":1783},", the ",{"type":14,"tag":22,"props":1785,"children":1786},{},[1787],{"type":19,"value":1788},"Connected applications",{"type":19,"value":1790}," section lists what is plugged into your organisation: the application's name, the granted scope, who authorized it, and when it was last used. A ",{"type":14,"tag":22,"props":1792,"children":1793},{},[1794],{"type":19,"value":1795},"Disconnect",{"type":19,"value":1797}," button cuts access immediately — every token of that application, for your organisation only.",{"type":14,"tag":15,"props":1799,"children":1800},{},[1801],{"type":19,"value":1802},"The same application may be connected by several organisations: disconnecting it on your side affects nobody else. An application can also disconnect itself.",{"type":14,"tag":178,"props":1804,"children":1806},{"id":1805},"scope-isolation",[1807],{"type":19,"value":1808},"Scope & isolation",{"type":14,"tag":80,"props":1810,"children":1811},{},[1812,1824],{"type":14,"tag":84,"props":1813,"children":1814},{},[1815,1817,1822],{"type":19,"value":1816},"By default a key operates only on ",{"type":14,"tag":22,"props":1818,"children":1819},{},[1820],{"type":19,"value":1821},"your own organisation",{"type":19,"value":1823}," — the target org is forced server-side; you never pass an organisation id as an argument.",{"type":14,"tag":84,"props":1825,"children":1826},{},[1827,1832],{"type":14,"tag":22,"props":1828,"children":1829},{},[1830],{"type":19,"value":1831},"Vendor keys",{"type":19,"value":1833}," (backoffice organisation) may target another organisation, under that org's explicit consent and with full audit — useful for a multi-tenant vendor use case.",{"type":14,"tag":178,"props":1835,"children":1837},{"id":1836},"audit-log",[1838],{"type":19,"value":1839},"Audit log",{"type":14,"tag":15,"props":1841,"children":1842},{},[1843,1845,1850,1852,1856,1858,1863],{"type":19,"value":1844},"Every tool call (external via MCP ",{"type":14,"tag":22,"props":1846,"children":1847},{},[1848],{"type":19,"value":1849},"and",{"type":19,"value":1851}," internal) writes an audit line: who, which tool, which channel, which scope, outcome, latency. Available under ",{"type":14,"tag":22,"props":1853,"children":1854},{},[1855],{"type":19,"value":1197},{"type":19,"value":1857}," (",{"type":14,"tag":22,"props":1859,"children":1860},{},[1861],{"type":19,"value":1862},"Tool call log",{"type":19,"value":1864}," section), strictly scoped to your organisation.",{"type":14,"tag":178,"props":1866,"children":1868},{"id":1867},"see-also",[1869],{"type":19,"value":1870},"See also",{"type":14,"tag":80,"props":1872,"children":1873},{},[1874,1885],{"type":14,"tag":84,"props":1875,"children":1876},{},[1877,1883],{"type":14,"tag":246,"props":1878,"children":1880},{"href":1879},"\u002Fen\u002Fdocs\u002Fdeveloppeurs\u002Fapi-admin",[1881],{"type":19,"value":1882},"Admin API",{"type":19,"value":1884}," — automate betool from your own systems.",{"type":14,"tag":84,"props":1886,"children":1887},{},[1888,1894],{"type":14,"tag":246,"props":1889,"children":1891},{"href":1890},"\u002Fen\u002Fdocs\u002Fsecurite\u002Fprincipes",[1892],{"type":19,"value":1893},"Security & compliance",{"type":19,"value":1895}," — the proposal governance model.",{"title":7,"searchDepth":1897,"depth":1897,"links":1898},2,[1899,1900,1901,1902,1903,1904,1905,1906,1907,1908,1909],{"id":180,"depth":1897,"text":183},{"id":320,"depth":1897,"text":323},{"id":839,"depth":1897,"text":251},{"id":1168,"depth":1897,"text":1171},{"id":1289,"depth":1897,"text":1292},{"id":1367,"depth":1897,"text":278},{"id":1598,"depth":1897,"text":1601},{"id":1769,"depth":1897,"text":1772},{"id":1805,"depth":1897,"text":1808},{"id":1836,"depth":1897,"text":1839},{"id":1867,"depth":1897,"text":1870},"markdown","content:en:docs:6.developpeurs:3.mcp.md","content","en\u002Fdocs\u002F6.developpeurs\u002F3.mcp.md","en\u002Fdocs\u002F6.developpeurs\u002F3.mcp","md",[1917],{"title":1918,"_path":1919,"children":1920},"En","\u002Fen",[1921],{"title":1922,"_path":1923,"children":1924},"Docs","\u002Fen\u002Fdocs",[1925,1938,1966,1993,2006,2021,2030,2091],{"title":1926,"_path":1927,"children":1928},"Getting started","\u002Fen\u002Fdocs\u002Fdemarrer",[1929,1932,1935],{"title":1930,"_path":1931},"Welcome","\u002Fen\u002Fdocs\u002Fdemarrer\u002Fbienvenue",{"title":1933,"_path":1934},"Create an account","\u002Fen\u002Fdocs\u002Fdemarrer\u002Fcreer-un-compte",{"title":1936,"_path":1937},"Connect an LLM key","\u002Fen\u002Fdocs\u002Fdemarrer\u002Fbrancher-llm",{"title":1939,"_path":1940,"children":1941},"Channels","\u002Fen\u002Fdocs\u002Fcanaux",[1942,1945,1948,1951,1954,1957,1960,1963],{"title":1943,"_path":1944},"Channels overview","\u002Fen\u002Fdocs\u002Fcanaux\u002Fvue-densemble",{"title":1946,"_path":1947},"Real-time telephony","\u002Fen\u002Fdocs\u002Fcanaux\u002Ftelephone",{"title":1949,"_path":1950},"Email","\u002Fen\u002Fdocs\u002Fcanaux\u002Femail",{"title":1952,"_path":1953},"Web chat widget","\u002Fen\u002Fdocs\u002Fcanaux\u002Fchat-widget",{"title":1955,"_path":1956},"HTTP Webhook","\u002Fen\u002Fdocs\u002Fcanaux\u002Fwebhook",{"title":1958,"_path":1959},"Messaging (WhatsApp, Messenger, Telegram, Mattermost)","\u002Fen\u002Fdocs\u002Fcanaux\u002Fmessageries",{"title":1961,"_path":1962},"Meta Lead Ads","\u002Fen\u002Fdocs\u002Fcanaux\u002Ffacebook-leads",{"title":1964,"_path":1965},"Schedule (cron)","\u002Fen\u002Fdocs\u002Fcanaux\u002Fschedule",{"title":1967,"_path":1968,"children":1969},"Pipelines","\u002Fen\u002Fdocs\u002Fpipelines",[1970,1973,1976,1979,1982,1985,1988,1991],{"title":1971,"_path":1972},"The Visual Editor","\u002Fen\u002Fdocs\u002Fpipelines\u002Fediteur-visuel",{"title":1974,"_path":1975},"AI Agents","\u002Fen\u002Fdocs\u002Fpipelines\u002Fagents",{"title":1977,"_path":1978},"Deterministic Operators","\u002Fen\u002Fdocs\u002Fpipelines\u002Foperateurs",{"title":1980,"_path":1981},"Flow Control","\u002Fen\u002Fdocs\u002Fpipelines\u002Fcontrole-flux",{"title":1983,"_path":1984},"Code Steps","\u002Fen\u002Fdocs\u002Fpipelines\u002Fcode-step",{"title":1986,"_path":1987},"Sub-pipelines","\u002Fen\u002Fdocs\u002Fpipelines\u002Fsous-pipelines",{"title":1989,"_path":1990},"No-code actions","\u002Fen\u002Fdocs\u002Fpipelines\u002Factions-no-code",{"title":1992,"_path":648},"Knowledge base",{"title":1994,"_path":1995,"children":1996},"Supervision","\u002Fen\u002Fdocs\u002Fsupervision",[1997,2000,2003],{"title":1998,"_path":1999},"Execution History","\u002Fen\u002Fdocs\u002Fsupervision\u002Fexecutions",{"title":2001,"_path":2002},"Credits & Metering","\u002Fen\u002Fdocs\u002Fsupervision\u002Fcredits-metering",{"title":2004,"_path":2005},"Benchmarks","\u002Fen\u002Fdocs\u002Fsupervision\u002Fbenchmarks",{"title":2007,"_path":2008,"children":2009},"Security","\u002Fen\u002Fdocs\u002Fsecurite",[2010,2012,2015,2018],{"title":2011,"_path":1890},"Security principles",{"title":2013,"_path":2014},"Strict multi-tenancy","\u002Fen\u002Fdocs\u002Fsecurite\u002Fmulti-tenant",{"title":2016,"_path":2017},"GDPR audit & access log","\u002Fen\u002Fdocs\u002Fsecurite\u002Faudit-rgpd",{"title":2019,"_path":2020},"Sovereign deployment","\u002Fen\u002Fdocs\u002Fsecurite\u002Fdeploiement-souverain",{"title":2022,"_path":2023,"children":2024},"Developers","\u002Fen\u002Fdocs\u002Fdeveloppeurs",[2025,2026,2029],{"title":1882,"_path":1879},{"title":2027,"_path":2028},"Outbound webhooks","\u002Fen\u002Fdocs\u002Fdeveloppeurs\u002Fwebhooks-sortants",{"title":8,"_path":4},{"title":2031,"_path":2032,"children":2033},"Integrations","\u002Fen\u002Fdocs\u002Fintegrations",[2034,2037,2040,2043,2046,2049,2052,2055,2058,2061,2064,2067,2070,2073,2076,2079,2082,2085,2088],{"title":2035,"_path":2036},"Integrations overview","\u002Fen\u002Fdocs\u002Fintegrations\u002Fvue-densemble",{"title":2038,"_path":2039},"Stripe","\u002Fen\u002Fdocs\u002Fintegrations\u002Fstripe",{"title":2041,"_path":2042},"GitHub","\u002Fen\u002Fdocs\u002Fintegrations\u002Fgithub",{"title":2044,"_path":2045},"Google","\u002Fen\u002Fdocs\u002Fintegrations\u002Fgoogle",{"title":2047,"_path":2048},"LinkedIn Ads","\u002Fen\u002Fdocs\u002Fintegrations\u002Flinkedin-ads",{"title":2050,"_path":2051},"Kavkom","\u002Fen\u002Fdocs\u002Fintegrations\u002Fkavkom",{"title":2053,"_path":2054},"Jira","\u002Fen\u002Fdocs\u002Fintegrations\u002Fjira",{"title":2056,"_path":2057},"Slack","\u002Fen\u002Fdocs\u002Fintegrations\u002Fslack",{"title":2059,"_path":2060},"SMS","\u002Fen\u002Fdocs\u002Fintegrations\u002Fsms",{"title":2062,"_path":2063},"Enable Banking (open banking)","\u002Fen\u002Fdocs\u002Fintegrations\u002Fenable-banking",{"title":2065,"_path":2066},"CRM, marketing & productivity","\u002Fen\u002Fdocs\u002Fintegrations\u002Fcrm-marketing",{"title":2068,"_path":2069},"HeyGen (video)","\u002Fen\u002Fdocs\u002Fintegrations\u002Fheygen",{"title":2071,"_path":2072},"La Poste","\u002Fen\u002Fdocs\u002Fintegrations\u002Fla-poste",{"title":2074,"_path":2075},"Industry CRM (beTool Application, Qhare)","\u002Fen\u002Fdocs\u002Fintegrations\u002Fcrm-metier",{"title":2077,"_path":2078},"Mitti (field inspections)","\u002Fen\u002Fdocs\u002Fintegrations\u002Fmitti",{"title":2080,"_path":2081},"Meta (Messenger, Pages, Meta Ads)","\u002Fen\u002Fdocs\u002Fintegrations\u002Fmeta",{"title":2083,"_path":2084},"Onoff Business (Beta)","\u002Fen\u002Fdocs\u002Fintegrations\u002Fonoff",{"title":2086,"_path":2087},"Smart Life \u002F Tuya (connected devices)","\u002Fen\u002Fdocs\u002Fintegrations\u002Fsmart-life",{"title":2089,"_path":2090},"beTool products (Desktop, Kiosk, Terminal)","\u002Fen\u002Fdocs\u002Fintegrations\u002Fproduits-betool",{"title":2092,"_path":2093,"children":2094},"Use cases","\u002Fen\u002Fdocs\u002Fcas-usage",[2095,2098,2101,2104,2107,2110],{"title":2096,"_path":2097},"Typical business agents","\u002Fen\u002Fdocs\u002Fcas-usage\u002Fvue-densemble",{"title":2099,"_path":2100},"CFO IA","\u002Fen\u002Fdocs\u002Fcas-usage\u002Fcfo-ia",{"title":2102,"_path":2103},"COO IA","\u002Fen\u002Fdocs\u002Fcas-usage\u002Fcoo-ia",{"title":2105,"_path":2106},"CTO IA","\u002Fen\u002Fdocs\u002Fcas-usage\u002Fcto-ia",{"title":2108,"_path":2109},"Product Manager IA","\u002Fen\u002Fdocs\u002Fcas-usage\u002Fproduct-manager-ia",{"title":2111,"_path":2112},"Personal assistant","\u002Fen\u002Fdocs\u002Fcas-usage\u002Fassistant-personnel"]