[{"data":1,"prerenderedAt":1309},["ShallowReactive",2],{"navigation":3,"\u002Fdocs\u002Fcore-concepts\u002Fcustom-integrations":81,"\u002Fdocs\u002Fcore-concepts\u002Fcustom-integrations-surround":1304},[4,77],{"title":5,"_path":6,"children":7,"icon":76},"Docs","\u002Fdocs",[8,23,41,51,63,69],{"title":9,"_path":10,"children":11},"Getting Started","\u002Fdocs\u002Fgetting-started",[12,14,17,20],{"title":13,"_path":10},"Introduction to Datafuse",{"title":15,"_path":16},"Installation Guide","\u002Fdocs\u002Fgetting-started\u002Finstallation",{"title":18,"_path":19},"5-Minute Quickstart","\u002Fdocs\u002Fgetting-started\u002Fquickstart",{"title":21,"_path":22},"5-Minute Quickstart with curl","\u002Fdocs\u002Fgetting-started\u002Fcurl",{"title":24,"_path":25,"children":26},"Core Concepts","\u002Fdocs\u002Fcore-concepts",[27,29,32,35,38],{"title":28,"_path":25},"Conceptual Landscape",{"title":30,"_path":31},"Adding Custom Integrations","\u002Fdocs\u002Fcore-concepts\u002Fcustom-integrations",{"title":33,"_path":34},"Managed Authentication","\u002Fdocs\u002Fcore-concepts\u002Fauthentication",{"title":36,"_path":37},"Bi-Directional Triggers","\u002Fdocs\u002Fcore-concepts\u002Ftriggers",{"title":39,"_path":40},"Observability & Auditing","\u002Fdocs\u002Fcore-concepts\u002Fobservability",{"title":42,"_path":43,"children":44},"Model Context Protocol","\u002Fdocs\u002Fmcp",[45,48],{"title":46,"_path":47},"Introduction to MCP","\u002Fdocs\u002Fmcp\u002Fintroduction",{"title":49,"_path":50},"Operating MCP Servers","\u002Fdocs\u002Fmcp\u002Fmcp-servers",{"title":52,"_path":53,"children":54},"Client SDKs","\u002Fdocs\u002Fsdks",[55,57,60],{"title":56,"_path":53},"Client Overview",{"title":58,"_path":59},"Python Client Guide","\u002Fdocs\u002Fsdks\u002Fpython",{"title":61,"_path":62},"TypeScript Client Guide","\u002Fdocs\u002Fsdks\u002Ftypescript",{"title":64,"_path":65,"children":66},"Self-Hosting & VPC","\u002Fdocs\u002Fself-hosting",[67],{"title":68,"_path":65},"Self-Hosting Guide",{"title":70,"_path":71,"children":72},"Comparisons","\u002Fdocs\u002Fcomparisons",[73],{"title":74,"_path":75},"Datafuse vs. Composio","\u002Fdocs\u002Fcomparisons\u002Fcomposio","i-heroicons-book-open",{"title":78,"_path":79,"icon":80},"Pricing","\u002Fpricing","i-heroicons-credit-card",{"_path":31,"_dir":82,"_draft":83,"_partial":83,"_locale":84,"title":30,"description":85,"body":86,"_type":1298,"_id":1299,"_source":1300,"_file":1301,"_stem":1302,"_extension":1303},"core-concepts",false,"","Ingest OpenAPI specs and add custom third-party integrations as secure agent tools.",{"type":87,"children":88,"toc":1289},"root",[89,104,108,115,120,178,252,255,261,266,286,1137,1140,1146,1151,1158,1179,1185,1204,1207,1213,1218,1269,1283],{"type":90,"tag":91,"props":92,"children":93},"element","p",{},[94,97,102],{"type":95,"value":96},"text","Datafuse makes ",{"type":90,"tag":98,"props":99,"children":100},"strong",{},[101],{"type":95,"value":30},{"type":95,"value":103}," incredibly easy and efficient. It allows developers to import any HTTP API, Swagger\u002FOpenAPI specification, or custom API configuration and compile it instantly into a schema-safe, runtime-ready integration that AI models can execute.",{"type":90,"tag":105,"props":106,"children":107},"hr",{},[],{"type":90,"tag":109,"props":110,"children":112},"h2",{"id":111},"the-custom-integrations-pipeline",[113],{"type":95,"value":114},"The Custom Integrations Pipeline",{"type":90,"tag":91,"props":116,"children":117},{},[118],{"type":95,"value":119},"When you paste an API definition or write a custom integration config, Datafuse runs it through a multi-stage validation and compiler pipeline to generate tools:",{"type":90,"tag":121,"props":122,"children":126},"pre",{"className":123,"code":124,"language":125,"meta":84,"style":84},"language-mermaid shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","graph LR\n    OpenAPI[Raw OpenAPI \u002F Swagger] -->|1. Parse & Ingest| Parser[Omnithium Ingester]\n    Parser -->|2. Normalize Specs| Compiler[Integration Compiler]\n    Compiler -->|3. Generate Actions & Auth| Target[Integration Schema]\n    Target -->|4. Bind to SDK| SDK[Runtime Tool definitions]\n","mermaid",[127],{"type":90,"tag":128,"props":129,"children":130},"code",{"__ignoreMap":84},[131,142,151,160,169],{"type":90,"tag":132,"props":133,"children":136},"span",{"class":134,"line":135},"line",1,[137],{"type":90,"tag":132,"props":138,"children":139},{},[140],{"type":95,"value":141},"graph LR\n",{"type":90,"tag":132,"props":143,"children":145},{"class":134,"line":144},2,[146],{"type":90,"tag":132,"props":147,"children":148},{},[149],{"type":95,"value":150},"    OpenAPI[Raw OpenAPI \u002F Swagger] -->|1. Parse & Ingest| Parser[Omnithium Ingester]\n",{"type":90,"tag":132,"props":152,"children":154},{"class":134,"line":153},3,[155],{"type":90,"tag":132,"props":156,"children":157},{},[158],{"type":95,"value":159},"    Parser -->|2. Normalize Specs| Compiler[Integration Compiler]\n",{"type":90,"tag":132,"props":161,"children":163},{"class":134,"line":162},4,[164],{"type":90,"tag":132,"props":165,"children":166},{},[167],{"type":95,"value":168},"    Compiler -->|3. Generate Actions & Auth| Target[Integration Schema]\n",{"type":90,"tag":132,"props":170,"children":172},{"class":134,"line":171},5,[173],{"type":90,"tag":132,"props":174,"children":175},{},[176],{"type":95,"value":177},"    Target -->|4. Bind to SDK| SDK[Runtime Tool definitions]\n",{"type":90,"tag":179,"props":180,"children":181},"ul",{},[182,193,203],{"type":90,"tag":183,"props":184,"children":185},"li",{},[186,191],{"type":90,"tag":98,"props":187,"children":188},{},[189],{"type":95,"value":190},"Ingestion",{"type":95,"value":192},": Supports both raw YAML configurations and fully qualified OpenAPI v3 specifications.",{"type":90,"tag":183,"props":194,"children":195},{},[196,201],{"type":90,"tag":98,"props":197,"children":198},{},[199],{"type":95,"value":200},"Normalization",{"type":95,"value":202},": Standardizes authentication schemes (Bearer, OAuth2, API Key) and HTTP parameters into flat query\u002Fbody JSON schemas.",{"type":90,"tag":183,"props":204,"children":205},{},[206,211,213,219,221,227,229,235,236,242,244,250],{"type":90,"tag":98,"props":207,"children":208},{},[209],{"type":95,"value":210},"Compilation",{"type":95,"value":212},": Creates functional tool definitions, ensuring ",{"type":90,"tag":128,"props":214,"children":216},{"className":215},[],[217],{"type":95,"value":218},"is_mutating",{"type":95,"value":220}," rules match (",{"type":90,"tag":128,"props":222,"children":224},{"className":223},[],[225],{"type":95,"value":226},"POST",{"type":95,"value":228},", ",{"type":90,"tag":128,"props":230,"children":232},{"className":231},[],[233],{"type":95,"value":234},"PUT",{"type":95,"value":228},{"type":90,"tag":128,"props":237,"children":239},{"className":238},[],[240],{"type":95,"value":241},"DELETE",{"type":95,"value":243}," are mutating, while ",{"type":90,"tag":128,"props":245,"children":247},{"className":246},[],[248],{"type":95,"value":249},"GET",{"type":95,"value":251}," is read-only).",{"type":90,"tag":105,"props":253,"children":254},{},[],{"type":90,"tag":109,"props":256,"children":258},{"id":257},"defining-custom-integrations-in-yaml",[259],{"type":95,"value":260},"Defining Custom Integrations in YAML",{"type":90,"tag":91,"props":262,"children":263},{},[264],{"type":95,"value":265},"To convert any standard third-party REST API into agent tools, you define the integration mappings.",{"type":90,"tag":91,"props":267,"children":268},{},[269,271,276,278,284],{"type":95,"value":270},"Here is an example definition for adding a custom integration for ",{"type":90,"tag":98,"props":272,"children":273},{},[274],{"type":95,"value":275},"Ably Realtime",{"type":95,"value":277}," (",{"type":90,"tag":128,"props":279,"children":281},{"className":280},[],[282],{"type":95,"value":283},"ably.yaml",{"type":95,"value":285},"), representing the actions and schemas directly in Datafuse:",{"type":90,"tag":121,"props":287,"children":291},{"className":288,"code":289,"language":290,"meta":84,"style":84},"language-yaml shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","key: ably\ntitle: Ably Realtime\ndescription: Build real-time messaging, collaboration, and pub\u002Fsub solutions.\ncategory: Communication\nruntime_type: rest\n\nauth_schemes:\n  - key: api_key\n    type: api_key\n    placement:\n      location: header\n      name: Authorization\n      prefix: \"Basic \"\n    credential_fields:\n      - name: api_key\n        label: Ably API Key\n        required: true\n        is_secret: true\n\nmetadata:\n  base_url_template: https:\u002F\u002Frest.ably.io\u002F\n  ping_endpoint: \u002Ftime\n\nactions:\n  - slug: publish_message\n    name: Publish Message\n    description: Publish a real-time message to a specific pub\u002Fsub channel.\n    endpoint: \u002Fchannels\u002F{channel_id}\u002Fmessages\n    method: POST\n    is_mutating: true\n    input_schema:\n      type: object\n      properties:\n        path:\n          type: object\n          required:\n            - channel_id\n          properties:\n            channel_id:\n              type: string\n              description: The Ably channel ID.\n        body:\n          type: object\n          required:\n            - name\n            - data\n          properties:\n            name:\n              type: string\n              description: The event name.\n            data:\n              type: string\n              description: The message payload.\n","yaml",[292],{"type":90,"tag":128,"props":293,"children":294},{"__ignoreMap":84},[295,316,333,350,367,384,394,408,431,448,461,479,497,525,538,560,578,597,614,622,635,653,671,679,692,714,732,750,768,786,803,816,834,847,860,877,890,904,917,930,948,966,979,995,1007,1020,1033,1045,1058,1074,1091,1104,1120],{"type":90,"tag":132,"props":296,"children":297},{"class":134,"line":135},[298,304,310],{"type":90,"tag":132,"props":299,"children":301},{"style":300},"--shiki-light:#E53935;--shiki-default:#F07178;--shiki-dark:#F07178",[302],{"type":95,"value":303},"key",{"type":90,"tag":132,"props":305,"children":307},{"style":306},"--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF",[308],{"type":95,"value":309},":",{"type":90,"tag":132,"props":311,"children":313},{"style":312},"--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D",[314],{"type":95,"value":315}," ably\n",{"type":90,"tag":132,"props":317,"children":318},{"class":134,"line":144},[319,324,328],{"type":90,"tag":132,"props":320,"children":321},{"style":300},[322],{"type":95,"value":323},"title",{"type":90,"tag":132,"props":325,"children":326},{"style":306},[327],{"type":95,"value":309},{"type":90,"tag":132,"props":329,"children":330},{"style":312},[331],{"type":95,"value":332}," Ably Realtime\n",{"type":90,"tag":132,"props":334,"children":335},{"class":134,"line":153},[336,341,345],{"type":90,"tag":132,"props":337,"children":338},{"style":300},[339],{"type":95,"value":340},"description",{"type":90,"tag":132,"props":342,"children":343},{"style":306},[344],{"type":95,"value":309},{"type":90,"tag":132,"props":346,"children":347},{"style":312},[348],{"type":95,"value":349}," Build real-time messaging, collaboration, and pub\u002Fsub solutions.\n",{"type":90,"tag":132,"props":351,"children":352},{"class":134,"line":162},[353,358,362],{"type":90,"tag":132,"props":354,"children":355},{"style":300},[356],{"type":95,"value":357},"category",{"type":90,"tag":132,"props":359,"children":360},{"style":306},[361],{"type":95,"value":309},{"type":90,"tag":132,"props":363,"children":364},{"style":312},[365],{"type":95,"value":366}," Communication\n",{"type":90,"tag":132,"props":368,"children":369},{"class":134,"line":171},[370,375,379],{"type":90,"tag":132,"props":371,"children":372},{"style":300},[373],{"type":95,"value":374},"runtime_type",{"type":90,"tag":132,"props":376,"children":377},{"style":306},[378],{"type":95,"value":309},{"type":90,"tag":132,"props":380,"children":381},{"style":312},[382],{"type":95,"value":383}," rest\n",{"type":90,"tag":132,"props":385,"children":387},{"class":134,"line":386},6,[388],{"type":90,"tag":132,"props":389,"children":391},{"emptyLinePlaceholder":390},true,[392],{"type":95,"value":393},"\n",{"type":90,"tag":132,"props":395,"children":397},{"class":134,"line":396},7,[398,403],{"type":90,"tag":132,"props":399,"children":400},{"style":300},[401],{"type":95,"value":402},"auth_schemes",{"type":90,"tag":132,"props":404,"children":405},{"style":306},[406],{"type":95,"value":407},":\n",{"type":90,"tag":132,"props":409,"children":411},{"class":134,"line":410},8,[412,417,422,426],{"type":90,"tag":132,"props":413,"children":414},{"style":306},[415],{"type":95,"value":416},"  -",{"type":90,"tag":132,"props":418,"children":419},{"style":300},[420],{"type":95,"value":421}," key",{"type":90,"tag":132,"props":423,"children":424},{"style":306},[425],{"type":95,"value":309},{"type":90,"tag":132,"props":427,"children":428},{"style":312},[429],{"type":95,"value":430}," api_key\n",{"type":90,"tag":132,"props":432,"children":434},{"class":134,"line":433},9,[435,440,444],{"type":90,"tag":132,"props":436,"children":437},{"style":300},[438],{"type":95,"value":439},"    type",{"type":90,"tag":132,"props":441,"children":442},{"style":306},[443],{"type":95,"value":309},{"type":90,"tag":132,"props":445,"children":446},{"style":312},[447],{"type":95,"value":430},{"type":90,"tag":132,"props":449,"children":451},{"class":134,"line":450},10,[452,457],{"type":90,"tag":132,"props":453,"children":454},{"style":300},[455],{"type":95,"value":456},"    placement",{"type":90,"tag":132,"props":458,"children":459},{"style":306},[460],{"type":95,"value":407},{"type":90,"tag":132,"props":462,"children":464},{"class":134,"line":463},11,[465,470,474],{"type":90,"tag":132,"props":466,"children":467},{"style":300},[468],{"type":95,"value":469},"      location",{"type":90,"tag":132,"props":471,"children":472},{"style":306},[473],{"type":95,"value":309},{"type":90,"tag":132,"props":475,"children":476},{"style":312},[477],{"type":95,"value":478}," header\n",{"type":90,"tag":132,"props":480,"children":482},{"class":134,"line":481},12,[483,488,492],{"type":90,"tag":132,"props":484,"children":485},{"style":300},[486],{"type":95,"value":487},"      name",{"type":90,"tag":132,"props":489,"children":490},{"style":306},[491],{"type":95,"value":309},{"type":90,"tag":132,"props":493,"children":494},{"style":312},[495],{"type":95,"value":496}," Authorization\n",{"type":90,"tag":132,"props":498,"children":500},{"class":134,"line":499},13,[501,506,510,515,520],{"type":90,"tag":132,"props":502,"children":503},{"style":300},[504],{"type":95,"value":505},"      prefix",{"type":90,"tag":132,"props":507,"children":508},{"style":306},[509],{"type":95,"value":309},{"type":90,"tag":132,"props":511,"children":512},{"style":306},[513],{"type":95,"value":514}," \"",{"type":90,"tag":132,"props":516,"children":517},{"style":312},[518],{"type":95,"value":519},"Basic ",{"type":90,"tag":132,"props":521,"children":522},{"style":306},[523],{"type":95,"value":524},"\"\n",{"type":90,"tag":132,"props":526,"children":528},{"class":134,"line":527},14,[529,534],{"type":90,"tag":132,"props":530,"children":531},{"style":300},[532],{"type":95,"value":533},"    credential_fields",{"type":90,"tag":132,"props":535,"children":536},{"style":306},[537],{"type":95,"value":407},{"type":90,"tag":132,"props":539,"children":541},{"class":134,"line":540},15,[542,547,552,556],{"type":90,"tag":132,"props":543,"children":544},{"style":306},[545],{"type":95,"value":546},"      -",{"type":90,"tag":132,"props":548,"children":549},{"style":300},[550],{"type":95,"value":551}," name",{"type":90,"tag":132,"props":553,"children":554},{"style":306},[555],{"type":95,"value":309},{"type":90,"tag":132,"props":557,"children":558},{"style":312},[559],{"type":95,"value":430},{"type":90,"tag":132,"props":561,"children":563},{"class":134,"line":562},16,[564,569,573],{"type":90,"tag":132,"props":565,"children":566},{"style":300},[567],{"type":95,"value":568},"        label",{"type":90,"tag":132,"props":570,"children":571},{"style":306},[572],{"type":95,"value":309},{"type":90,"tag":132,"props":574,"children":575},{"style":312},[576],{"type":95,"value":577}," Ably API Key\n",{"type":90,"tag":132,"props":579,"children":581},{"class":134,"line":580},17,[582,587,591],{"type":90,"tag":132,"props":583,"children":584},{"style":300},[585],{"type":95,"value":586},"        required",{"type":90,"tag":132,"props":588,"children":589},{"style":306},[590],{"type":95,"value":309},{"type":90,"tag":132,"props":592,"children":594},{"style":593},"--shiki-light:#FF5370;--shiki-default:#FF9CAC;--shiki-dark:#FF9CAC",[595],{"type":95,"value":596}," true\n",{"type":90,"tag":132,"props":598,"children":600},{"class":134,"line":599},18,[601,606,610],{"type":90,"tag":132,"props":602,"children":603},{"style":300},[604],{"type":95,"value":605},"        is_secret",{"type":90,"tag":132,"props":607,"children":608},{"style":306},[609],{"type":95,"value":309},{"type":90,"tag":132,"props":611,"children":612},{"style":593},[613],{"type":95,"value":596},{"type":90,"tag":132,"props":615,"children":617},{"class":134,"line":616},19,[618],{"type":90,"tag":132,"props":619,"children":620},{"emptyLinePlaceholder":390},[621],{"type":95,"value":393},{"type":90,"tag":132,"props":623,"children":625},{"class":134,"line":624},20,[626,631],{"type":90,"tag":132,"props":627,"children":628},{"style":300},[629],{"type":95,"value":630},"metadata",{"type":90,"tag":132,"props":632,"children":633},{"style":306},[634],{"type":95,"value":407},{"type":90,"tag":132,"props":636,"children":638},{"class":134,"line":637},21,[639,644,648],{"type":90,"tag":132,"props":640,"children":641},{"style":300},[642],{"type":95,"value":643},"  base_url_template",{"type":90,"tag":132,"props":645,"children":646},{"style":306},[647],{"type":95,"value":309},{"type":90,"tag":132,"props":649,"children":650},{"style":312},[651],{"type":95,"value":652}," https:\u002F\u002Frest.ably.io\u002F\n",{"type":90,"tag":132,"props":654,"children":656},{"class":134,"line":655},22,[657,662,666],{"type":90,"tag":132,"props":658,"children":659},{"style":300},[660],{"type":95,"value":661},"  ping_endpoint",{"type":90,"tag":132,"props":663,"children":664},{"style":306},[665],{"type":95,"value":309},{"type":90,"tag":132,"props":667,"children":668},{"style":312},[669],{"type":95,"value":670}," \u002Ftime\n",{"type":90,"tag":132,"props":672,"children":674},{"class":134,"line":673},23,[675],{"type":90,"tag":132,"props":676,"children":677},{"emptyLinePlaceholder":390},[678],{"type":95,"value":393},{"type":90,"tag":132,"props":680,"children":682},{"class":134,"line":681},24,[683,688],{"type":90,"tag":132,"props":684,"children":685},{"style":300},[686],{"type":95,"value":687},"actions",{"type":90,"tag":132,"props":689,"children":690},{"style":306},[691],{"type":95,"value":407},{"type":90,"tag":132,"props":693,"children":695},{"class":134,"line":694},25,[696,700,705,709],{"type":90,"tag":132,"props":697,"children":698},{"style":306},[699],{"type":95,"value":416},{"type":90,"tag":132,"props":701,"children":702},{"style":300},[703],{"type":95,"value":704}," slug",{"type":90,"tag":132,"props":706,"children":707},{"style":306},[708],{"type":95,"value":309},{"type":90,"tag":132,"props":710,"children":711},{"style":312},[712],{"type":95,"value":713}," publish_message\n",{"type":90,"tag":132,"props":715,"children":717},{"class":134,"line":716},26,[718,723,727],{"type":90,"tag":132,"props":719,"children":720},{"style":300},[721],{"type":95,"value":722},"    name",{"type":90,"tag":132,"props":724,"children":725},{"style":306},[726],{"type":95,"value":309},{"type":90,"tag":132,"props":728,"children":729},{"style":312},[730],{"type":95,"value":731}," Publish Message\n",{"type":90,"tag":132,"props":733,"children":735},{"class":134,"line":734},27,[736,741,745],{"type":90,"tag":132,"props":737,"children":738},{"style":300},[739],{"type":95,"value":740},"    description",{"type":90,"tag":132,"props":742,"children":743},{"style":306},[744],{"type":95,"value":309},{"type":90,"tag":132,"props":746,"children":747},{"style":312},[748],{"type":95,"value":749}," Publish a real-time message to a specific pub\u002Fsub channel.\n",{"type":90,"tag":132,"props":751,"children":753},{"class":134,"line":752},28,[754,759,763],{"type":90,"tag":132,"props":755,"children":756},{"style":300},[757],{"type":95,"value":758},"    endpoint",{"type":90,"tag":132,"props":760,"children":761},{"style":306},[762],{"type":95,"value":309},{"type":90,"tag":132,"props":764,"children":765},{"style":312},[766],{"type":95,"value":767}," \u002Fchannels\u002F{channel_id}\u002Fmessages\n",{"type":90,"tag":132,"props":769,"children":771},{"class":134,"line":770},29,[772,777,781],{"type":90,"tag":132,"props":773,"children":774},{"style":300},[775],{"type":95,"value":776},"    method",{"type":90,"tag":132,"props":778,"children":779},{"style":306},[780],{"type":95,"value":309},{"type":90,"tag":132,"props":782,"children":783},{"style":312},[784],{"type":95,"value":785}," POST\n",{"type":90,"tag":132,"props":787,"children":789},{"class":134,"line":788},30,[790,795,799],{"type":90,"tag":132,"props":791,"children":792},{"style":300},[793],{"type":95,"value":794},"    is_mutating",{"type":90,"tag":132,"props":796,"children":797},{"style":306},[798],{"type":95,"value":309},{"type":90,"tag":132,"props":800,"children":801},{"style":593},[802],{"type":95,"value":596},{"type":90,"tag":132,"props":804,"children":806},{"class":134,"line":805},31,[807,812],{"type":90,"tag":132,"props":808,"children":809},{"style":300},[810],{"type":95,"value":811},"    input_schema",{"type":90,"tag":132,"props":813,"children":814},{"style":306},[815],{"type":95,"value":407},{"type":90,"tag":132,"props":817,"children":819},{"class":134,"line":818},32,[820,825,829],{"type":90,"tag":132,"props":821,"children":822},{"style":300},[823],{"type":95,"value":824},"      type",{"type":90,"tag":132,"props":826,"children":827},{"style":306},[828],{"type":95,"value":309},{"type":90,"tag":132,"props":830,"children":831},{"style":312},[832],{"type":95,"value":833}," object\n",{"type":90,"tag":132,"props":835,"children":837},{"class":134,"line":836},33,[838,843],{"type":90,"tag":132,"props":839,"children":840},{"style":300},[841],{"type":95,"value":842},"      properties",{"type":90,"tag":132,"props":844,"children":845},{"style":306},[846],{"type":95,"value":407},{"type":90,"tag":132,"props":848,"children":850},{"class":134,"line":849},34,[851,856],{"type":90,"tag":132,"props":852,"children":853},{"style":300},[854],{"type":95,"value":855},"        path",{"type":90,"tag":132,"props":857,"children":858},{"style":306},[859],{"type":95,"value":407},{"type":90,"tag":132,"props":861,"children":863},{"class":134,"line":862},35,[864,869,873],{"type":90,"tag":132,"props":865,"children":866},{"style":300},[867],{"type":95,"value":868},"          type",{"type":90,"tag":132,"props":870,"children":871},{"style":306},[872],{"type":95,"value":309},{"type":90,"tag":132,"props":874,"children":875},{"style":312},[876],{"type":95,"value":833},{"type":90,"tag":132,"props":878,"children":880},{"class":134,"line":879},36,[881,886],{"type":90,"tag":132,"props":882,"children":883},{"style":300},[884],{"type":95,"value":885},"          required",{"type":90,"tag":132,"props":887,"children":888},{"style":306},[889],{"type":95,"value":407},{"type":90,"tag":132,"props":891,"children":893},{"class":134,"line":892},37,[894,899],{"type":90,"tag":132,"props":895,"children":896},{"style":306},[897],{"type":95,"value":898},"            -",{"type":90,"tag":132,"props":900,"children":901},{"style":312},[902],{"type":95,"value":903}," channel_id\n",{"type":90,"tag":132,"props":905,"children":907},{"class":134,"line":906},38,[908,913],{"type":90,"tag":132,"props":909,"children":910},{"style":300},[911],{"type":95,"value":912},"          properties",{"type":90,"tag":132,"props":914,"children":915},{"style":306},[916],{"type":95,"value":407},{"type":90,"tag":132,"props":918,"children":920},{"class":134,"line":919},39,[921,926],{"type":90,"tag":132,"props":922,"children":923},{"style":300},[924],{"type":95,"value":925},"            channel_id",{"type":90,"tag":132,"props":927,"children":928},{"style":306},[929],{"type":95,"value":407},{"type":90,"tag":132,"props":931,"children":933},{"class":134,"line":932},40,[934,939,943],{"type":90,"tag":132,"props":935,"children":936},{"style":300},[937],{"type":95,"value":938},"              type",{"type":90,"tag":132,"props":940,"children":941},{"style":306},[942],{"type":95,"value":309},{"type":90,"tag":132,"props":944,"children":945},{"style":312},[946],{"type":95,"value":947}," string\n",{"type":90,"tag":132,"props":949,"children":951},{"class":134,"line":950},41,[952,957,961],{"type":90,"tag":132,"props":953,"children":954},{"style":300},[955],{"type":95,"value":956},"              description",{"type":90,"tag":132,"props":958,"children":959},{"style":306},[960],{"type":95,"value":309},{"type":90,"tag":132,"props":962,"children":963},{"style":312},[964],{"type":95,"value":965}," The Ably channel ID.\n",{"type":90,"tag":132,"props":967,"children":969},{"class":134,"line":968},42,[970,975],{"type":90,"tag":132,"props":971,"children":972},{"style":300},[973],{"type":95,"value":974},"        body",{"type":90,"tag":132,"props":976,"children":977},{"style":306},[978],{"type":95,"value":407},{"type":90,"tag":132,"props":980,"children":982},{"class":134,"line":981},43,[983,987,991],{"type":90,"tag":132,"props":984,"children":985},{"style":300},[986],{"type":95,"value":868},{"type":90,"tag":132,"props":988,"children":989},{"style":306},[990],{"type":95,"value":309},{"type":90,"tag":132,"props":992,"children":993},{"style":312},[994],{"type":95,"value":833},{"type":90,"tag":132,"props":996,"children":998},{"class":134,"line":997},44,[999,1003],{"type":90,"tag":132,"props":1000,"children":1001},{"style":300},[1002],{"type":95,"value":885},{"type":90,"tag":132,"props":1004,"children":1005},{"style":306},[1006],{"type":95,"value":407},{"type":90,"tag":132,"props":1008,"children":1010},{"class":134,"line":1009},45,[1011,1015],{"type":90,"tag":132,"props":1012,"children":1013},{"style":306},[1014],{"type":95,"value":898},{"type":90,"tag":132,"props":1016,"children":1017},{"style":312},[1018],{"type":95,"value":1019}," name\n",{"type":90,"tag":132,"props":1021,"children":1023},{"class":134,"line":1022},46,[1024,1028],{"type":90,"tag":132,"props":1025,"children":1026},{"style":306},[1027],{"type":95,"value":898},{"type":90,"tag":132,"props":1029,"children":1030},{"style":312},[1031],{"type":95,"value":1032}," data\n",{"type":90,"tag":132,"props":1034,"children":1036},{"class":134,"line":1035},47,[1037,1041],{"type":90,"tag":132,"props":1038,"children":1039},{"style":300},[1040],{"type":95,"value":912},{"type":90,"tag":132,"props":1042,"children":1043},{"style":306},[1044],{"type":95,"value":407},{"type":90,"tag":132,"props":1046,"children":1048},{"class":134,"line":1047},48,[1049,1054],{"type":90,"tag":132,"props":1050,"children":1051},{"style":300},[1052],{"type":95,"value":1053},"            name",{"type":90,"tag":132,"props":1055,"children":1056},{"style":306},[1057],{"type":95,"value":407},{"type":90,"tag":132,"props":1059,"children":1061},{"class":134,"line":1060},49,[1062,1066,1070],{"type":90,"tag":132,"props":1063,"children":1064},{"style":300},[1065],{"type":95,"value":938},{"type":90,"tag":132,"props":1067,"children":1068},{"style":306},[1069],{"type":95,"value":309},{"type":90,"tag":132,"props":1071,"children":1072},{"style":312},[1073],{"type":95,"value":947},{"type":90,"tag":132,"props":1075,"children":1077},{"class":134,"line":1076},50,[1078,1082,1086],{"type":90,"tag":132,"props":1079,"children":1080},{"style":300},[1081],{"type":95,"value":956},{"type":90,"tag":132,"props":1083,"children":1084},{"style":306},[1085],{"type":95,"value":309},{"type":90,"tag":132,"props":1087,"children":1088},{"style":312},[1089],{"type":95,"value":1090}," The event name.\n",{"type":90,"tag":132,"props":1092,"children":1094},{"class":134,"line":1093},51,[1095,1100],{"type":90,"tag":132,"props":1096,"children":1097},{"style":300},[1098],{"type":95,"value":1099},"            data",{"type":90,"tag":132,"props":1101,"children":1102},{"style":306},[1103],{"type":95,"value":407},{"type":90,"tag":132,"props":1105,"children":1107},{"class":134,"line":1106},52,[1108,1112,1116],{"type":90,"tag":132,"props":1109,"children":1110},{"style":300},[1111],{"type":95,"value":938},{"type":90,"tag":132,"props":1113,"children":1114},{"style":306},[1115],{"type":95,"value":309},{"type":90,"tag":132,"props":1117,"children":1118},{"style":312},[1119],{"type":95,"value":947},{"type":90,"tag":132,"props":1121,"children":1123},{"class":134,"line":1122},53,[1124,1128,1132],{"type":90,"tag":132,"props":1125,"children":1126},{"style":300},[1127],{"type":95,"value":956},{"type":90,"tag":132,"props":1129,"children":1130},{"style":306},[1131],{"type":95,"value":309},{"type":90,"tag":132,"props":1133,"children":1134},{"style":312},[1135],{"type":95,"value":1136}," The message payload.\n",{"type":90,"tag":105,"props":1138,"children":1139},{},[],{"type":90,"tag":109,"props":1141,"children":1143},{"id":1142},"action-parsing-mechanics",[1144],{"type":95,"value":1145},"Action Parsing Mechanics",{"type":90,"tag":91,"props":1147,"children":1148},{},[1149],{"type":95,"value":1150},"During compilation, Datafuse processes custom integrations to guarantee safe agent runtime invocation:",{"type":90,"tag":1152,"props":1153,"children":1155},"h3",{"id":1154},"path-parameter-interpolation",[1156],{"type":95,"value":1157},"Path Parameter Interpolation",{"type":90,"tag":91,"props":1159,"children":1160},{},[1161,1163,1169,1171,1177],{"type":95,"value":1162},"If your endpoint template contains path variables (e.g. ",{"type":90,"tag":128,"props":1164,"children":1166},{"className":1165},[],[1167],{"type":95,"value":1168},"\u002Fchannels\u002F{channel_id}\u002Fmessages",{"type":95,"value":1170},"), Datafuse parses the ",{"type":90,"tag":128,"props":1172,"children":1174},{"className":1173},[],[1175],{"type":95,"value":1176},"path",{"type":95,"value":1178}," argument key from the agent payload and dynamically rewrites the URL at runtime.",{"type":90,"tag":1152,"props":1180,"children":1182},{"id":1181},"mutation-isolation",[1183],{"type":95,"value":1184},"Mutation Isolation",{"type":90,"tag":91,"props":1186,"children":1187},{},[1188,1190,1195,1197,1202],{"type":95,"value":1189},"AI models must know if an action causes side-effects. Datafuse sets the ",{"type":90,"tag":128,"props":1191,"children":1193},{"className":1192},[],[1194],{"type":95,"value":218},{"type":95,"value":1196}," flag true for any HTTP methods other than ",{"type":90,"tag":128,"props":1198,"children":1200},{"className":1199},[],[1201],{"type":95,"value":249},{"type":95,"value":1203},". This allows you to restrict writing actions behind human-in-the-loop approvals at the SDK level.",{"type":90,"tag":105,"props":1205,"children":1206},{},[],{"type":90,"tag":109,"props":1208,"children":1210},{"id":1209},"using-the-developer-console-to-add-integrations",[1211],{"type":95,"value":1212},"Using the Developer Console to Add Integrations",{"type":90,"tag":91,"props":1214,"children":1215},{},[1216],{"type":95,"value":1217},"To register custom integrations manually:",{"type":90,"tag":1219,"props":1220,"children":1221},"ol",{},[1222,1234,1246,1258],{"type":90,"tag":183,"props":1223,"children":1224},{},[1225,1227,1232],{"type":95,"value":1226},"Navigate to the ",{"type":90,"tag":98,"props":1228,"children":1229},{},[1230],{"type":95,"value":1231},"Connectors",{"type":95,"value":1233}," section inside the Datafuse web console.",{"type":90,"tag":183,"props":1235,"children":1236},{},[1237,1239,1244],{"type":95,"value":1238},"Select ",{"type":90,"tag":98,"props":1240,"children":1241},{},[1242],{"type":95,"value":1243},"Add Custom Integration",{"type":95,"value":1245}," and choose between writing custom YAML configurations or pasting an OpenAPI JSON\u002FYAML spec.",{"type":90,"tag":183,"props":1247,"children":1248},{},[1249,1251,1256],{"type":95,"value":1250},"Click ",{"type":90,"tag":98,"props":1252,"children":1253},{},[1254],{"type":95,"value":1255},"Compile & Register",{"type":95,"value":1257},". The compiler will validate the schemas and publish the integration to your provider registry.",{"type":90,"tag":183,"props":1259,"children":1260},{},[1261,1262,1267],{"type":95,"value":1238},{"type":90,"tag":98,"props":1263,"children":1264},{},[1265],{"type":95,"value":1266},"Discover Tools",{"type":95,"value":1268}," to verify all compiled actions are correctly mapped.",{"type":90,"tag":1270,"props":1271,"children":1272},"blockquote",{},[1273],{"type":90,"tag":91,"props":1274,"children":1275},{},[1276,1281],{"type":90,"tag":132,"props":1277,"children":1278},{},[1279],{"type":95,"value":1280},"!NOTE",{"type":95,"value":1282},"\nOnce compiled, the custom integrations immediately become available to your TypeScript or Python SDK loops, allowing your AI agent to call them with zero redeployment.",{"type":90,"tag":1284,"props":1285,"children":1286},"style",{},[1287],{"type":95,"value":1288},"html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"title":84,"searchDepth":144,"depth":144,"links":1290},[1291,1292,1293,1297],{"id":111,"depth":144,"text":114},{"id":257,"depth":144,"text":260},{"id":1142,"depth":144,"text":1145,"children":1294},[1295,1296],{"id":1154,"depth":153,"text":1157},{"id":1181,"depth":153,"text":1184},{"id":1209,"depth":144,"text":1212},"markdown","content:1.docs:2.core-concepts:2.custom-integrations.md","content","1.docs\u002F2.core-concepts\u002F2.custom-integrations.md","1.docs\u002F2.core-concepts\u002F2.custom-integrations","md",[1305,1307],{"_path":25,"title":28,"description":1306},"Understand the foundational pillars that power the Datafuse Platform.",{"_path":34,"title":33,"description":1308},"Decouple credentials from agent prompts with our zero-retention authentication vault.",1780069615247]