Skip to main content
Glama

Start a peer consultation

consult_start

Starts one or more consultant coding-agent CLIs to gather independent opinions on proposals or code, returning a job_id or group_id immediately.

Instructions

Start one consultant (target) or several (targets); returns job_id or group_id immediately. Available (name: CLI, model): (none -- no consultant CLI is installed) Pass the user's name/CLI/vendor/model wording; target_ambiguous lists candidates, target_unavailable lists available ones. targets: ["all"] asks every available consultant, including your CLI (marked same lineage). Each gets an identical brief; one concurrency seat each. Model and limits are operator-owned. followup_to: completed job_id or group_id; only question is also needed. Inherits the prior inputs; explicit fields, even empty, replace them. Files are recopied in their current state; add expose_paths or set expose_from_parent: false. retry_of: failed job_id alone replays saved inputs in a new chain, with current files and a link to the failure. Use successful group answers first; retry only failed members after fixing auth/quota causes. No other request fields. mode defaults from context: facts = explore, proposal = review, proposal + counterpoints = debate. For code: expose_diff: { repo, base? } for changes, expose_paths: [absolute paths] for relevant callers, tests and config. Files are copied read-only, secrets masked; symlinks/protected paths skipped. Caps: 20 entries, 500 files, 5 MB. Inspect files_exposed and the manifest; missing premises stay unknown. Other context: facts, artifacts (logs/test output). network: on/off controls web access, not model submission or local reads; boundary states CLI-specific enforcement. caller/caller_model identify you; initiator: user only when asked. Optional prediction: { expected, worry } stays local.

Input Schema

NameRequiredDescriptionDefault
requestYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed2 schema fields changedv2.9.0
    • addedInput schema / properties / request / properties / retry_of
      Added value: +{
      +  "maxLength": 80,
      +  "minLength": 1,
      +  "type": "string"
      +}
    • removedInput schema / properties / request / required
      Removed value: -[
      -  "question"
      -]
  2. Changed26 schema fields changedv2.6.1
    • removedInput schema / properties / request / properties / constraints / default
      Removed value: -[]
    • removedInput schema / properties / request / properties / context / default / artifacts
      Removed value: -[]
    • removedInput schema / properties / request / properties / context / default / counterpoints
      Removed value: -[]
    • removedInput schema / properties / request / properties / context / default / facts
      Removed value: -[]
    • removedInput schema / properties / request / properties / context / properties / artifacts / default
      Removed value: -[]
    • addedInput schema / properties / request / properties / context / properties / constraints
      Added value: +{
      +  "items": {
      +    "maxLength": 1000,
      +    "minLength": 1,
      +    "type": "string"
      +  },
      +  "maxItems": 20,
      +  "type": "array"
      +}
    • removedInput schema / properties / request / properties / context / properties / counterpoints / default
      Removed value: -[]
    • addedInput schema / properties / request / properties / context / properties / expose_diff
      Added value: +{
      +  "anyOf": [
      +    {
      +      "additionalProperties": false,
      +      "properties": {
      +        "base": {
      +          "maxLength": 200,
      +          "minLength": 1,
      +          "pattern": "^[A-Za-z0-9._/~^@{}-]+$",
      +          "type": "string"
      +        },
      +        "repo": {
      +          "maxLength": 1000,
      +          "minLength": 1,
      +          "type": "string"
      +        }
      +      },
      +      "required": [
      +        "repo"
      +      ],
      +      "type": "object"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ]
      +}
    • addedInput schema / properties / request / properties / context / properties / expose_from_parent
      Added value: +{
      +  "type": "boolean"
      +}
    • removedInput schema / properties / request / properties / context / properties / facts / default
      Removed value: -[]
    • addedInput schema / properties / request / properties / context / properties / success_criteria
      Added value: +{
      +  "items": {
      +    "maxLength": 1000,
      +    "minLength": 1,
      +    "type": "string"
      +  },
      +  "maxItems": 20,
      +  "type": "array"
      +}
    • changedInput schema / properties / request / properties / initiator / anyOf
      Previous value: -[
      -  {
      -    "enum": [
      -      "user",
      -      "offer_accepted"
      -    ],
      -    "type": "string"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]New value: +[
      +  {
      +    "enum": [
      +      "user"
      +    ],
      +    "type": "string"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • addedInput schema / properties / request / properties / network
      Added value: +{
      +  "enum": [
      +    "on",
      +    "off"
      +  ],
      +  "type": "string"
      +}
    • removedInput schema / properties / request / properties / success_criteria / default
      Removed value: -[]
    • removedInput schema / properties / request / properties / target / anyOf
      Removed value: -[
      -  {
      -    "enum": [
      -      "codex",
      -      "gpt",
      -      "chatgpt",
      -      "openai",
      -      "claude-code",
      -      "claude",
      -      "anthropic",
      -      "antigravity",
      -      "agy",
      -      "gemini",
      -      "google",
      -      "opencode",
      -      "glm"
      -    ],
      -    "type": "string"
      -  },
      -  {
      -    "pattern": "^[a-z0-9-]+:.*$",
      -    "type": "string"
      -  }
      -]
    • addedInput schema / properties / request / properties / target / maxLength
      Added value: +120
    • addedInput schema / properties / request / properties / target / minLength
      Added value: +1
    • addedInput schema / properties / request / properties / target / pattern
      Added value: +"^[^\\p{Cc}\\p{Cf}]+$"
    • addedInput schema / properties / request / properties / target / type
      Added value: +"string"
    • removedInput schema / properties / request / properties / targets / items / anyOf
      Removed value: -[
      -  {
      -    "enum": [
      -      "codex",
      -      "gpt",
      -      "chatgpt",
      -      "openai",
      -      "claude-code",
      -      "claude",
      -      "anthropic",
      -      "antigravity",
      -      "agy",
      -      "gemini",
      -      "google",
      -      "opencode",
      -      "glm"
      -    ],
      -    "type": "string"
      -  },
      -  {
      -    "pattern": "^[a-z0-9-]+:.*$",
      -    "type": "string"
      -  }
      -]
    • addedInput schema / properties / request / properties / targets / items / maxLength
      Added value: +120
    • addedInput schema / properties / request / properties / targets / items / minLength
      Added value: +1
    • addedInput schema / properties / request / properties / targets / items / pattern
      Added value: +"^[^\\p{Cc}\\p{Cf}]+$"
    • addedInput schema / properties / request / properties / targets / items / type
      Added value: +"string"
    • changedInput schema / properties / request / properties / targets / maxItems
      Previous value: -4New value: +9
    • changedInput schema / properties / request / required
      Previous value: -[
      -  "mode",
      -  "question"
      -]New value: +[
      +  "question"
      +]
  3. Changed7 schema fields changedv1.4.1
    • changedInput schema / $schema
      Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • changedInput schema / properties / request / properties / caller / anyOf
      Previous value: -[
      -  {
      -    "enum": [
      -      "codex",
      -      "gpt",
      -      "chatgpt",
      -      "openai",
      -      "claude-code",
      -      "claude",
      -      "anthropic",
      -      "antigravity",
      -      "agy",
      -      "gemini",
      -      "google"
      -    ],
      -    "type": "string"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]New value: +[
      +  {
      +    "enum": [
      +      "codex",
      +      "gpt",
      +      "chatgpt",
      +      "openai",
      +      "claude-code",
      +      "claude",
      +      "anthropic",
      +      "antigravity",
      +      "agy",
      +      "gemini",
      +      "google",
      +      "opencode",
      +      "glm"
      +    ],
      +    "type": "string"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • addedInput schema / properties / request / properties / context / properties / expose_paths
      Added value: +{
      +  "default": [],
      +  "items": {
      +    "maxLength": 1000,
      +    "minLength": 1,
      +    "type": "string"
      +  },
      +  "maxItems": 20,
      +  "type": "array"
      +}
    • addedInput schema / properties / request / properties / initiator
      Added value: +{
      +  "anyOf": [
      +    {
      +      "enum": [
      +        "user",
      +        "offer_accepted"
      +      ],
      +      "type": "string"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ]
      +}
    • changedInput schema / properties / request / properties / target / anyOf
      Previous value: -[
      -  {
      -    "enum": [
      -      "codex",
      -      "gpt",
      -      "chatgpt",
      -      "openai",
      -      "claude-code",
      -      "claude",
      -      "anthropic",
      -      "antigravity",
      -      "agy",
      -      "gemini",
      -      "google"
      -    ],
      -    "type": "string"
      -  },
      -  {
      -    "pattern": "^[a-z0-9-]+:.*$",
      -    "type": "string"
      -  }
      -]New value: +[
      +  {
      +    "enum": [
      +      "codex",
      +      "gpt",
      +      "chatgpt",
      +      "openai",
      +      "claude-code",
      +      "claude",
      +      "anthropic",
      +      "antigravity",
      +      "agy",
      +      "gemini",
      +      "google",
      +      "opencode",
      +      "glm"
      +    ],
      +    "type": "string"
      +  },
      +  {
      +    "pattern": "^[a-z0-9-]+:.*$",
      +    "type": "string"
      +  }
      +]
    • changedInput schema / properties / request / properties / targets / items / anyOf
      Previous value: -[
      -  {
      -    "enum": [
      -      "codex",
      -      "gpt",
      -      "chatgpt",
      -      "openai",
      -      "claude-code",
      -      "claude",
      -      "anthropic",
      -      "antigravity",
      -      "agy",
      -      "gemini",
      -      "google"
      -    ],
      -    "type": "string"
      -  },
      -  {
      -    "pattern": "^[a-z0-9-]+:.*$",
      -    "type": "string"
      -  }
      -]New value: +[
      +  {
      +    "enum": [
      +      "codex",
      +      "gpt",
      +      "chatgpt",
      +      "openai",
      +      "claude-code",
      +      "claude",
      +      "anthropic",
      +      "antigravity",
      +      "agy",
      +      "gemini",
      +      "google",
      +      "opencode",
      +      "glm"
      +    ],
      +    "type": "string"
      +  },
      +  {
      +    "pattern": "^[a-z0-9-]+:.*$",
      +    "type": "string"
      +  }
      +]
    • changedInput schema / properties / request / properties / targets / maxItems
      Previous value: -3New value: +4
  4. First observedv1.1.0

TDQS

A4.1/5.0
Behavior5/5

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

Annotations only flag non-readOnly, openWorld and non-idempotent; the description adds substantial behavior the agent could not otherwise know: read-only file copies with secrets masked, skipped symlinks/protected paths, hard caps (20 entries, 500 files, 5 MB), one concurrency seat per consultant, operator-owned models/limits, and the local-only nature of the prediction field. It also clarifies that network:on/off controls web access rather than model submission.

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?

The purpose is front-loaded in the first sentence, but the remainder is a dense telegraphic wall of semicolon-chained fragments with parenthetical asides. Almost every line carries information, yet the lack of structure (no grouping of targeting vs context vs retry fields) makes it hard to scan.

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 single-object-param tool with a deep nested schema, no output schema and no param descriptions, the description supplies most of what an agent needs to call it correctly, including the immediate return identifiers. It still omits several request fields (objective, question, constraints, success_criteria, artifacts) and does not say how to inspect the resulting job beyond navigational advice.

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 0% schema description coverage the description must carry all parameter meaning, and it does for the high-risk ones: target vs targets, followup_to inheritance and replacement semantics, retry_of replay behavior, mode defaults, expose_diff/expose_paths/expose_from_parent, caller/caller_model/initiator, and prediction. It leaves objective, question, constraints, success_criteria and artifacts undescribed, so coverage is good but incomplete.

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 opening sentence states a specific verb and resource ('Start one consultant (target) or several (targets)') and even gives the return value ('returns job_id or group_id immediately'). It does not explicitly name the sibling tools, so an agent must infer that consult_get/consult_list are for polling rather than starting.

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 clear routing rules: use followup_to for a completed job/group, use retry_of only for a failed job, and 'retry only failed members after fixing auth/quota causes'. It also explains targets:["all"] and the mode defaults (facts=explore, proposal=review, proposal+counterpoints=debate). What is missing is any explicit statement of when NOT to start a consultation or which sibling to use instead.

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