Skip to main content
Glama

Agentic Dealer Network

Ask the dealership to reach out — prepare

lead_prepare
Read-onlyIdempotent

Prepare a named dealership's exact contact disclosure and a short-lived signed binding.

Input Schema

NameRequiredDescriptionDefault
channelsYes
commentsNo
customerYes
rooftop_slugYes
include_quoteNoSet false when the shopper was not shown a quote: the disclosure then makes no price claim and quote_included is false.
unit_identityYes

Output Schema

NameRequiredDescriptionDefault
dataNo
errorNoUnknown and foreign thread ids are deliberately indistinguishable: both return invalid_params with message "unknown thread_id" (anti-enumeration).
freshnessNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changed
    • changedOutput schema / (root)
      Previous value: -nullNew value: +{
      +  "additionalProperties": false,
      +  "properties": {
      +    "data": {
      +      "additionalProperties": false,
      +      "properties": {
      +        "binding": {
      +          "maxLength": 16384,
      +          "minLength": 1,
      +          "type": "string"
      +        },
      +        "disclosure_text": {
      +          "maxLength": 5000,
      +          "minLength": 10,
      +          "type": "string"
      +        },
      +        "expires_at": {
      +          "format": "date-time",
      +          "maxLength": 40,
      +          "type": "string"
      +        },
      +        "quote_included": {
      +          "type": "boolean"
      +        }
      +      },
      +      "required": [
      +        "disclosure_text",
      +        "binding",
      +        "expires_at",
      +        "quote_included"
      +      ],
      +      "type": "object"
      +    },
      +    "error": {
      +      "additionalProperties": false,
      +      "description": "Unknown and foreign thread ids are deliberately indistinguishable: both return invalid_params with message \"unknown thread_id\" (anti-enumeration).",
      +      "properties": {
      +        "auth_help_url": {
      +          "description": "Present only when no credential was supplied for a capability that requires one. Points to human documentation for obtaining a key. Absent for invalid, pending, or disabled credentials, which are deliberately indistinguishable.",
      +          "format": "uri",
      +          "maxLength": 500,
      +          "type": "string"
      +        },
      +        "code": {
      +          "enum": [
      +            "rooftop_not_found",
      +            "rooftop_inactive",
      +            "unit_not_found",
      +            "invalid_params",
      +            "rate_limited",
      +            "upstream_unavailable",
      +            "capability_unavailable",
      +            "identity_required",
      +            "quota_exceeded",
      +            "unit_held",
      +            "quote_expired",
      +            "rooftop_paused",
      +            "handoff_duplicate",
      +            "idempotency_conflict",
      +            "price_unavailable",
      +            "snapshot_expired",
      +            "artifact_too_large",
      +            "cursor_invalid",
      +            "cursor_expired",
      +            "ambiguous_identity",
      +            "unsupported_in_country"
      +          ]
      +        },
      +        "message": {
      +          "maxLength": 500,
      +          "type": "string"
      +        },
      +        "retry_after_seconds": {
      +          "minimum": 0,
      +          "type": "integer"
      +        },
      +        "retryable": {
      +          "type": "boolean"
      +        }
      +      },
      +      "required": [
      +        "code",
      +        "message",
      +        "retryable"
      +      ],
      +      "type": "object"
      +    },
      +    "freshness": {
      +      "additionalProperties": false,
      +      "properties": {
      +        "by_rooftop": {
      +          "additionalProperties": {
      +            "additionalProperties": false,
      +            "properties": {
      +              "last_ingest_at": {
      +                "format": "date-time",
      +                "maxLength": 40,
      +                "type": [
      +                  "string",
      +                  "null"
      +                ]
      +              },
      +              "status": {
      +                "enum": [
      +                  "fresh",
      +                  "stale",
      +                  "no_data"
      +                ]
      +              }
      +            },
      +            "required": [
      +              "status",
      +              "last_ingest_at"
      +            ],
      +            "type": "object"
      +          },
      +          "maxProperties": 500,
      +          "type": "object"
      +        }
      +      },
      +      "required": [
      +        "by_rooftop"
      +      ],
      +      "type": "object"
      +    }
      +  },
      +  "type": "object"
      +}
  2. Changed1 schema field changed
    • addedInput schema / properties / include_quote
      Added value: +{
      +  "default": true,
      +  "description": "Set false when the shopper was not shown a quote: the disclosure then makes no price claim and quote_included is false.",
      +  "type": "boolean"
      +}
  3. Changed2 schema fields changed
    • removedInput schema / allOf
      Removed value: -[
      -  {
      -    "if": {
      -      "properties": {
      -        "customer": {
      -          "required": [
      -            "email"
      -          ]
      -        }
      -      }
      -    },
      -    "then": {
      -      "properties": {
      -        "channels": {
      -          "contains": {
      -            "const": "email"
      -          }
      -        }
      -      }
      -    }
      -  },
      -  {
      -    "if": {
      -      "properties": {
      -        "customer": {
      -          "required": [
      -            "phone"
      -          ]
      -        }
      -      }
      -    },
      -    "then": {
      -      "properties": {
      -        "channels": {
      -          "contains": {
      -            "const": "phone"
      -          }
      -        }
      -      }
      -    }
      -  }
      -]
    • addedInput schema / description
      Added value: +"customer.email requires channels to include email. customer.phone requires channels to include phone."
  4. First observed

TDQS

C2.9/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, non-destructive and openWorld, so the safety profile is covered. The description usefully adds that the binding is short-lived and signed, plus the concept of an 'exact contact disclosure', but it omits what happens to the binding, whether it is returned to the caller, and how expiry interacts with the idempotent hint. With annotations carrying the safety burden, this partial added context lands at a 3.

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?

A single tight sentence with no filler, and the key noun phrase (the disclosure and signed binding) is front-loaded. Its brevity is efficient, though here it shades into under-specification rather than pure conciseness.

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

Completeness2/5

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

For a tool with six parameters, nested customer objects, conditional cross-field requirements, and a two-step submit workflow, the description is far too thin. The output schema justifies omitting return-value detail, but the agent still lacks the workflow position, timing/expiry expectations, and any parameter guidance.

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

Parameters2/5

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

Schema description coverage is only 17% (essentially just include_quote), and the description adds nothing about rooftop_slug, unit_identity, comments, or the channels/customer cross-field constraint, which only appears in the schema-level description. 'Exact contact disclosure' hints at the customer/channels pair but gives no rules or formats, so the description fails to compensate for the low coverage.

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 a concrete verb ('Prepare') and specific artifacts ('contact disclosure' and 'short-lived signed binding'), so the agent knows this is a preparation step rather than a generic lookup. It does not, however, distinguish itself from the obvious sibling lead_submit or explain that it is the first half of a two-step flow, so sibling routing relies on the title alone.

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

Usage Guidelines2/5

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

There is no statement of when to call this versus lead_submit or quote_preview, no prerequisite conditions, and no note that the resulting binding must be submitted shortly after creation. The only implicit hint is the '— prepare' suffix in the title, which the description itself never develops.

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