Skip to main content
Glama

Singapore Buying Desk (Connective Labs)

Get Quote

request_service
Idempotent

Open the Get Quote form for the Singapore Buying Desk (Connective Labs Pte. Ltd.): the buyer lists the office, IT or event print items they need, sees instant all-in SGD prices, and sends the list for a firm quote. ChatGPT calls this from the Get Quote button with the business_id from the business feed (connective-labs-sg-buying-desk). Opening the form changes nothing; submitting it calls request_quote. Returns business_id_recognized (whether business_id matched this desk), the business details (legal name, UEN, support email, payment terms, guarantee), the prefill values applied to the form, the categories it quotes with links, and the how_it_works steps. Example input: {"business_id":"connective-labs-sg-buying-desk"}.

Input Schema

NameRequiredDescriptionDefault
itemsNoOptional: lines to prefill in the form.
needed_byNoThe date the buyer needs the items by, filled into the form's deadline field. If left out, that field starts empty.
business_idYesprovider_business_id from the business feed. This desk: connective-labs-sg-buying-desk.
delivery_areaNoDelivery address or area in Singapore, filled into the form's delivery field. Prices already include Singapore delivery. If left out, that field starts empty.

Output Schema

NameRequiredDescriptionDefault
prefillNo
businessYes
categoriesNo
business_idYes
how_it_worksNo
business_id_recognizedYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed4 schema fields changed
    • changedInput schema / properties / delivery_area / description
      Previous value: -"Optional: delivery area to prefill."New value: +"Delivery address or area in Singapore, filled into the form's delivery field. Prices already include Singapore delivery. If left out, that field starts empty."
    • changedInput schema / properties / items / items / anyOf
      Previous value: -[
      -  {
      -    "description": "One line in the buyer's words, quantity included, e.g. '3 x HDMI cable 5m', 'microSD 128GB x10', '2 pcs HP 206A cyan toner'.",
      -    "type": "string"
      -  },
      -  {
      -    "properties": {
      -      "brand": {
      -        "description": "Brand, e.g. HP, Logitech, SanDisk.",
      -        "type": "string"
      -      },
      -      "category": {
      -        "description": "Optional: a supplies category (cable, adapter, usb-hub, memory-card, flash-drive, ssd, hdd, card-reader, ...) or an event print category (name-cards, lanyards, roll-up-banners, tote-bags).",
      -        "type": "string"
      -      },
      -      "item": {
      -        "description": "The buyer's own wording for this line.",
      -        "type": "string"
      -      },
      -      "model": {
      -        "description": "Model number or cartridge code exactly as printed.",
      -        "type": "string"
      -      },
      -      "quantity": {
      -        "default": 1,
      -        "description": "Units needed for this line.",
      -        "minimum": 1,
      -        "type": "integer"
      -      },
      -      "specs": {
      -        "description": "Same fields as quote_office_supplies specs: connectors, length, capacity, card_type, va_rating, colour, ports, screen_size, wireless, interface.",
      -        "type": "object"
      -      }
      -    },
      -    "type": "object"
      -  }
      -]New value: +[
      +  {
      +    "description": "One line in the buyer's words, quantity included, e.g. '3 x HDMI cable 5m', 'microSD 128GB x10', '2 pcs HP 206A cyan toner'.",
      +    "type": "string"
      +  },
      +  {
      +    "properties": {
      +      "brand": {
      +        "description": "Brand, e.g. HP, Logitech, SanDisk.",
      +        "type": "string"
      +      },
      +      "category": {
      +        "description": "Optional: a supplies category (cable, adapter, usb-hub, memory-card, flash-drive, ssd, hdd, card-reader, ...) or an event print category (name-cards, lanyards, roll-up-banners, tote-bags).",
      +        "type": "string"
      +      },
      +      "item": {
      +        "description": "The buyer's own wording for this line.",
      +        "type": "string"
      +      },
      +      "model": {
      +        "description": "Model number or cartridge code exactly as printed.",
      +        "type": "string"
      +      },
      +      "quantity": {
      +        "default": 1,
      +        "description": "How many units of this line item the buyer needs.",
      +        "minimum": 1,
      +        "type": "integer"
      +      },
      +      "specs": {
      +        "description": "Technical details that pin down the exact product, such as connector types, cable length, storage capacity or screen size. Uses the same fields as quote_office_supplies specs: connectors, length, capacity, card_type, va_rating, colour, ports, screen_size, wireless, interface.",
      +        "type": "object"
      +      }
      +    },
      +    "type": "object"
      +  }
      +]
    • changedInput schema / properties / needed_by / description
      Previous value: -"Optional: deadline to prefill, YYYY-MM-DD."New value: +"The date the buyer needs the items by, filled into the form's deadline field. If left out, that field starts empty."
    • addedInput schema / properties / needed_by / format
      Added value: +"date"
  2. Changed1 schema field changed
    • changedInput schema / properties / items / items / anyOf
      Previous value: -[
      -  {
      -    "description": "One line in the buyer's words, quantity included, e.g. '3 x HDMI cable 5m', 'microSD 128GB x10', '2 pcs HP 206A cyan toner'.",
      -    "type": "string"
      -  },
      -  {
      -    "properties": {
      -      "brand": {
      -        "type": "string"
      -      },
      -      "category": {
      -        "description": "Optional: a supplies category (cable, adapter, usb-hub, memory-card, flash-drive, ssd, hdd, card-reader, ...) or an event print category (name-cards, lanyards, roll-up-banners, tote-bags).",
      -        "type": "string"
      -      },
      -      "item": {
      -        "description": "The buyer's own wording for this line.",
      -        "type": "string"
      -      },
      -      "model": {
      -        "description": "Model number or cartridge code exactly as printed.",
      -        "type": "string"
      -      },
      -      "quantity": {
      -        "default": 1,
      -        "minimum": 1,
      -        "type": "integer"
      -      },
      -      "specs": {
      -        "description": "Same fields as quote_office_supplies specs: connectors, length, capacity, card_type, va_rating, colour, ports, screen_size, wireless, interface.",
      -        "type": "object"
      -      }
      -    },
      -    "type": "object"
      -  }
      -]New value: +[
      +  {
      +    "description": "One line in the buyer's words, quantity included, e.g. '3 x HDMI cable 5m', 'microSD 128GB x10', '2 pcs HP 206A cyan toner'.",
      +    "type": "string"
      +  },
      +  {
      +    "properties": {
      +      "brand": {
      +        "description": "Brand, e.g. HP, Logitech, SanDisk.",
      +        "type": "string"
      +      },
      +      "category": {
      +        "description": "Optional: a supplies category (cable, adapter, usb-hub, memory-card, flash-drive, ssd, hdd, card-reader, ...) or an event print category (name-cards, lanyards, roll-up-banners, tote-bags).",
      +        "type": "string"
      +      },
      +      "item": {
      +        "description": "The buyer's own wording for this line.",
      +        "type": "string"
      +      },
      +      "model": {
      +        "description": "Model number or cartridge code exactly as printed.",
      +        "type": "string"
      +      },
      +      "quantity": {
      +        "default": 1,
      +        "description": "Units needed for this line.",
      +        "minimum": 1,
      +        "type": "integer"
      +      },
      +      "specs": {
      +        "description": "Same fields as quote_office_supplies specs: connectors, length, capacity, card_type, va_rating, colour, ports, screen_size, wireless, interface.",
      +        "type": "object"
      +      }
      +    },
      +    "type": "object"
      +  }
      +]
  3. Added

TDQS

A3.8/5.0
Behavior1/5

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

The description says 'Opening the form changes nothing,' which directly conflicts with the annotation readOnlyHint=false. Although the tool defers mutation to request_quote, the no-side-effect claim is not compatible with the structured annotation declaring the tool is not read-only.

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?

The key purpose and distinction from request_quote are front-loaded, and the example input is useful. It is somewhat long and repeats return-value details that the output schema likely covers, but the information is mostly relevant.

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?

Given the output schema and annotations, the description provides ample context: when to call it, what business_id to use, what prefill values do, and what the return contains. An agent has enough information to invoke it correctly aside from the annotation inconsistency.

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

Parameters3/5

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

Schema coverage is 100%, so parameter meanings are already well documented. The description reinforces how items, needed_by, and delivery_area prefill the form and provides an example input, but adds limited semantics beyond the schema.

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?

The description states a specific action and resource: opening the Get Quote form for the Singapore Buying Desk and prefilling buyer item lines. It clearly distinguishes this from submission by noting that submitting calls request_quote.

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

Usage Guidelines5/5

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

It explicitly says ChatGPT calls this from the Get Quote button and gives the exact business_id context. It also distinguishes this prefill/open step from the actual quote submission handled by request_quote.

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