Propose or save the Funnel

Change the Funnel. Only the fields you send change; lists replace the stored list. Never invent a link. From an agent this becomes a proposal a person accepts.

funnel_upsertOtherRead and write

Behavior

Read-only hint
Not declared
Destructive hint
Not declared
Idempotent hint
Not declared
Open-world hint
Not declared

Parameters

NameTypeRequirementDescription
workspaceIdstringRequiredThe workspace id or slug (from workspace_list).
destinationsarrayOptionalNo additional description.
routingarrayOptionalWhich need leads where.
noCtaWhenarrayOptionalWhen no call to action is approved.
notesstringOptionalNuance no list holds (Markdown). Replaces the stored notes.
reasonstringRequiredWhy this change helps, in one or two sentences. Shown to the person who accepts it.

Input JSON Schema

Generated from the registered input schema
{
  "type": "object",
  "properties": {
    "workspaceId": {
      "type": "string",
      "minLength": 1,
      "description": "The workspace id or slug (from workspace_list)."
    },
    "destinations": {
      "maxItems": 12,
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "minLength": 1,
            "maxLength": 120
          },
          "url": {
            "type": "string",
            "maxLength": 1000
          },
          "when": {
            "type": "string",
            "maxLength": 400
          }
        },
        "required": [
          "name"
        ]
      }
    },
    "routing": {
      "description": "Which need leads where.",
      "maxItems": 16,
      "type": "array",
      "items": {
        "type": "string",
        "minLength": 1,
        "maxLength": 400
      }
    },
    "noCtaWhen": {
      "description": "When no call to action is approved.",
      "maxItems": 12,
      "type": "array",
      "items": {
        "type": "string",
        "minLength": 1,
        "maxLength": 400
      }
    },
    "notes": {
      "description": "Nuance no list holds (Markdown). Replaces the stored notes.",
      "type": "string",
      "maxLength": 60000
    },
    "reason": {
      "type": "string",
      "minLength": 1,
      "maxLength": 1000,
      "description": "Why this change helps, in one or two sentences. Shown to the person who accepts it."
    }
  },
  "required": [
    "workspaceId",
    "reason"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}

Call shape

Use an MCP client rather than sending this JSON directly. The client handles protocol negotiation, sessions, and authentication.

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