Skip to main content
Glama

Create Segment Group

create_segment_group

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
modeNo'single' (one tag per person) or 'multi' (several).single
nameYesShort name for the dimension (e.g. "Seniority").
tagsYesThe tags to create, each {name, description}. Description guides the classifier, so make it discriminating.
criteriaNoThe classify scope this segment tracks — {agent_ids, senders}: the campaign (agent_tasks) ids from classifiable_campaigns and the teammate emails whose prospects to tag, each null = all. classify reuses this scope, so set it to what the segment should track; in a shared workspace, default `senders` to the user's own email unless they ask for teammates. Omit for every campaign and teammate.
descriptionNoOptional one-line description of what the dimension captures.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changed
    • changedInput schema / properties / criteria / anyOf
      Previous value: -[
      -  {
      -    "description": "The persisted classify scope a segment tracks — campaigns and teammates (a person has no\nintrinsic channel, so channel is a view filter, never a classify criterion). Each axis null =\nall (every campaign / every teammate). Omit the whole object to leave criteria unset (create)\nor unchanged (edit).",
      -    "properties": {
      -      "agent_ids": {
      -        "anyOf": [
      -          {
      -            "items": {
      -              "type": "integer"
      -            },
      -            "type": "array"
      -          },
      -          {
      -            "type": "null"
      -          }
      -        ],
      -        "default": null
      -      },
      -      "senders": {
      -        "anyOf": [
      -          {
      -            "items": {
      -              "type": "string"
      -            },
      -            "type": "array"
      -          },
      -          {
      -            "type": "null"
      -          }
      -        ],
      -        "default": null
      -      }
      -    },
      -    "title": "CriteriaInput",
      -    "type": "object"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]New value: +[
      +  {
      +    "description": "The persisted classify scope a segment tracks — campaigns and teammates (a person has no\nintrinsic channel, so channel is a view filter, never a classify criterion). Each axis null =\nall (every campaign / every teammate). Omit the whole object to leave criteria unset (create)\nor unchanged (edit).",
      +    "properties": {
      +      "agent_ids": {
      +        "anyOf": [
      +          {
      +            "items": {
      +              "type": "integer"
      +            },
      +            "type": "array"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ],
      +        "default": null
      +      },
      +      "senders": {
      +        "anyOf": [
      +          {
      +            "items": {
      +              "type": "string"
      +            },
      +            "type": "array"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ],
      +        "default": null
      +      }
      +    },
      +    "title": "Criteria",
      +    "type": "object"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
  2. Changed2 schema fields changed
    • changedInput schema / properties / criteria / anyOf
      Previous value: -[
      -  {
      -    "description": "The persisted classify scope a segment tracks — campaigns only (a person has no intrinsic\nchannel, so channel is a view filter, never a classify criterion). `agent_ids` null = every\ncampaign. Omit the whole object to leave criteria unset (create) or unchanged (edit).",
      -    "properties": {
      -      "agent_ids": {
      -        "anyOf": [
      -          {
      -            "items": {
      -              "type": "integer"
      -            },
      -            "type": "array"
      -          },
      -          {
      -            "type": "null"
      -          }
      -        ],
      -        "default": null
      -      }
      -    },
      -    "title": "CriteriaInput",
      -    "type": "object"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]New value: +[
      +  {
      +    "description": "The persisted classify scope a segment tracks — campaigns and teammates (a person has no\nintrinsic channel, so channel is a view filter, never a classify criterion). Each axis null =\nall (every campaign / every teammate). Omit the whole object to leave criteria unset (create)\nor unchanged (edit).",
      +    "properties": {
      +      "agent_ids": {
      +        "anyOf": [
      +          {
      +            "items": {
      +              "type": "integer"
      +            },
      +            "type": "array"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ],
      +        "default": null
      +      },
      +      "senders": {
      +        "anyOf": [
      +          {
      +            "items": {
      +              "type": "string"
      +            },
      +            "type": "array"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ],
      +        "default": null
      +      }
      +    },
      +    "title": "CriteriaInput",
      +    "type": "object"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • changedInput schema / properties / criteria / description
      Previous value: -"The classify scope this segment tracks — {agent_ids}, the campaign (agent_tasks)\nids from classifiable_campaigns (null = every campaign). classify reuses this scope, so\nset it to what the segment should track. Omit for every campaign."New value: +"The classify scope this segment tracks — {agent_ids, senders}: the campaign\n(agent_tasks) ids from classifiable_campaigns and the teammate emails whose prospects\nto tag, each null = all. classify reuses this scope, so set it to what the segment\nshould track; in a shared workspace, default `senders` to the user's own email unless\nthey ask for teammates. Omit for every campaign and teammate."
  3. Changed1 schema field changed
    • addedInput schema / properties / criteria
      Added value: +{
      +  "anyOf": [
      +    {
      +      "description": "The persisted classify scope a segment tracks — campaigns only (a person has no intrinsic\nchannel, so channel is a view filter, never a classify criterion). `agent_ids` null = every\ncampaign. Omit the whole object to leave criteria unset (create) or unchanged (edit).",
      +      "properties": {
      +        "agent_ids": {
      +          "anyOf": [
      +            {
      +              "items": {
      +                "type": "integer"
      +              },
      +              "type": "array"
      +            },
      +            {
      +              "type": "null"
      +            }
      +          ],
      +          "default": null
      +        }
      +      },
      +      "title": "CriteriaInput",
      +      "type": "object"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null,
      +  "description": "The classify scope this segment tracks — {agent_ids}, the campaign (agent_tasks)\nids from classifiable_campaigns (null = every campaign). classify reuses this scope, so\nset it to what the segment should track. Omit for every campaign."
      +}
  4. Added

TDQS

A4.6/5.0
Behavior5/5

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

Goes well beyond the readOnlyHint=false/destructiveHint=false annotations by disclosing the real costs and commitments: every person in scope gets tagged, at a per-person credit charge, within ~15 minutes of LinkedIn lookup or first contact. It also explains that the classifier reads tag descriptions and the person's profile, which is exactly the behavioral context an agent needs before committing.

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?

Front-loads the core definition and mode decision, then cost/latency, then the follow-up call. The <returns> block is somewhat verbose for a dict shape, but every sentence otherwise earns its place.

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

Completeness5/5

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

With no output schema, the returns block supplies the response shape (id, name, mode, criteria, tags), and the combination of mode semantics, cost, timing, and follow-up tool makes the description sufficient to call this mutation safely and completely.

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?

Schema coverage is already 100%, so the baseline is 3, but the description adds genuine meaning: it explains why a tag description matters ("the classifier reads it, and reads the person's profile") and frames mode semantically, not just enumeratively. The criteria/scope caveats largely mirror the schema text, so it is not fully additive.

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+resource and immediately defines the domain concept ("a dimension to classify your canonical people along") plus what it creates alongside it (its tags). An agent can distinguish this from sibling group tools like create_message_tag_group or classify_segment_group without opening schemas.

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?

Gives explicit guidance for choosing between `single` and `multi` mode with concrete examples (seniority vs traits), and names the follow-up tool (classify_segment_group) for tagging people already in scope. It lacks explicit when-not-to-use guidance versus the message-tag-group siblings, but the operational context is clear.

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