Skip to main content
Glama

Update a prospecting pipeline

update_pipeline
Destructive

Pause or resume paid research and independently control email/webhook delivery to configured external destinations, or create a new immutable policy revision. Pausing can cancel pending research and queued deliveries. Preserve the full saved structured requirements, exclusions and contact routes when changing a policy; objective is context and is not parsed into criteria. Read back the exact saved revision for user review. Changing the channel, criteria or increasing limits requires approval of the exact new revision. A second sample is optional.

Tool call template

Replace each placeholder with a value matching the input schema. Only required parameters are included; add optional parameters as needed.

{
  "id": 1,
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "arguments": {
      "pipelineId": "<pipelineId>"
    },
    "name": "update_pipeline"
  }
}

Input Schema

NameRequiredDescriptionDefault
policyNoThe exact policy to review. objective is purpose/context only and is not parsed into targeting requirements. Put every required or preferred fact in icpContext.constraints, each explicit exclusion in constraints with operator excludes or icpContext.exclusions, and contact requirements in requiredContactRoutes. Unknown required facts stay in review. Recurring LinkedIn research requires reviewed linkedinResearch completed_research terms and an explicit maxCreditsPerRun within the monthly cap. Completed research can be charged with zero qualified leads, without another discovery fee per lead.
controlsNo
pipelineIdYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changed
    • changedInput schema / properties / policy / properties / sources / items / anyOf
      Previous value: -[
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "category": {
      -        "maxLength": 160,
      -        "minLength": 1,
      -        "type": "string"
      -      },
      -      "city": {
      -        "maxLength": 120,
      -        "minLength": 1,
      -        "type": "string"
      -      },
      -      "country": {
      -        "pattern": "^[A-Z]{2}$",
      -        "type": "string"
      -      },
      -      "keyword": {
      -        "maxLength": 160,
      -        "minLength": 1,
      -        "type": "string"
      -      },
      -      "maxRating": {
      -        "maximum": 5,
      -        "minimum": 0,
      -        "type": "number"
      -      },
      -      "minRating": {
      -        "maximum": 5,
      -        "minimum": 0,
      -        "type": "number"
      -      },
      -      "noEmail": {
      -        "type": "boolean"
      -      },
      -      "noSocials": {
      -        "type": "boolean"
      -      },
      -      "noWebsite": {
      -        "type": "boolean"
      -      },
      -      "source": {
      -        "const": "google_maps",
      -        "type": "string"
      -      },
      -      "state": {
      -        "maxLength": 120,
      -        "minLength": 1,
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "source",
      -      "category",
      -      "country"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "audience": {
      -        "additionalProperties": false,
      -        "properties": {
      -          "buyer": {
      -            "maxLength": 180,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "employerFitCriteria": {
      -            "items": {
      -              "maxLength": 180,
      -              "minLength": 1,
      -              "type": "string"
      -            },
      -            "maxItems": 8,
      -            "type": "array"
      -          },
      -          "fitRationale": {
      -            "maxLength": 500,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "id": {
      -            "maxLength": 60,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "label": {
      -            "maxLength": 120,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "targetRoles": {
      -            "items": {
      -              "maxLength": 160,
      -              "minLength": 1,
      -              "type": "string"
      -            },
      -            "maxItems": 20,
      -            "type": "array"
      -          }
      -        },
      -        "required": [
      -          "id",
      -          "label",
      -          "buyer",
      -          "fitRationale",
      -          "targetRoles",
      -          "employerFitCriteria"
      -        ],
      -        "type": "object"
      -      },
      -      "companyCountry": {
      -        "items": {
      -          "pattern": "^[A-Z]{2}$",
      -          "type": "string"
      -        },
      -        "maxItems": 12,
      -        "type": "array"
      -      },
      -      "companyDomain": {
      -        "items": {
      -          "maxLength": 180,
      -          "minLength": 1,
      -          "type": "string"
      -        },
      -        "maxItems": 20,
      -        "type": "array"
      -      },
      -      "companyEmployeeSize": {
      -        "items": {
      -          "maxLength": 80,
      -          "minLength": 1,
      -          "type": "string"
      -        },
      -        "maxItems": 12,
      -        "type": "array"
      -      },
      -      "country": {
      -        "pattern": "^[A-Z]{2}$",
      -        "type": "string"
      -      },
      -      "currentFunctionCategory": {
      -        "const": "Operations",
      -        "type": "string"
      -      },
      -      "discoveryProfile": {
      -        "enum": [
      -          "basic-v3",
      -          "basic-v4"
      -        ],
      -        "type": "string"
      -      },
      -      "functional": {
      -        "items": {
      -          "maxLength": 80,
      -          "minLength": 1,
      -          "type": "string"
      -        },
      -        "maxItems": 12,
      -        "type": "array"
      -      },
      -      "industry": {
      -        "items": {
      -          "maxLength": 120,
      -          "minLength": 1,
      -          "type": "string"
      -        },
      -        "maxItems": 1,
      -        "type": "array"
      -      },
      -      "industryKeywords": {
      -        "items": {
      -          "maxLength": 120,
      -          "minLength": 1,
      -          "type": "string"
      -        },
      -        "maxItems": 20,
      -        "type": "array"
      -      },
      -      "personState": {
      -        "items": {
      -          "maxLength": 120,
      -          "minLength": 1,
      -          "type": "string"
      -        },
      -        "maxItems": 12,
      -        "type": "array"
      -      },
      -      "personTitle": {
      -        "items": {
      -          "maxLength": 160,
      -          "minLength": 1,
      -          "type": "string"
      -        },
      -        "maxItems": 20,
      -        "type": "array"
      -      },
      -      "seniority": {
      -        "items": {
      -          "maxLength": 80,
      -          "minLength": 1,
      -          "type": "string"
      -        },
      -        "maxItems": 12,
      -        "type": "array"
      -      },
      -      "source": {
      -        "const": "linkedin",
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "source",
      -      "country",
      -      "personTitle"
      -    ],
      -    "type": "object"
      -  }
      -]New value: +[
      +  {
      +    "additionalProperties": false,
      +    "properties": {
      +      "category": {
      +        "maxLength": 160,
      +        "minLength": 1,
      +        "type": "string"
      +      },
      +      "city": {
      +        "maxLength": 120,
      +        "minLength": 1,
      +        "type": "string"
      +      },
      +      "country": {
      +        "pattern": "^[A-Z]{2}$",
      +        "type": "string"
      +      },
      +      "keyword": {
      +        "maxLength": 160,
      +        "minLength": 1,
      +        "type": "string"
      +      },
      +      "maxRating": {
      +        "maximum": 5,
      +        "minimum": 0,
      +        "type": "number"
      +      },
      +      "minRating": {
      +        "maximum": 5,
      +        "minimum": 0,
      +        "type": "number"
      +      },
      +      "noEmail": {
      +        "type": "boolean"
      +      },
      +      "noSocials": {
      +        "type": "boolean"
      +      },
      +      "noWebsite": {
      +        "type": "boolean"
      +      },
      +      "source": {
      +        "const": "google_maps",
      +        "type": "string"
      +      },
      +      "state": {
      +        "maxLength": 120,
      +        "minLength": 1,
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "source",
      +      "category",
      +      "country"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "additionalProperties": false,
      +    "properties": {
      +      "audience": {
      +        "additionalProperties": false,
      +        "properties": {
      +          "buyer": {
      +            "maxLength": 180,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "employerFitCriteria": {
      +            "items": {
      +              "maxLength": 180,
      +              "minLength": 1,
      +              "type": "string"
      +            },
      +            "maxItems": 8,
      +            "type": "array"
      +          },
      +          "fitRationale": {
      +            "maxLength": 500,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "id": {
      +            "maxLength": 60,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "label": {
      +            "maxLength": 120,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "targetRoles": {
      +            "items": {
      +              "maxLength": 160,
      +              "minLength": 1,
      +              "type": "string"
      +            },
      +            "maxItems": 20,
      +            "type": "array"
      +          }
      +        },
      +        "required": [
      +          "id",
      +          "label",
      +          "buyer",
      +          "fitRationale",
      +          "targetRoles",
      +          "employerFitCriteria"
      +        ],
      +        "type": "object"
      +      },
      +      "companyCountry": {
      +        "items": {
      +          "pattern": "^[A-Z]{2}$",
      +          "type": "string"
      +        },
      +        "maxItems": 12,
      +        "type": "array"
      +      },
      +      "companyDomain": {
      +        "items": {
      +          "maxLength": 180,
      +          "minLength": 1,
      +          "type": "string"
      +        },
      +        "maxItems": 20,
      +        "type": "array"
      +      },
      +      "companyEmployeeSize": {
      +        "items": {
      +          "maxLength": 80,
      +          "minLength": 1,
      +          "type": "string"
      +        },
      +        "maxItems": 12,
      +        "type": "array"
      +      },
      +      "country": {
      +        "pattern": "^[A-Z]{2}$",
      +        "type": "string"
      +      },
      +      "currentFunctionCategory": {
      +        "const": "Operations",
      +        "type": "string"
      +      },
      +      "discoveryProfile": {
      +        "enum": [
      +          "basic-v3",
      +          "basic-v4",
      +          "professional-v1"
      +        ],
      +        "type": "string"
      +      },
      +      "functional": {
      +        "items": {
      +          "maxLength": 80,
      +          "minLength": 1,
      +          "type": "string"
      +        },
      +        "maxItems": 12,
      +        "type": "array"
      +      },
      +      "includeCurrentEmploymentDescription": {
      +        "type": "boolean"
      +      },
      +      "industry": {
      +        "items": {
      +          "maxLength": 120,
      +          "minLength": 1,
      +          "type": "string"
      +        },
      +        "maxItems": 1,
      +        "type": "array"
      +      },
      +      "industryKeywords": {
      +        "items": {
      +          "maxLength": 120,
      +          "minLength": 1,
      +          "type": "string"
      +        },
      +        "maxItems": 20,
      +        "type": "array"
      +      },
      +      "personState": {
      +        "items": {
      +          "maxLength": 120,
      +          "minLength": 1,
      +          "type": "string"
      +        },
      +        "maxItems": 12,
      +        "type": "array"
      +      },
      +      "personTitle": {
      +        "items": {
      +          "maxLength": 160,
      +          "minLength": 1,
      +          "type": "string"
      +        },
      +        "maxItems": 20,
      +        "type": "array"
      +      },
      +      "seniority": {
      +        "items": {
      +          "maxLength": 80,
      +          "minLength": 1,
      +          "type": "string"
      +        },
      +        "maxItems": 12,
      +        "type": "array"
      +      },
      +      "source": {
      +        "const": "linkedin",
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "source",
      +      "country",
      +      "personTitle"
      +    ],
      +    "type": "object"
      +  }
      +]
  2. First observed

TDQS

A3.9/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare destructiveHint=true and openWorldHint=true, and the description goes well beyond them by stating that pausing can cancel pending research and queued deliveries, that policy revisions are immutable, and that certain changes require explicit approval of the exact new revision. The credit-charging caveat ('charged with zero qualified leads, without another discovery fee per lead') adds further non-obvious cost behavior. Nothing here contradicts the annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Purpose is front-loaded and most sentences carry substantive rules, but the prose is packed into long compound sentences that are hard to scan. The trailing sentence 'A second sample is optional' is unexplained in the context of updating a pipeline and reads as leftover text, which undermines trust in the rest.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a destructive, open-world mutation tool with a large nested schema and no output schema, the description covers the critical gaps: cancellation side effects, immutability, approval gating, and reading back the saved revision. Remaining holes are the unexplained 'controls' object and the absence of any statement about what a successful update returns beyond the saved revision.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With only 33% schema description coverage on a deeply nested schema, the description compensates well for the highest-risk semantics: objective is context only and is not parsed into criteria, required/preferred facts belong in icpContext.constraints, exclusions in constraints or icpContext.exclusions, contact needs in requiredContactRoutes, and LinkedIn research needs an explicit maxCreditsPerRun within the monthly cap. The free-form 'controls' object is only hinted at via 'independently control email/webhook delivery', leaving its shape unexplained.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names three concrete operations on a specific resource: pause/resume paid research, control email/webhook delivery, and create an immutable policy revision. An agent can tell this is a mutation tool for pipeline configuration and delivery settings. It does not, however, differentiate itself from the sibling activate_pipeline, which plausibly overlaps with the pause/resume capability.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is real conditional guidance: changing the channel, criteria, or increasing limits requires approval of the exact new revision, and the saved revision should be read back for user review. But there is no explicit statement of when to call this versus activate_pipeline or prepare_pipeline, and no exclusion of cases where this tool is wrong.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources