Konnectify MCP Server - Claude
Konnectify MCP Server -Tools Reference
Complete reference for all tools exposed by the Konnectify MCP server. Use these tools from Claude or any MCP-compatible AI client to build automations, create AI agents, manage workflows, and monitor executions through natural language.
How to Connect Konnectify to Claude
Follow these three steps to add Konnectify as a custom MCP connector in Claude.
Settings in the left-hand sidebar → MCP Global → click Copy MCP Server URL.Customize (left sidebar) → Choose Connectors → click + next to the search bar → Add Custom Connector → set Name to Konnectify → paste the copied URL → save.App Discovery
Discover available apps, triggers, actions, and verify connection credentials before building any workflow.
appSlug in all subsequent tool calls.| Name | Type | Required | Description |
|---|---|---|---|
| category | string | optional | Filter by category, e.g. CRM, Email, Storage. |
| search | string | optional | Search by app name. Single: "freshdesk". Multiple: "freshdesk|hubspot|slack". |
appSlug or plain name — the server resolves it automatically. Returns trigger objects each with: id, name, description, has_config_fields, has_custom_fields, batch. Use the id as eventSlug and pass the entire object as eventData to add_trigger_node.| Name | Type | Required | Description |
|---|---|---|---|
| appSlug | string | required | App identifier from list_available_apps, or a plain name like "gmail". |
appSlug or plain name. Returns action objects each with id, name, description, has_config_fields, has_custom_fields, batch. Use the id as actionSlug and pass the entire object as eventData to add_action_node.| Name | Type | Required | Description |
|---|---|---|---|
| appSlug | string | required | App identifier from list_available_apps, or a plain name like "slack". |
list_available_apps first to get the correct versioned appSlug (format: "{appName}-{version}", e.g. "gmail-1.0.0"). If status: "NO_CONNECTION" → show the create_connection_url to the user and stop. If multiple connections → list them and ask the user to choose. Never auto-select. If exactly one connection → use it automatically."gmail" — always use the versioned appSlug from list_available_apps.| Name | Type | Required | Description |
|---|---|---|---|
| appId | string | required | App slug in "{appName}-{version}" format, e.g. "gmail-1.0.0". |
Config & Schema
Fetch field definitions, dependent pick-list options, trigger samples, and output schemas before building node mappings.
control_type, pick-list options, and dependentTo relationships. For fields with dependentTo, call get_dependent_field_options after the parent value is chosen. On HTTP 500: ask the user to provide values manually and continue.| Name | Type | Required | Description |
|---|---|---|---|
| appSlug | string | required | App slug. |
| eventType | string | required | "trigger" or "action". |
| eventSlug | string | required | Trigger or action slug. |
| connectionId | string | optional | Recommended for dynamic pick lists. |
{type, schema} format) in eventData.| Name | Type | Required | Description |
|---|---|---|---|
| appSlug | string | required | App slug. |
| eventType | string | required | "trigger" or "action". |
| eventSlug | string | required | Trigger or action slug. |
| eventData | object | required | Already-chosen config values as plain values, e.g. {"spreadsheet": "sheet_id"}. |
| function | string | required | Function name from the field descriptor, e.g. "getWorksheets". |
| connectionId | string | optional | Connection ID. |
{{nodeId:fieldKey}} references in downstream action mappings.| Name | Type | Required | Description |
|---|---|---|---|
| appSlug | string | required | App slug. |
| eventSlug | string | required | Trigger event slug. |
| connectionId | string | optional | Connection ID. |
| configFields | object | optional | Static config values in {fieldName: {type:"string", schema:"value"}} format. |
fieldMapping for the next node. Returned keys become {{nodeId:fieldKey}} references in downstream nodes.| Name | Type | Required | Description |
|---|---|---|---|
| appSlug | string | required | App slug. |
| eventType | string | required | "trigger" or "action". |
| eventSlug | string | required | Trigger or action slug. |
| connectionId | string | optional | Connection ID. |
| configFields | object | optional | Resolved config values. Needed for dynamic schema when has_config_fields: true. |
fields[] each with name, label, type, and optional. Collect all optional: false fields as required. Pass plain configFields (not {type,schema} format) when has_config_fields: true.| Name | Type | Required | Description |
|---|---|---|---|
| appSlug | string | required | App slug, e.g. "freshdesk-1.0.0". |
| actionSlug | string | required | Action slug, e.g. "create_ticket". |
| connectionId | string | optional | Connection ID from list_connections_for_app. |
| configFields | object | optional | Plain config values. Only needed when has_config_fields: true. |
Konnector Workflows
Create and build rule-based automation workflows — fixed-sequence automations with no LLM decision-making. For AI agents, see the Agents section.
konnectorId used in all subsequent node calls. For NEW workflows only — never recreate to fix an existing one. Always verify all app connections before calling.create_agent instead. Complete all connection checks before calling.| Name | Type | Required | Description |
|---|---|---|---|
| name | string | required | Konnector name. |
setup_catch_hook for named-app triggers. Required sequence: (1) list_connections_for_app → (2) if has_config_fields: true: get_config_fields → resolve all values → (3) get_trigger_sample.| Name | Type | Required | Description |
|---|---|---|---|
| konnectorId | string | required | From create_konnector_draft. |
| appSlug | string | required | App slug. |
| eventSlug | string | required | Trigger event slug. |
| eventData | object | required | Full trigger object from list_triggers_for_app — copy as-is. |
| connectionId | string | optional | User's connection ID for this app. |
| configFields | object | optional | Static config values in {fieldName: {type:"string", schema:"value"}} format. |
| appName | string | optional | Human-readable app name, e.g. "Freshdesk". Never the appSlug. |
add_trigger_node for schedule-based workflows. Types: hourly (+ offset), daily (+ hourOfDay, minuteOfHour), weekly (+ dayOfWeek), monthly (+ dayOfMonth), custom, advanced (cron expression).| Name | Type | Required | Description |
|---|---|---|---|
| konnectorId | string | required | From create_konnector_draft. |
| scheduleType | string | required | hourly | daily | weekly | monthly | custom | advanced. |
| timezone | string | required | IANA timezone, e.g. "Asia/Kolkata". |
| offset / hourOfDay / dayOfWeek / cronExpression… | varies | conditional | Type-specific fields — see description above. |
insertAfterPositionId to insert mid-workflow — all downstream nodes shift automatically. Omit to append at the end. Required sequence: (1) list_connections_for_app → (2) if has_config_fields: true: get_config_fields → (3) get_action_input_fields → (4) collect required fields → (5) get_output_schema on upstream nodes for field references.| Name | Type | Required | Description |
|---|---|---|---|
| konnectorId | string | required | Konnector ID. |
| appSlug | string | required | App slug. |
| actionSlug | string | required | Action slug. |
| fieldMapping | object | required | Maps input field names to {type:"string", schema:"value or {{nodeId:key}}"}. |
| eventData | object | required | Full action object from list_actions_for_app — copy as-is. |
| requiredFields | array | required | Names of fields where optional: false from get_action_input_fields. |
| connectionId | string | optional | Connection ID. |
| configFields | object | conditional | Required when has_config_fields: true. |
| appName | string | optional | Human-readable app name. |
| insertAfterPositionId | string | optional | Insert after this node's positionId. Omit to append. |
configurationStatus to CONFIGURED. Returns the konnector ID and a UI URL — always share this URL with the user. Activation must be done by the user from the UI. Auto-finalize when confidence ≥ 90%. Scoring: −15 per unmappable required field, −20 per ambiguous branch condition, −10 per missing step, −5 per unspecified assumption.| Name | Type | Required | Description |
|---|---|---|---|
| konnectorId | string | required | Konnector ID. |
Konnector CRUD
| Name | Type | Required | Description |
|---|---|---|---|
| status | string | optional | "active" or "inactive". |
| search | string | optional | Search by name. |
| limit | number | optional | Page size (default 20). |
| page | number | optional | Page number (default 1). |
| Name | Type | Required | Description |
|---|---|---|---|
| id | string | required | Konnector ID. |
| Name | Type | Required | Description |
|---|---|---|---|
| id | string | required | Konnector ID. |
| name | string | required | New name. |
| Name | Type | Required | Description |
|---|---|---|---|
| id | string | required | Konnector ID. |
Execution & Monitoring
| Name | Type | Required | Description |
|---|---|---|---|
| id | string | required | Konnector ID. |
| testPayload | object | optional | Optional test input payload. |
| Name | Type | Required | Description |
|---|---|---|---|
| konnectorId | string | required | Konnector ID. |
| limit | number | optional | Max results (default 10). |
| status | string | optional | "success" | "failed" | "running". |
get_execution_history to find the failed executionId, then call this to pinpoint which node failed and why.| Name | Type | Required | Description |
|---|---|---|---|
| executionId | string | required | Execution ID from get_execution_history. |
AI Agents
Tools for building AI agents — workflows where an LLM reads trigger data and decides which actions to call. Use these only when the user explicitly says "agent".
agentId by name. No parameters required.create_agent → list_model_providers → configure_agent_model → set_agent_trigger → add_agent_tool (repeat) → finalize_agent.| Name | Type | Required | Description |
|---|---|---|---|
| name | string | required | Agent name. |
| instructions | string | optional | System prompt: role, what to do when triggered, which tools to use, and constraints. |
| Name | Type | Required | Description |
|---|---|---|---|
| id | string | required | Agent ID. |
| name | string | optional | New name. |
| instructions | string | optional | Updated system prompt. |
gpt-4o-mini as a cost-effective default. After model is chosen, call list_connections_for_app(modelAppId) to get the connectionId. No parameters required.| Name | Type | Required | Description |
|---|---|---|---|
| agentId | string | required | Agent ID. |
| modelId | string | required | Exact model ID from list_model_providers, e.g. "gpt-4o-mini". |
| modelAppId | string | required | Provider slug, e.g. "chatgpt-1.0.0". |
| connectionId | string | required | Connection ID from list_connections_for_app. |
| temperature | number | optional | Sampling temperature (0–2). |
| maxTokens | number | optional | Max output tokens. |
catch_hook (POST webhook), manual (API call), app_event (named-app trigger), schedule. Calling this a second time replaces the existing trigger. For catch_hook, returns webhookUrl — show it to the user.| Name | Type | Required | Description |
|---|---|---|---|
| agentId | string | required | Agent ID. |
| triggerType | string | required | catch_hook | manual | app_event | schedule. |
| appSlug, eventSlug, connectionId… | varies | conditional | Required for app_event. Schedule-specific fields for schedule type. |
eventDescription is the most critical field — the LLM reads only this to decide when and how to call the tool. Be specific about what data to pass. All tools must be added before finalize_agent.| Name | Type | Required | Description |
|---|---|---|---|
| agentId | string | required | Agent ID. |
| appSlug | string | required | App slug. |
| actionSlug | string | required | Action slug. |
| connectionId | string | required | Connection ID. |
| eventName | string | required | Human-readable action name from list_actions_for_app. |
| eventDescription | string | required | Critical — tells the LLM when/how to call this tool. Be specific about expected inputs. |
| appName | string | required | Human-readable app name. |
| configFields | object | conditional | Required when has_config_fields: true. |
| staticFields | object | optional | Fixed-value fields the agent should NOT decide at runtime. Format: {"fieldName": "value"}. |
| Name | Type | Required | Description |
|---|---|---|---|
| agentId | string | required | Agent ID. |
| toolId | string | required | Tool ID from add_agent_tool or list_agent_tools. |
| Name | Type | Required | Description |
|---|---|---|---|
| agentId | string | required | Agent ID. |
finalize_agent to show the user a complete summary. Also useful for debugging when the agent is not behaving as expected.| Name | Type | Required | Description |
|---|---|---|---|
| agentId | string | required | Agent ID. |
| Name | Type | Required | Description |
|---|---|---|---|
| agentId | string | required | Agent ID. |
Flow Control
Add conditional filters, delays, if/else branching paths, and loops to konnector workflows.
add_path_node for if/else branching. Conditions need field, operator, and value (except IS_TRUE, IS_FALSE, EXISTS, DOES_NOT_EXISTS).| Name | Type | Required | Description |
|---|---|---|---|
| konnectorId | string | required | Konnector ID. |
| filterGroups | array | required | Array of groups, each with matchType ("all"|"any") and conditions[]. |
| insertAfterPositionId | string | optional | Insert after this node. Omit to append. |
| groupOperators | array | optional | How groups connect, e.g. ["groupId1:AND:groupId2"]. |
delay-for: relative duration. delay-until: wait until a datetime field.| Name | Type | Required | Description |
|---|---|---|---|
| konnectorId | string | required | Konnector ID. |
| delayType | string | required | "delay-for" or "delay-until". |
| duration | string | required | Numeric string or {{ref}} for delay-for; ISO datetime or {{ref}} for delay-until. |
| unit | string | conditional | delay-for only: MINUTES | HOURS | DAYS | WEEKS. |
add_action_to_path_branch for each branch. Only define branches you will immediately populate — every branch must have at least one action.| Name | Type | Required | Description |
|---|---|---|---|
| konnectorId | string | required | Konnector ID. |
| branches | array | required | Branch definitions, each with name and filterGroups. |
pathPositionId + branchIndex. Mode B (subsequent actions): use afterPositionId with the last action's positionId in that branch.| Name | Type | Required | Description |
|---|---|---|---|
| konnectorId | string | required | Konnector ID. |
| pathPositionId | string | Mode A | positionId of the path container. |
| branchIndex | number | Mode A | 0-based branch index. |
| afterPositionId | string | Mode B | positionId of the last action in the branch. |
| appSlug, actionSlug, fieldMapping, eventData, requiredFields | varies | required | Same as add_action_node. |
add_action_to_path_branch (Mode A).| Name | Type | Required | Description |
|---|---|---|---|
| konnectorId | string | required | Konnector ID. |
| afterPositionId | string | required | positionId of the last action inside the outer branch. |
| branches | array | required | Nested branch definitions (min 2), each with name and filterGroups. |
iterationValue, currentIndex, totalItems) are only accessible inside the loop. To pass values out, define variables and update them with add_update_variable_node. Reference outside as {{repeaterPositionId:variableName}}.| Name | Type | Required | Description |
|---|---|---|---|
| konnectorId | string | required | Konnector ID. |
| fieldToRepeat | string | required | {{nodeId:fieldKey}} reference to the array field to iterate. |
| fieldLabel | string | optional | Human-readable label. |
| fieldOf | string | optional | Element type, e.g. "string". |
| variables | array | optional | Output variables: [{key, value (initial)}]. Required if downstream nodes need loop results. |
| numberOfIterations | number | optional | Max iterations cap (default 500). |
{{repeaterPositionId:iterationValue}}, index as {{repeaterPositionId:currentIndex}}. These references are NOT valid outside the loop.| Name | Type | Required | Description |
|---|---|---|---|
| konnectorId | string | required | Konnector ID. |
| repeaterPositionId | string | required | positionId of the repeater node. |
| appSlug, actionSlug, fieldMapping, eventData, requiredFields | varies | required | Same as add_action_node. |
| Name | Type | Required | Description |
|---|---|---|---|
| konnectorId | string | required | Konnector ID. |
| repeaterPositionId | string | required | positionId of the repeater node. |
| variableUpdates | object | required | Map of variable name → new value, e.g. {"myVar": "{{3:result}}"}. |
Code Blocks
add_code_block_node. Plain JS only — no external packages. Input keys become input.key variables. Result must be assigned to Output = { ... }.| Name | Type | Required | Description |
|---|---|---|---|
| code | string | required | JavaScript code. Must assign to Output = {...}. |
| input | object | required | Sample input values (actual values, not {{}} refs). |
test_code_block first to verify and get the outputSchema.| Name | Type | Required | Description |
|---|---|---|---|
| konnectorId | string | required | Konnector ID. |
| code | string | required | JavaScript code (same as tested). |
| fieldMapping | object | required | Input variable mapping — keys become input.key in code. |
| outputSchema | array | required | Output schema array returned by test_code_block. |
| insertAfterPositionId | string | optional | Insert after this node. Omit to append. |
| skipOnFailure | boolean | optional | Continue workflow even if code throws (default false). |
Webhooks
For raw HTTP webhook triggers with no named source app. For named-app triggers, use create_konnector_draft + add_trigger_node instead.
webhookUrl to user → ask them to send a test POST → (2) STOP → call poll_hook_sample_data until received: true → (3) only then add action nodes.create_konnector_draft + add_trigger_node.| Name | Type | Required | Description |
|---|---|---|---|
| name | string | required | Konnector name. |
setup_catch_hook but the caller's HTTP connection stays open until the workflow completes. Same polling requirement. After all action nodes, call add_response_node. Delay nodes cannot be used inside sync hook workflows.| Name | Type | Required | Description |
|---|---|---|---|
| name | string | required | Konnector name. |
received: false → tell user you're still waiting and call again. If received: true → show sampleData to user and use outputSchema keys as {{1:fieldKey}} references. Never proceed to add_action_node while received is false.| Name | Type | Required | Description |
|---|---|---|---|
| konnectorId | string | required | Konnector ID from setup_catch_hook or setup_sync_hook. |
setup_sync_hook) konnectors.| Name | Type | Required | Description |
|---|---|---|---|
| konnectorId | string | required | Konnector ID from setup_sync_hook. |
| fieldMapping | object | required | Fields to return. Each value: {type:"string", schema:"static or {{nodeId:key}}"}. |
Node Editing
Edit existing konnectors — modify mappings, insert or remove nodes, update conditions. Always call get_konnector_nodes first to find the correct positionId.
positionId, type, appId, eventId, hasConfigured, fieldMapping, configFields, and filterData for each node. Never guess positionIds — always call this first.| Name | Type | Required | Description |
|---|---|---|---|
| konnectorId | string | required | Konnector ID. |
| Name | Type | Required | Description |
|---|---|---|---|
| konnectorId | string | required | Konnector ID. |
| positionId | string | required | Node positionId from get_konnector_nodes. |
| fieldMapping | object | required | New field mappings. |
| configFields | object | optional | Updated config values in {fieldName: {type:"string", schema:"value"}} format. |
| connectionId | string | optional | New connection ID (only if changing the connection). |
| Name | Type | Required | Description |
|---|---|---|---|
| konnectorId | string | required | Konnector ID. |
| positionId | string | required | positionId of the pathrule node (type must be "pathrule"). |
| filterGroups | array | required | New filter group conditions. |
| Name | Type | Required | Description |
|---|---|---|---|
| konnectorId | string | required | Konnector ID. |
| positionId | string | required | positionId of the node to remove (from get_konnector_nodes). |
"pathrule"), use update_path_branch_conditions instead.| Name | Type | Required | Description |
|---|---|---|---|
| konnectorId | string | required | Konnector ID. |
| positionId | string | required | positionId of the filter node (type must be "filter"). |
| filterGroups | array | required | New filter group conditions. |
test_code_block first to validate.| Name | Type | Required | Description |
|---|---|---|---|
| konnectorId | string | required | Konnector ID. |
| positionId | string | required | positionId of the code block node. |
| code | string | required | New JavaScript code. Must assign to Output. |
| fieldMapping | object | optional | Updated input field mapping. |
| outputSchema | array | optional | Updated output schema fields. |
| Name | Type | Required | Description |
|---|---|---|---|
| konnectorId | string | required | Konnector ID. |
| positionId | string | required | positionId of the delay node. |
| delayType | string | required | "delay-for" or "delay-until". |
| duration | string | conditional | delay-for only — numeric string. |
| unit | string | conditional | delay-for only: SECONDS | MINUTES | HOURS | DAYS. |
| untilField | string | conditional | delay-until only — {{nodeId:fieldKey}} datetime reference. |
| Name | Type | Required | Description |
|---|---|---|---|
| konnectorId | string | required | Konnector ID. |
| positionId | string | required | positionId of the repeater node. |
| fieldToRepeat | string | optional | New {{nodeId:fieldKey}} reference to iterate. |
| fieldLabel | string | optional | Human-readable label. |
| numberOfIterations | number | optional | New max iterations cap. |
| Name | Type | Required | Description |
|---|---|---|---|
| konnectorId | string | required | Konnector ID. |
| positionId | string | required | positionId of the update_variable node. |
| variableUpdates | object | required | New assignments: {"varName": "value or {{ref}}"}. |
connectivityIssues, or when get_konnector_nodes shows a disconnected node. Sets the outgoing edge of sourcePositionId to point to targetPositionId.| Name | Type | Required | Description |
|---|---|---|---|
| konnectorId | string | required | Konnector ID. |
| sourcePositionId | string | required | positionId of the upstream node. |
| targetPositionId | string | required | positionId of the downstream node it should connect to. |
Was this article helpful?
That’s Great!
Thank you for your feedback
Sorry! We couldn't be helpful
Thank you for your feedback
Feedback sent
We appreciate your effort and will try to fix the article