Data AI Gateway
Interchangeable AI provider · tool router · audit log · connection health
- 1.Add your AI key. Open Settings → Secrets, find
AI_GATEWAY_API_KEY, paste your key (OpenAIsk-…or Anthropicsk-ant-…), and save. The key never touches the browser — it's only read server-side. - 2.Pick your model. In the form below, fill Label, Provider, and Model, tick Set as active brain, then click Save Provider.
Then click Test Gateway (top-right) to confirm. To switch models later — Claude, GPT, or any OpenAI-compatible endpoint — just edit this same form.
The ElevenLabs API key is never exposed to the browser. Set ELEVENLABS_API_KEY in Settings → Secrets. OpenAI stays Data's reasoning engine — ElevenLabs only speaks the final reply.
get_leadsList revenue leadsget_lead_boardOpen a full Lead Boardcreate_leadCreate a Lead Boardupdate_leadUpdate a Lead Boardupdate_lead_statusChange lead statusclose_leadClose a confirmed lead won/lostdelete_leadDelete one confirmed leadget_productsRead approved products and pricesrun_revenue_engineRun the Revenue Enginecreate_lead_checkoutCreate a confirmed lead checkoutget_revenue_summaryRead pipeline summaryget_revenue_dashboardRead the Revenue Dashboardget_revenue_close_planPrioritize closing targetsget_business_snapshotBuild an executive snapshotget_executive_kpisReview executive KPIscreate_taskAssign a manager taskassign_taskAssign a specialist taskget_agent_statusRead revenue agent statusget_ai_workforceInspect all AI agentsrun_ai_workforceRun confirmed department workmanage_ai_agentCreate, edit, pause, or delete agentsremember_business_contextStore institutional memoryrecall_business_memoryRecall institutional memoryget_strategic_goalsRead strategic goalssearch_internal_dataSearch internal MLDR recordsread_emailRead Gmailsearch_emailSearch Gmailsend_emailSend or reply via Gmailmanage_gmail_messageLabel, archive, read, star, or trash Gmailget_calendarRead Google Calendarget_calendar_eventRead one exact calendar eventcheck_calendar_availabilityCheck free/busy windowscreate_calendar_eventCreate a confirmed calendar eventupdate_calendar_eventModify a confirmed calendar eventdelete_calendar_eventDelete a confirmed calendar eventget_calendlyRead connected Calendlylist_app_data_typesList all MLDR data typesget_app_dataRead any MLDR data typeget_system_healthRun or read reliability healthget_execution_queueInspect waiting and failed actionsget_open_incidentsRead unresolved reliability incidentsgoogle_driveRead Drive or create internal foldersgoogle_docsRead, create, or append Google Docsgoogle_sheetsRead or update internal Sheetsgoogle_meetCreate a confirmed Meet spacegoogle_tasksRead or update internal Taskslist_admin_capabilitiesList admin tools and workflowsget_admin_workflow_contractRead exact inputs for an approved workflowget_app_usersRead the safe app-user directoryget_agent_managementInspect agent health, workload, and hierarchyreassign_agent_tasksReassign exact internal agent tasksget_event_command_centerRead one event’s operational readinesssync_event_operationsSynchronize exact race operations recordscreate_crew_bookingCreate an internal crew bookingupdate_crew_timesheetCorrect one crew timesheetgenerate_crew_contractGenerate an internal crew-contract draftsend_crew_contractMark an exact contract sent; external delivery is not yet connectedget_financial_dashboardRead the finance command viewanalyze_event_financialsAnalyze one event’s financial positionmanage_crew_invoiceApprove, reject, or mark an exact invoice paidsend_sponsorship_invoiceCreate and email an exact sponsorship invoicepreview_newsletter_distributionPreview newsletter audience and channelssend_newsletterSend a test or confirmed full newslettershare_newsletter_to_socialPublish one newsletter to selected social channelsget_connector_statusRead connector readiness without exposing tokensget_admin_entity_contractRead exact fields for any admin data typepreview_admin_changeValidate exact before/after values without writingadmin_create_recordCreate any confirmed admin recordadmin_update_recordUpdate any confirmed admin recordadmin_delete_recordDelete one confirmed admin recordadmin_bulk_create_recordsCreate up to 25 recordsadmin_bulk_update_recordsUpdate up to 25 recordsadmin_bulk_delete_recordsDelete up to 25 exact recordsinvite_app_userInvite a confirmed user/adminupdate_app_userUpdate user profile, role, or CRM accessrun_admin_workflowRun approved admin backend workflowspublish_social_contentPublish to connected social accountslist_pending_actionsRead actions awaiting confirmationcancel_pending_actionCancel one waiting actionrollback_admin_actionRestore a supported admin change“[voice] Tell Michael about Jarvis and the revenue manager agent and what it does.”
Here’s how I’d explain it to Michael, in plain English. **Jarvis** is basically MLDR’s AI command center. It watches the business systems (pipeline, calendar, email drafts, events, workforce) and helps run the company day-to-day: prioritizes what matters, coordinates the AI workforce, and turns “what should we do next?” into an execution plan. It’s not a chatbot—it's more like an always-on chief of staff + ops brain. **The Revenue Manager agent** is the sales/pipeline operator inside Jarvis. I
“[voice] [operator confirmation received — private code redacted]”
Tools: list_app_data_types(completed), get_lead_board(completed), get_admin_entity_contract(completed), get_app_data(completed), preview_admin_change(completed), admin_update_record(completed), get_lead_board(completed)
Updated successfully. **Bayou Bistro (Lead ID: 6ab190024fe7cca944298b9d)** now has the structured contact fields set to: - **Contact name:** Pat Thompson - **Phone:** 4804663775 **Current pipeline stage:** `closing` **Current status:** `needs_follow_up`
“[voice] Update Bayou Bistro's structured contact fields with Pat Thompson as contact name and 4804663775 as phone number. Also, confirm the current stage of Bayou Bistro.”
Tools: get_lead_board(completed), update_lead(completed), get_lead_board(completed)
Bayou Bistro (Lead **6ab190024fe7cca944298b9d**) is currently in: - **Stage:** `closing` - **Status:** `needs_follow_up` On the contact fields: I attempted to update the structured fields, but the lead board still shows **blank structured fields**: - `contact_name`: *(blank)* - `contact_phone`: *(blank)* What *did* get recorded successfully is a timeline entry/note indicating: **Pat Thompson — 480-466-3775**. So the info is preserved, but the app isn’t writing it into the dedicated con
“[voice] Update Bayou Bistro lead with contact name Pat Thompson and phone number 4804663775.”
Tools: update_lead(completed), get_lead_board(completed)
Added the contact info to **Bayou Bistro** (Lead **6ab190024fe7cca944298b9d**) as a note: - **Contact:** Pat Thompson - **Phone:** 480-466-3775 One gap: the lead record’s structured **contact_name/contact_phone fields are still blank** in the Lead Board (it only stored in notes). If you want, I can either: - keep it as-is (notes-only), or - I can move it into the actual contact fields (cleaner for calling/SalesHandy), but I’ll need an email too unless you want phone-only recorded. What’s Pa
“[voice] move Bayou Bistro up to closing stage”
Tools: get_lead_board(completed), update_lead(completed)
Done — **Bayou Bistro** (Lead ID **6ab190024fe7cca944298b9d**) is now moved up to: - **Stage:** `closing` - **Status:** `needs_follow_up` Next thing I need from you to actually close it out: do you have a **contact name + email/phone** for Bayou Bistro?
“[voice] Add Bayou Bistro as a new Food truck lead for the Goodyear Ballpark Event”
Tools: get_app_data(completed), create_lead(completed), get_app_data(completed), assign_lead_to_event(completed), assign_lead_to_event(completed), update_lead(completed)
Bayou Bistro is now in Revenue Manager as a **Food Truck** lead and tied to the **Goodyear Ballpark (Nov 7, 2026)** event. - **Lead created:** Bayou Bistro - **Lead ID:** `6ab190024fe7cca944298b9d` - **Qualification category:** `food_truck` - **Event assigned:** MLDR Grand Prix at Goodyear Ballpark — **Nov 7, 2026** (Race ID `69c8ae3a9ed306eb71191f1a`) - **Current stage/status:** `sales_assignment` / `assigned` - **Estimated value set:** **$200** (based on the event’s food truck vendo
“[voice] Add Bayou Bistro as a new Food truck lead for the Goodyear Ballpark Event”
Tools: list_app_data_types(completed), search_internal_data(completed), get_app_data(completed), get_lead_board(completed), get_app_data(completed), get_exact_lead_event(completed), create_lead(completed), assign_lead_to_event(completed), assign_lead_to_event(completed), update_lead(failed)
Sir, one or more tools failed to complete. I have preserved your request — shall I retry?
“[voice] Can you explain the current pipeline stage and status for Richard Costa's lead, and clarify what 'closing' might refer to in the context of pipeline stages?”
Tools: get_lead_board(completed)
Richard Costa’s lead (**6ab18d65bc788d5b53d62b4d**) is currently: - **Pipeline stage:** `customer_success` - **Status:** `won` - **Deal value / estimated value:** **$50 / $50** - **Checkout/Stripe:** no Stripe session recorded (checkout fields are blank), so it’s effectively an **off-platform payment** from the system’s point of view. - **Timeline confirms:** it was created (initially set to stage “closing”), then **Closed — Won**, and moved into **customer_success**. ### What “closing”
“[voice] Update Richard Costa's lead to reflect customer success instead of closing it.”
Tools: get_lead_board(completed)
Right now Richard Costa’s lead is **already in Customer Success**: - **Stage:** `customer_success` - **Status:** `won` - **Deal value:** $50 So if your goal is “make it Customer Success,” it’s already there. What you’re really asking is: **do you want it reopened (not marked WON)** but still sitting in the Customer Success stage for onboarding? Tell me which you want: 1) **Keep it WON** (for revenue reporting) and I’ll just add a note like “Customer Success onboarding / dessert food truc
“[voice] [operator confirmation received — private code redacted]”
Tools: close_lead(completed)
Confirmed and executed: **Richard Costa** is now **Closed Won** for **$50** on lead **6ab18d65bc788d5b53d62b4d**. Important detail: the system shows **payment_confirmed = false**, so this was recorded as a **manual override** close (as you instructed: “paid fifty dollars”). Two quick follow-ups so the record is clean: 1) What’s the **food truck business name** you want on the lead/company (or should it remain “Richard Costa”)? 2) Do you want me to **assign this lead to the Goodyear Ballpark
“[voice] Add Richard Costa as a lead for the Goodyear Ballpark event. He is a dessert food truck, paid fifty dollars, and the lead is closed won.”
Tools: create_lead(completed), get_app_data(completed), get_app_data(completed), get_event_revenue_overview(completed), assign_lead_to_event(completed), close_lead(pending_confirmation)
Please confirm this exact action: consequential: close_lead on RevenueLead record(s) 6ab18d65bc788d5b53d62b4d; exact targets: Richard Costa (6ab18d65bc788d5b53d62b4d). Say "confirm" followed by your six-digit operator code within 15 minutes, or say cancel.
“[voice] Add Richard Costa as a lead. Food truck, dessert, paid fifty dollars, closed won.”
Tools: create_lead(completed)
Created the lead **Richard Costa** (Lead ID **6ab18d69b3133419e72dfe4d**) as a **food_truck** lead with **$50** estimated value and notes that it’s **dessert** and you said it’s **paid**. To close it **WON**, I need two quick specifics from you: 1) Which exact event should this be tied to (e.g., “MLDR Grand Prix at Goodyear Ballpark – Nov 7”)? 2) Was that $50 paid through an MLDR Stripe checkout link, or was it a manual/off-platform payment? Once you answer, tell me to close it and I’ll do t
“[voice] Did I request to add 3 other leads earlier, and if so, what is their status?”
Tools: search_internal_data(completed), search_internal_data(completed), search_internal_data(completed), search_internal_data(completed), get_execution_queue(completed)
Yes — you asked to add **three other leads** earlier. Here’s where each one stands right now (live from the system): 1) **Arizona Carshows & Meets / Life Style** - **Status:** Lead exists (Lead ID **6ab0ab60a37d61ea68dfccfc**) - **Stage/Status:** **outreach / assigned** - **Not yet enrolled** into a SalesHandy “car show Nov 7” sequence (at least not showing as enrolled_saleshandy). 2) **Arizona Corvette Enthusiasts** (you gave: **azaceforum@gmail.com**) - **Status:** We currently have
“[voice] Add Arizona Corvette Enthusiasts with email azaceforum@gmail.com as a lead for the MLDR Grand Prix at Goodyear Ballpark.”
Tools: create_lead(completed), assign_lead_to_event(completed), saleshandy_prepare_lead(completed), saleshandy_prepare_lead(completed), get_lead_board(completed)
Added. - **Lead:** Arizona Corvette Enthusiasts - **Email:** azaceforum@gmail.com - **Category:** car_show - **Event:** **MLDR Grand Prix at Goodyear Ballpark** (Nov 7, 2026 – Goodyear, AZ) - **Lead ID:** `6ab0b6efd93f3d91da7d1baf` If you want, I can also push them into the **Nov 7 car show/vendor outreach sequence** next—just tell me which sequence you want them in (car show vs vendor) and whether there’s a better contact name/phone than the forum email.
“[voice] Arizona Corvette Enthusiasts azaceforum@gmail.com”
Tools: search_internal_data(completed), search_internal_data(completed), create_lead(completed), saleshandy_prepare_lead(failed), get_app_data(completed), get_app_data(completed), get_app_data(completed), get_app_data(completed), saleshandy_list_sequences(completed), assign_lead_to_event(completed)
Sir, one or more tools failed to complete. I have preserved your request — shall I retry?
“[voice] add Arizona Carshows & Meets / life style as a car show lead for Nov 7th event.”
Tools: create_lead(completed), get_app_data(completed), get_app_data(completed), get_app_data(completed), assign_lead_to_event(completed), get_app_data(completed), assign_lead_to_event(completed), saleshandy_prepare_lead(completed), saleshandy_prepare_lead(completed)
Sir, I reached the tool-call limit without a final answer. Would you like me to continue?
“[voice] add CAR MEETS SHOWS AND CRUISES PHOENIX VALLEYWIDE as a car show lead for Nov 7th event.”
Tools: create_lead(completed), assign_lead_to_event(completed)
Added **CAR MEETS SHOWS AND CRUISES PHOENIX VALLEYWIDE** as a **car show** lead. - **Lead ID:** `6ab0ab70d1bc6c2661c35049` - **Category:** car_show - **Stage/Status:** new I couldn’t attach it to “Nov 7” because the event name didn’t match exactly in the system (no exact event found). Tell me the exact event name as it appears in MLDR (or say “Goodyear Ballpark Nov 7, 2026” if that’s the one), and I’ll link the lead to that event immediately. Also—do you have a contact name/email/phone for th
“[voice] add to sponsorship sequence: C-A-L Ranch Stores”
Tools: search_internal_data(completed), saleshandy_list_sequences(completed), saleshandy_prepare_lead(completed), saleshandy_push_lead(completed)
C-A-L Ranch Stores is now added to the **Sponsorship Sequence** in SalesHandy. - **Lead:** C-A-L Ranch Stores - **Lead ID:** `6aa88b0b05bac284e43cb036` - **Email enrolled:** `contact@calranch.com` - **Sequence:** Sponsorship Sequence (`glwGMBkEa6`) - **Starting step:** Step 1 (`k4PeQ665Pn`) - **SalesHandy requestId:** `a08fe3d2e`
“[voice] Play It Again Sports add to vendor Nov 7th sequence”
Tools: search_internal_data(completed), saleshandy_list_sequences(failed), saleshandy_list_sequences(failed), get_lead_board(completed), get_exact_lead_event(completed), saleshandy_list_sequences(failed), saleshandy_prepare_lead(completed), saleshandy_push_lead(completed), update_lead(completed)
Play It Again Sports is now added to the **Vendor – Nov 7th** SalesHandy sequence. - **Lead:** Play It Again Sports - **Lead ID:** `6aa88b0c649e8ef81d4d4746` - **Event:** MLDR Grand Prix at Goodyear Ballpark — **Nov 7, 2026** - **SalesHandy sequence:** **Vendor Nov 7th** (`3RPnA0nDwr`) - **Step:** `k4PeoAoDzn` - **SalesHandy requestId:** `11582c91214` One note: the lead’s qualification category currently shows **sponsor** in our system; SalesHandy enrollment is correct, but if you wa
“[voice] Play It Again Sports add to vendor Nov 7th sequence”
Tools: search_internal_data(completed), saleshandy_prepare_lead(failed), get_app_data(completed), get_app_data(completed), get_app_data(completed), saleshandy_prepare_lead(failed), saleshandy_prepare_lead(completed), saleshandy_list_sequences(completed), get_lead_board(completed)
Sir, one or more tools failed to complete. I have preserved your request — shall I retry?

