Skip to main content
Glama

Prepare a prospecting pipeline

prepare_pipeline
Idempotent

Create an account-owned draft for recurring Maps or LinkedIn discovery (one channel per pipeline) without running research, reserving credits or enabling delivery. objective is context only: explicitly encode requirements/preferences in icpContext.constraints, exclusions in constraints or icpContext.exclusions, and contact requirements in requiredContactRoutes. Read back and review the exact saved criteria, source configuration, schedule and limits with the user before activation. 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": {
      "policy": "<policy>",
      "requestId": "<requestId>"
    },
    "name": "prepare_pipeline"
  }
}

Input Schema

NameRequiredDescriptionDefault
policyYesThe 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.
requestIdYes

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

A4.3/5.0
Behavior4/5

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

Annotations already say readOnlyHint=false, idempotentHint=true and destructiveHint=false; the description adds real context beyond that: this writes a draft only, reserves no credits, runs no research and enables no delivery. That is exactly the side-effect profile an agent needs. Minor gap: it does not say what is returned (a draft/pipeline id) or that the draft is inert until activation.

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

Conciseness4/5

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

Four sentences, front-loaded with the core action and side-effect scope before the field-placement guidance. Dense but every sentence carries information; the trailing 'A second sample is optional' is slightly orphaned and could be folded into the review step.

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 tool with a very deep nested schema, no output schema and only 50% parameter description coverage, the definition covers intent, the draft-only guarantee, where to encode targeting facts, and the credit-billing caveat. What remains thin is the idempotency semantics of requestId and what the call returns, which an agent may need before retrying.

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 50% schema coverage on a deeply nested policy object, the description supplies the critical placement rules: objective is context only and not parsed, requirements belong in icpContext.constraints, exclusions in constraints with operator 'excludes' or icpContext.exclusions, contact needs in requiredContactRoutes. It also flags that LinkedIn research requires reviewed completed_research terms and an explicit maxCreditsPerRun within the monthly cap. It leaves requestId and several policy fields (cadence, scheduleHour, monitorTargetLimit, perSourceRunLimit) unexplained.

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

Purpose5/5

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

States a specific verb and resource ('Create an account-owned draft for recurring Maps or LinkedIn discovery'), plus a hard scope constraint ('one channel per pipeline'). It also draws the boundary against the research-running and delivery-enabling siblings in the same sentence, so an agent can place it in the workflow without opening another schema.

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

Usage Guidelines4/5

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

The 'without running research, reserving credits or enabling delivery' clause is an explicit when-not, and 'review ... before activation' implies activate_pipeline is the follow-up step. It stops short of naming the alternative tools (run_pipeline_sample, activate_pipeline) outright, so the routing is strongly implied rather than stated.

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