Skip to main content

Settings tools

Integrations and webhooks — browse/list/test the org's connected integrations (read-only; never exposes credentials), and manage incoming & outgoing webhooks (provision incoming webhook URLs to wire into a Webhook Trigger node; manage outgoing event subscriptions).

18 tools. Each is callable over MCP with a Bearer agx_ key that holds the required scope. The catalog is public (tools/list isn't scope-filtered); the scope below is enforced when the tool is called (tools/call) — a key without it is refused (default-deny).

get_incoming_webhook

Get one incoming webhook by id, including used_by (the active workflows whose webhook_trigger node binds it). No secret. Requires webhooks:read.

Required scope: webhooks:read

Input

ParameterTypeRequiredDescription
webhook_idstring

Example

{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "get_incoming_webhook",
"arguments": {
"webhook_id": "\u2026"
}
}
}

get_incoming_webhook_logs

Recent request logs for an incoming webhook. Filters: status, limit. Requires webhooks:read.

Required scope: webhooks:read

Input

ParameterTypeRequiredDescription
webhook_idstring
statusstringreceived | processed | failed | ignored.
limitinteger

Example

{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "get_incoming_webhook_logs",
"arguments": {
"webhook_id": "\u2026"
}
}
}

get_integration

Get one connected integration by id (type, name, flags, and which config fields are set — never their values). Requires integrations:read.

Required scope: integrations:read

Input

ParameterTypeRequiredDescription
integration_idstring

Example

{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "get_integration",
"arguments": {
"integration_id": "\u2026"
}
}
}

get_outgoing_webhook

Get one outgoing webhook by id. No secret. Requires webhooks:read.

Required scope: webhooks:read

Input

ParameterTypeRequiredDescription
webhook_idstring

Example

{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "get_outgoing_webhook",
"arguments": {
"webhook_id": "\u2026"
}
}
}

create_incoming_webhook

Create an incoming webhook. Required: slug (unique, URL-safe — becomes /hooks/{org}/{slug}). Optional: name, description, expected_schema, is_active. Returns {id, slug, url, secret} — the SECRET is shown ONCE. Use the returned id as a webhook_trigger node's webhook_id to wire it to a workflow (create_workflow / edit_workflow). Requires webhooks:write.

Required scope: webhooks:write

Input

ParameterTypeRequiredDescription
slugstringUnique URL-safe id (lowercase, hyphens).
namestring
descriptionstring
expected_schemaobjectOptional JSON schema documenting the expected payload.
is_activeboolean

Example

{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "create_incoming_webhook",
"arguments": {
"slug": "\u2026"
}
}
}

create_outgoing_webhook

Create an outgoing webhook / event subscription. Required: name, url, events (non-empty array; see list_webhook_event_types). Optional: webhook_type (automatic|manual), is_active, retry_count, timeout_seconds. The URL is SSRF-validated (internal/private targets rejected). Returns {...,secret} ONCE — used to verify the X-Webhook-Signature. Requires webhooks:write.

Required scope: webhooks:write

Input

ParameterTypeRequiredDescription
namestring
urlstringPublic https URL to POST to.
eventsarray<string>Event names to subscribe to.
webhook_typestringautomatic (default) | manual.
is_activeboolean
retry_countinteger
timeout_secondsinteger

Example

{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "create_outgoing_webhook",
"arguments": {
"name": "\u2026",
"url": "\u2026",
"events": []
}
}
}

update_incoming_webhook

Update an incoming webhook (partial): name/description/expected_schema/is_active. Slug is immutable. Requires webhooks:write.

Required scope: webhooks:write

Input

ParameterTypeRequiredDescription
webhook_idstring
namestring
descriptionstring
expected_schemaobject
is_activeboolean

Example

{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "update_incoming_webhook",
"arguments": {
"webhook_id": "\u2026"
}
}
}

update_outgoing_webhook

Update an outgoing webhook (partial): name/url/events/webhook_type/is_active/retry_count/timeout_seconds. URL is re-SSRF-validated. Requires webhooks:write.

Required scope: webhooks:write

Input

ParameterTypeRequiredDescription
webhook_idstring
namestring
urlstring
eventsarray<string>
webhook_typestring
is_activeboolean
retry_countinteger
timeout_secondsinteger

Example

{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "update_outgoing_webhook",
"arguments": {
"webhook_id": "\u2026"
}
}
}

delete_incoming_webhook

Delete an incoming webhook. Reference-checked: if any active workflow binds it, returns 409 with those workflows unless force=true. permanent=true hard-deletes. Requires webhooks:write.

Required scope: webhooks:write

Input

ParameterTypeRequiredDescription
webhook_idstring
forcebooleanDelete even if workflows depend on it.
permanentbooleanHard delete (default false = retire the URL).

Example

{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "delete_incoming_webhook",
"arguments": {
"webhook_id": "\u2026"
}
}
}

delete_outgoing_webhook

Delete an outgoing webhook. Requires webhooks:write.

Required scope: webhooks:write

Input

ParameterTypeRequiredDescription
webhook_idstring

Example

{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "delete_outgoing_webhook",
"arguments": {
"webhook_id": "\u2026"
}
}
}

list_available_integrations

Browse the CATALOG of integration TYPES this org can connect (OpenAI, WhatsApp, databases, storage, voice, …), grouped by category. Each type lists the config fields a connect requires. Pure metadata — no secrets. Optional category (llm/email/database/messaging/storage/voice/…) or type narrows it. Requires integrations:read.

Required scope: integrations:read

Input

ParameterTypeRequiredDescription
categorystringe.g. llm, email, database, messaging, storage, voice.
typestringA single integration type slug (e.g. openai).

Example

{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "list_available_integrations",
"arguments": {}
}
}

list_incoming_webhooks

List the org's incoming webhooks (external systems POST to these to fire a workflow). Returns id + slug + live receiver URL + flags; never secrets. Pass used_by=true to include which workflows each is wired to. Requires webhooks:read.

Required scope: webhooks:read

Input

ParameterTypeRequiredDescription
used_bybooleanInclude the workflows each webhook is bound to.

Example

{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "list_incoming_webhooks",
"arguments": {}
}
}

list_integrations

List the org's CONNECTED integrations (id, type, name, default/active flags, category). Use the returned id to wire an integration into a workflow node (e.g. the org's OpenAI/LLM integration). Never returns credentials. Filters: type, active_only (default true). Requires integrations:read.

Required scope: integrations:read

Input

ParameterTypeRequiredDescription
typestringFilter by integration_type (e.g. openai, meta_whatsapp).
active_onlybooleanOnly active integrations (default true).

Example

{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "list_integrations",
"arguments": {}
}
}

list_outgoing_webhooks

List the org's outgoing webhooks / event subscriptions (Expedify POSTs to these external URLs on CRM events). No secrets. Filter: webhook_type. Requires webhooks:read.

Required scope: webhooks:read

Input

ParameterTypeRequiredDescription
webhook_typestringautomatic | manual.

Example

{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "list_outgoing_webhooks",
"arguments": {}
}
}

list_webhook_event_types

List the event types an outgoing webhook can subscribe to (grouped by category, e.g. contact.created, deal.stage_changed). Use these in events. Requires webhooks:read.

Required scope: webhooks:read

Input

No input parameters.

Example

{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "list_webhook_event_types",
"arguments": {}
}
}

regenerate_incoming_webhook_secret

Rotate an incoming webhook's secret. Returns the NEW secret once. Requires webhooks:write.

Required scope: webhooks:write

Input

ParameterTypeRequiredDescription
webhook_idstring

Example

{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "regenerate_incoming_webhook_secret",
"arguments": {
"webhook_id": "\u2026"
}
}
}

test_integration

Run a connectivity check for one integration using its OWN stored credentials (you never provide them). Returns {success, message}. Side-effecting: makes a live outbound call to the provider, so it requires integrations:write (not a read-only key).

Required scope: integrations:write

Input

ParameterTypeRequiredDescription
integration_idstring

Example

{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "test_integration",
"arguments": {
"integration_id": "\u2026"
}
}
}

test_outgoing_webhook

Send a TEST delivery to an outgoing webhook's URL — a real outbound POST (billing-gated). Optional test_data object as the payload. Returns {success, status_code, error}. Requires webhooks:write.

Required scope: webhooks:write

Input

ParameterTypeRequiredDescription
webhook_idstring
test_dataobjectOptional custom payload body.

Example

{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "test_outgoing_webhook",
"arguments": {
"webhook_id": "\u2026"
}
}
}