Skip to main content
Glama

Surfing Dog Inbox

Request a quote

request_quote
Idempotent

Ask for a price on something custom. Creates a quote_request item.

Input Schema

NameRequiredDescriptionDefault
keyNoThe person's key (sdkey1_…), if that is all you have: it is exchanged once for a pass, which comes back in identity.passes — keep the pass and send it next time instead. Never stored.
passNoThe person's passes (sdpass1_…), space-separated, at most 8: presented to the network that issued each, so the business recognises the customer. Or send them in the Sdi-Pass header. Never stored.
contactNo
messageNo
payloadYes
attachmentsNoPhotos or plans of the job: JPEG, PNG, WebP or PDF, at most six of 10 MB each. Inline up to 4 MB each (8 MB a call), else by https address or upload_id. HEIC photos: send them as JPEG. Images are cleaned of where they were taken; a PDF is kept as sent.
idempotency_keyNoSame key + same request = same answer. Required for agents. Make it a fresh random UUID per request: a retry of a create with a random key gets its access token again.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changed
    • changedInput schema / properties / idempotency_key / description
      Previous value: -"Same key + same request = same answer. Required for agents."New value: +"Same key + same request = same answer. Required for agents. Make it a fresh random UUID per request: a retry of a create with a random key gets its access token again."
  2. Changed2 schema fields changed
    • addedInput schema / properties / attachments
      Added value: +{
      +  "description": "Photos or plans of the job: JPEG, PNG, WebP or PDF, at most six of 10 MB each. Inline up to 4 MB each (8 MB a call), else by https address or upload_id. HEIC photos: send them as JPEG. Images are cleaned of where they were taken; a PDF is kept as sent.",
      +  "items": {
      +    "anyOf": [
      +      {
      +        "properties": {
      +          "upload_id": {
      +            "description": "What POST /v1/uploads answered, within its hour.",
      +            "pattern": "^upl_[A-Za-z0-9_-]{16,48}$",
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "upload_id"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "data_base64": {
      +            "description": "The file's bytes in base64: JPEG, PNG, WebP or PDF, up to 4 MB (8 MB in one call).",
      +            "maxLength": 5592412,
      +            "minLength": 4,
      +            "type": "string"
      +          },
      +          "name": {
      +            "description": "The file's name, for the business to recognise it.",
      +            "maxLength": 200,
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "data_base64"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "name": {
      +            "maxLength": 200,
      +            "type": "string"
      +          },
      +          "url": {
      +            "description": "An https address the file can be fetched from, up to 10 MB.",
      +            "format": "uri",
      +            "maxLength": 2048,
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "url"
      +        ],
      +        "type": "object"
      +      }
      +    ]
      +  },
      +  "maxItems": 6,
      +  "type": "array"
      +}
    • addedInput schema / properties / payload / properties / job
      Added value: +{
      +  "description": "The job: urgency (emergency, within_24h, this_week, flexible), whether a visit comes first, the site (address, how to find the way, home or business), up to three windows that suit, and budgetMax for a range.",
      +  "properties": {
      +    "budgetMax": {
      +      "properties": {
      +        "currency": {
      +          "maxLength": 3,
      +          "minLength": 3,
      +          "type": "string"
      +        },
      +        "value": {
      +          "description": "Minor units of the currency's own ISO 4217 exponent (minorUnits): 4500 is CA$45.00 or ₹45.00, ¥4,500 in JPY, 4.500 in KWD.",
      +          "maximum": 9007199254740991,
      +          "minimum": -9007199254740991,
      +          "type": "integer"
      +        }
      +      },
      +      "required": [
      +        "value",
      +        "currency"
      +      ],
      +      "type": "object"
      +    },
      +    "site": {
      +      "properties": {
      +        "accessNotes": {
      +          "description": "Gate codes are never asked for: only how to find the way.",
      +          "maxLength": 500,
      +          "type": "string"
      +        },
      +        "address": {
      +          "properties": {
      +            "addressCountry": {
      +              "pattern": "^[A-Za-z]{2}$",
      +              "type": "string"
      +            },
      +            "addressLocality": {
      +              "maxLength": 100,
      +              "type": "string"
      +            },
      +            "addressRegion": {
      +              "maxLength": 100,
      +              "type": "string"
      +            },
      +            "postalCode": {
      +              "maxLength": 20,
      +              "type": "string"
      +            },
      +            "streetAddress": {
      +              "maxLength": 200,
      +              "type": "string"
      +            }
      +          },
      +          "type": "object"
      +        },
      +        "geo": {
      +          "description": "The site's point, when you have it: a radius is checked against it.",
      +          "properties": {
      +            "latitude": {
      +              "maximum": 90,
      +              "minimum": -90,
      +              "type": "number"
      +            },
      +            "longitude": {
      +              "maximum": 180,
      +              "minimum": -180,
      +              "type": "number"
      +            }
      +          },
      +          "required": [
      +            "latitude",
      +            "longitude"
      +          ],
      +          "type": "object"
      +        },
      +        "propertyType": {
      +          "enum": [
      +            "home",
      +            "business",
      +            "other"
      +          ],
      +          "type": "string"
      +        }
      +      },
      +      "type": "object"
      +    },
      +    "urgency": {
      +      "default": "flexible",
      +      "enum": [
      +        "emergency",
      +        "within_24h",
      +        "this_week",
      +        "flexible"
      +      ],
      +      "type": "string"
      +    },
      +    "visit": {
      +      "default": "unsure",
      +      "enum": [
      +        "needed",
      +        "not_needed",
      +        "unsure"
      +      ],
      +      "type": "string"
      +    },
      +    "windows": {
      +      "items": {
      +        "properties": {
      +          "from": {
      +            "format": "date-time",
      +            "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$",
      +            "type": "string"
      +          },
      +          "to": {
      +            "format": "date-time",
      +            "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$",
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "from",
      +          "to"
      +        ],
      +        "type": "object"
      +      },
      +      "maxItems": 3,
      +      "minItems": 1,
      +      "type": "array"
      +    }
      +  },
      +  "type": "object"
      +}
  3. First observed

TDQS

C2.7/5.0
Behavior2/5

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

Annotations already declare readOnlyHint=false, idempotentHint=true, and destructiveHint=false. The description adds only 'Creates a quote_request item', which is nearly tautological and provides no extra behavioral context (e.g., side effects, notifications).

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?

Two short sentences with no wasted words and the key action front-loaded. However, it is arguably under-specified for a tool with seven parameters and nested structures.

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 complex mutation tool with nested objects and no output schema, the description is far too sparse. It omits essential context such as the payload structure, budget vs. budgetMax, urgency, and attachment handling.

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 57%, so the description carries some burden. It mentions no parameters, leaving the agent to rely entirely on the schema for semantics—especially for the complex nested 'payload' object.

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 states a specific verb ('Ask for a price') and resource ('something custom'), and clarifies that it creates a 'quote_request item'. It does not explicitly differentiate from siblings like make_offer or create_order, but the action is unambiguous.

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?

No guidance on when to use this tool versus alternatives such as make_offer or create_order. The implied usage ('for something custom') is vague and lacks explicit context or exclusions.

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.