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
| Parameter | Type | Required | Description |
|---|---|---|---|
webhook_id | string | ✓ |
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
| Parameter | Type | Required | Description |
|---|---|---|---|
webhook_id | string | ✓ | |
status | string | received | processed | failed | ignored. | |
limit | integer |
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
| Parameter | Type | Required | Description |
|---|---|---|---|
integration_id | string | ✓ |
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
| Parameter | Type | Required | Description |
|---|---|---|---|
webhook_id | string | ✓ |
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
| Parameter | Type | Required | Description |
|---|---|---|---|
slug | string | ✓ | Unique URL-safe id (lowercase, hyphens). |
name | string | ||
description | string | ||
expected_schema | object | Optional JSON schema documenting the expected payload. | |
is_active | boolean |
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
| Parameter | Type | Required | Description |
|---|---|---|---|
name | string | ✓ | |
url | string | ✓ | Public https URL to POST to. |
events | array<string> | ✓ | Event names to subscribe to. |
webhook_type | string | automatic (default) | manual. | |
is_active | boolean | ||
retry_count | integer | ||
timeout_seconds | integer |
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
| Parameter | Type | Required | Description |
|---|---|---|---|
webhook_id | string | ✓ | |
name | string | ||
description | string | ||
expected_schema | object | ||
is_active | boolean |
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
| Parameter | Type | Required | Description |
|---|---|---|---|
webhook_id | string | ✓ | |
name | string | ||
url | string | ||
events | array<string> | ||
webhook_type | string | ||
is_active | boolean | ||
retry_count | integer | ||
timeout_seconds | integer |
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
| Parameter | Type | Required | Description |
|---|---|---|---|
webhook_id | string | ✓ | |
force | boolean | Delete even if workflows depend on it. | |
permanent | boolean | Hard 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
| Parameter | Type | Required | Description |
|---|---|---|---|
webhook_id | string | ✓ |
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
| Parameter | Type | Required | Description |
|---|---|---|---|
category | string | e.g. llm, email, database, messaging, storage, voice. | |
type | string | A 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
| Parameter | Type | Required | Description |
|---|---|---|---|
used_by | boolean | Include 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
| Parameter | Type | Required | Description |
|---|---|---|---|
type | string | Filter by integration_type (e.g. openai, meta_whatsapp). | |
active_only | boolean | Only 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
| Parameter | Type | Required | Description |
|---|---|---|---|
webhook_type | string | automatic | 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
| Parameter | Type | Required | Description |
|---|---|---|---|
webhook_id | string | ✓ |
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
| Parameter | Type | Required | Description |
|---|---|---|---|
integration_id | string | ✓ |
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
| Parameter | Type | Required | Description |
|---|---|---|---|
webhook_id | string | ✓ | |
test_data | object | Optional custom payload body. |
Example
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "test_outgoing_webhook",
"arguments": {
"webhook_id": "\u2026"
}
}
}