Connector Directory

Every tool your agent can act on.

Voicent isn't a closed box. Every connector below is a real integration your voice agents can call mid-conversation or after the call — and you can build your own in YAML, no Python required.

connectors 22actions 89categories 12

Browse

Category
Auth

22 connectors

Accounting·oauth2
5 actions
  • get_company_info
  • query_customers
  • query_invoices
  • get_invoice
  • create_invoice
YAML connector · quickbooks
Xero5 realtime
Accounting·oauth2
5 actions
  • get_organisation
  • list_contacts
  • get_contact
  • list_invoices
  • get_invoice
YAML connector · xero
Cal.com3 realtime
Calendar·api_key
4 actions
  • list_bookings
  • get_booking
  • get_availability
  • create_booking
YAML connector · calcom
Calendly2 realtime
Calendar·api_key
2 actions
  • get_available_times
  • get_scheduled_events
Python plugin · calendly
Shopify5 realtime
Commerce·api_key
5 actions
  • lookup_order
  • list_orders
  • get_customer
  • search_customers
  • get_shop
YAML connector · shopify
Communication·api_key
2 actions
  • send_email
  • send_template_email
YAML connector · email_smtp
Communication·oauth2
2 actions
  • send_message
  • list_channels
Python plugin · slack
Twilio SMS3 realtime
Communication·api_key
4 actions
  • send_sms
  • list_messages
  • get_message
  • get_account
YAML connector · twilio_sms
Attio4 realtime
CRM·api_key
5 actions
  • list_people
  • list_companies
  • get_record
  • list_notes
  • create_note
YAML connector · attio
GoHighLevel8 realtime
CRM·oauth2
11 actions
  • lookup_contact
  • upsert_contact
  • get_available_slots
  • book_appointment
  • reschedule_appointment
  • cancel_appointment
  • get_contact_appointments
  • find_appointment_by_phone
  • create_note
  • forward_call_event
  • forward_raw_event
Python plugin · ghl
HubSpot2 realtime
CRM·oauth2
4 actions
  • lookup_contact
  • upsert_contact
  • get_contact
  • create_deal
Python plugin · hubspot
Custom·custom

0 actions

Python plugin · custom_rest
Housecall Pro4 realtime
Field Services·api_key
5 actions
  • list_customers
  • get_customer
  • list_jobs
  • get_job
  • create_estimate
YAML connector · housecall_pro
Jobber5 realtime
Field Services·api_key
5 actions
  • list_clients
  • get_client
  • list_jobs
  • list_quotes
  • list_invoices
YAML connector · jobber
ServiceTitan3 realtime
Field Services·custom
5 actions
  • get_customer
  • list_jobs
  • create_job
  • book_appointment
  • get_technician_availability
Python plugin · service_titan
Zep Memory4 realtime
Memory·api_key
7 actions
  • get_user_memory
  • ensure_user_exists
  • create_session
  • add_session_messages
  • search_group_graph
  • search_user_graph
  • add_group_data
Python plugin · zep
Langfuse1 realtime
Observability·api_key
1 actions
  • get_prompt
Python plugin · langfuse
VoicePaystub2 realtime
Payments·api_key
3 actions
  • create_payment_link
  • check_payment_status
  • send_payment_request
Python plugin · voicepay
Airtable2 realtime
Productivity·api_key
4 actions
  • list_records
  • get_record
  • create_record
  • update_record
YAML connector · airtable
Google Sheets2 realtime
Productivity·oauth2
4 actions
  • get_values
  • update_values
  • append_row
  • get_spreadsheet
YAML connector · google_sheets
Notion3 realtime
Productivity·api_key
4 actions
  • query_database
  • get_page
  • create_page
  • search
YAML connector · notion
Test Connector (httpbin)2 realtime
Utility·api_key
2 actions
  • echo_get
  • echo_post
YAML connector · _test_httpbin

Connector schema

Connectors are defined declaratively. A YAML file describes auth, the base URL, and each action's request and response — including the speakable string the agent reads aloud. The engine can't tell a YAML connector from a hand-coded one.

connector:
  type_key: shopify          # unique identifier
  display_name: Shopify
  category: commerce
  version: "1.0"

auth:
  type: api_key              # api_key | oauth2 | basic | custom
  config_fields:
    - key: shop_domain
      label: Shop Domain
      type: string
      required: true

base_url: "https://{config.shop_domain}/admin/api/2024-01"
default_headers:
  X-Shopify-Access-Token: "{auth.access_token}"

actions:
  lookup_order:
    name: Look Up Order
    supports_realtime: true
    input:
      order_number: { type: string, required: true }
    request:
      method: GET
      path: /orders.json
      query: { name: "{input.order_number}" }
    response:
      root: data.orders[0]
      fields: { order_id: id, status: financial_status }
      speakable: "Order #{order_id} is {status}"
    errors:
      empty_result: "No order found"

Values are interpolated with single-brace {scope.path} syntax (distinct from the workflow engine's {{double braces}}):

tokenresolves to
{auth.*}Decrypted credentials from workspace_integrations
{config.*}Config fields from workspace_integrations
{input.*}Action params passed at execution time
{input.x|default:val}Fallback value when a param is missing

Supported auth types:

auth.typehow it works
api_keyBearer or header token
oauth2Authorization-code or client-credentials grant
basicHTTP Basic auth (username / password) — e.g. Twilio
customMulti-step auth — e.g. ServiceTitan's dual-layer token + app key

ToolResult envelope

Every action returns the same standardized shape. The executor usesdata for downstream {{steps.*}}access and speakable for the voice agent.

{
  "success":   true,             // did the action succeed?
  "data":      { ... },          // structured output for {{steps.node.data.*}}
  "speakable": "...",            // natural-language string for the voice agent
  "metadata": {
    "connector":    "shopify",
    "action":       "lookup_order",
    "latency_ms":   860,
    "workspace_id": "ws_..."
  }
}

Build your own connector

  1. Create app/connectors/schemas/<type_key>.yaml.
  2. Define auth, base_url, and your actions with request and response specs.
  3. Restart — the loader scans the directory and registers it automatically.
  4. No Python required unless the auth or logic is genuinely custom.

A complete, working connector in ~35 lines:

connector:
  type_key: my_api
  display_name: My API
  category: custom
  version: "1.0"

auth:
  type: api_key
  config_fields:
    - key: api_key
      label: API Key
      type: string
      required: true

base_url: "https://api.example.com/v1"
default_headers:
  Authorization: "Bearer {auth.api_key}"

actions:
  lookup_customer:
    name: Look Up Customer
    supports_realtime: true
    input:
      phone: { type: string, required: true }
    request:
      method: GET
      path: /customers
      query: { phone: "{input.phone}" }
    response:
      root: data.customers[0]
      fields: { name: full_name, status: account_status }
      speakable: "Found {name}, account {status}"
    errors:
      empty_result: "No customer found"

Don't see your tool?

Request a connector and we'll build it — or submit your own YAML.