Skip to content

Singapore Buying Desk (Connective Labs)

by connective-labs.com · remote · no sign-in to list tools · v0.8.1 · published by com.connective-labs

Firm SGD quotes and delivery in Singapore for office and IT supplies, ink, toner and event print

Final · 1Changes · 6

11 tools: 1 do something that can't be undone, 6 change things and 4 only read.

Scanned Oct 21, 2026

1 check matched something in the tool definitions. No finding is not a safety guarantee. How the checks work.

claude mcp add --transport http sg-buying-desk https://mcp.connective-labs.com/sg-buying-desk/mcp

Findings

Matches of fixed checks, with the text they matched.

1 warn
  • The server marks "sg_business_days" read-only (readOnlyHint: true), and its own name, description or input give the class "irreversible".

    Matched text

    annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The input addresses people (input.to): what it sends cannot be taken back.

    What this check looks for

Tools

Open a tool for its reasons and full description. Descriptions are the publisher's own words, shown as they are.

11 tools

Can't be undone 1Claude Code: ask
  • sg_business_daysSingapore public holidays and working days for 2026 and 2027 (MOM data, including observed Monday holidays).1 finding

    Why it is in this group

    • The input addresses people (input.to): what it sends cannot be taken back.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.

    Findings

    • Warn

      The server marks "sg_business_days" read-only (readOnlyHint: true), and its own name, description or input give the class "irreversible".

      Matched text

      annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The input addresses people (input.to): what it sends cannot be taken back.

      What this check looks for
    Description, as the server wrote it
    Singapore public holidays and working days for 2026 and 2027 (MOM data, including observed Monday holidays). Pass date alone to ask whether it is a public holiday or working day; from + add to get the date N working days later (negative N for earlier); from + to to count working days between two dates; or year to list that year's holidays. Weekends and public holidays are skipped. Each answer has as_of and the official source.

    Annotations the server declares

    • title: Singapore public holidays and working days
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
Changes things 6Claude Code: ask
  • quote_event_printInstant all-in price (SGD, GST and Singapore delivery included) and ready-by date for name cards (business cards), printed lanyards, roll-up banners and tote bags in Singapore, for…No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
    Description, as the server wrote it
    Instant all-in price (SGD, GST and Singapore delivery included) and ready-by date for name cards (business cards), printed lanyards, roll-up banners and tote bags in Singapore, for staff, offices or events, including same-day to 5-day rush. Use when someone wants these printed or priced. Pass the deadline to see options that make it. Other custom print and merch goes through request_quote.

    Annotations the server declares

    • readOnlyHint: true
    • openWorldHint: false
  • quote_office_suppliesCurrent all-in SGD price (9% GST and Singapore delivery included) and ready-by date for office, IT and electronics supplies, single units welcome: cables and adapters (HDMI, Displa…No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
    Description, as the server wrote it
    Current all-in SGD price (9% GST and Singapore delivery included) and ready-by date for office, IT and electronics supplies, single units welcome: cables and adapters (HDMI, DisplayPort, USB-C, VGA, network), USB hubs and docks, storage (flash drives, microSD/SD cards, SSDs, hard drives), peripherals (mice, keyboards, webcams, headsets, speakers), monitors, UPS units, networking (switches, routers), printers, ink and toner, label tapes, tools. Pass category, brand, model, specs, quantity and needed_by whenever you know them, plus the buyer's own words in item. Key specs by category: cables: connector at each end + length in metres; adapters: from + to connector; memory cards: card type (microSD/SD/CF) + capacity; flash drives: capacity + connector (USB-A/USB-C); SSD/HDD: capacity + internal or external; UPS: VA rating or model; ink and toner: printer brand + cartridge code (or printer model) + colour; mice/keyboards: model, or wired/wireless; monitors: size in inches; network switches: port count. Each option carries confidence: exact (model number matches), spec (category and every key spec given match) or similar (closest line, with the differences listed). If the request is too vague to price, the result has match 'needs_detail' and lists what to ask the buyer; ask, then call again. Never invent a price: if nothing matches, call request_quote with category office-it-supplies.

    Annotations the server declares

    • readOnlyHint: true
    • openWorldHint: false
  • request_quoteSubmit a request for a firm quote.No findings

    Why it is in this group

    • The name "request_quote" says "request": a word for a change.
    Description, as the server wrote it
    Submit a request for a firm quote. Use it for one item (category, description, quantity) or for a whole list: pass items (the same line items you gave quote_list) or the list_id that quote_list returned. Covers office or IT items not matched by quote_office_supplies, custom event print and merch (backdrops, signage, branded merch, flyers, packaging), unusual specs, deadlines faster than any instant option, and orders for instantly priced items. Returns a reference; a firm price and date is sent to the contact email, usually the same business day. Nothing is charged until the buyer approves the firm quote. Singapore delivery only.

    Annotations the server declares

    • title: Request a firm quote
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: false
    • openWorldHint: true
  • request_serviceOpen the Get Quote form for the Singapore Buying Desk (Connective Labs Pte.No findings

    Why it is in this group

    • The name "request_service" says "request": a word for a change.
    Description, as the server wrote it
    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.

    Annotations the server declares

    • title: Get Quote
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • sg_weather_psiLatest NEA readings for Singapore, fetched about every 30 minutes: the 24-hour weather forecast (outlook, temperature, humidity, wind, conditions by region and period) and the 24-h…No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
    Description, as the server wrote it
    Latest NEA readings for Singapore, fetched about every 30 minutes: the 24-hour weather forecast (outlook, temperature, humidity, wind, conditions by region and period) and the 24-hour PSI and PM2.5 by region with NEA's air quality descriptor. Pass what: 'weather', 'psi' or 'both' (default). Each part has as_of and the official source.

    Annotations the server declares

    • title: Singapore weather forecast and PSI
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: true
  • singapore_how_toUse for an errand, government process or practical how-to in Singapore, for residents, employers and visitors.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
    Description, as the server wrote it
    Use for an errand, government process or practical how-to in Singapore, for residents, employers and visitors. It says which agency or type of business handles the task, the official channel and URL, whether Singpass, Corppass or a UEN is needed, whether it is fully online or needs a visit, fees and processing times only where the official page states them, whether an agent can act or must hand off to the user (login, app or phone), the next step, and any related API or MCP tool. Covers, among others: passports, NRIC and change of address; visas, the SG Arrival Card, tourist GST refunds at the airport, paying for MRT and buses as a visitor, SIM cards at Changi; personal and company income tax, GST registration, company and business registration and annual filing; work passes and domestic helper permits (new and renewal); HDB matters such as season parking, bulky item disposal, home-based businesses and neighbour or smoking complaints; municipal issues, police reports, scams, vehicles, road tax and parking; utilities, CPF, healthcare appointments, ActiveSG court bookings, school registration, pets; sending parcels; and buying office supplies or event print. Returns the best 1 to 3 matches from a list checked against official pages, each with source_url and last_checked. Says plainly when a task is not covered, and labels any agency suggestion for it as a guess. Singapore only; not for other countries, and not for recommendations such as restaurants or sights. Read-only.

    Annotations the server declares

    • title: How to get an errand or government process done in Singapore
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
Only reads 4Claude Code: allow
  • list_categoriesList what the Singapore Buying Desk quotes: office and IT supply categories with the specs each needs to price, then event print and merch categories, which ones get an instant pri…No findings

    Why it is in this group

    • The name "list_categories" says "list": a word for reading.
    Description, as the server wrote it
    List what the Singapore Buying Desk quotes: office and IT supply categories with the specs each needs to price, then event print and merch categories, which ones get an instant price, and the operator details.

    Annotations the server declares

    • readOnlyHint: true
    • openWorldHint: false
  • quote_listPrice a whole shopping list or RFQ in one call: many line items, each with its own quantity, for office and IT supplies and instant event print (name cards, lanyards, roll-up banne…No findings

    Why it is in this group

    • The name "quote_list" says "list": a word for reading.
    Description, as the server wrote it
    Price a whole shopping list or RFQ in one call: many line items, each with its own quantity, for office and IT supplies and instant event print (name cards, lanyards, roll-up banners, tote bags). Returns per line the match level (exact, spec, similar, needs_detail or no_match), the all-in SGD price (9% GST and Singapore delivery included) and the ready-by date, plus a total for priced lines and a list of what to clarify with the buyer. Pass lines as strings ('3 x HDMI cable 5m') or objects with item, quantity, category, brand, model, specs. Never invent prices for unpriced lines: ask what clarify lists, or convert the list to a firm quote with request_quote (pass list_id).

    Annotations the server declares

    • title: Price a list of items
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • resolve_sg_addressUse when the user gives or asks about a Singapore postal code, block and street, unit number, or building or place name: what building or postal code it is, whether it is an HDB bl…No findings

    Why it is in this group

    • The name "resolve_sg_address" says "resolve": a word for reading.
    Description, as the server wrote it
    Use when the user gives or asks about a Singapore postal code, block and street, unit number, or building or place name: what building or postal code it is, whether it is an HDB block, a condominium or a commercial building, the nearest MRT/LRT station and roughly how long the walk is, which postal district or HDB town it is in, or what a courier or delivery needs to know (guardhouse, loading bay). Returns the normalized address with block, street, postal code and parsed unit (floor and unit number), latitude and longitude, postal district (plus HDB town for HDB blocks), the 2 nearest MRT/LRT stations with straight-line distance and an approximate walking time, the building type and a one-line delivery note ('unknown' when the type cannot be told). Gives up to 3 candidates when the input is ambiguous and warns when the block, street or floor does not match. Singapore only. Data: OneMap search (Singapore Land Authority), LTA station exits and HDB property data from data.gov.sg. Read-only.

    Annotations the server declares

    • title: Look up a Singapore address, postal code or building
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: true
  • rush_order_statusCheck the status of a custom quote request or order by its reference.No findings

    Why it is in this group

    • The name "rush_order_status" says "status": a word for reading.
    Description, as the server wrote it
    Check the status of a custom quote request or order by its reference.

    Annotations the server declares

    • readOnlyHint: true
    • openWorldHint: false

This is not a safety rating, and no finding is not a safety guarantee. The groups and findings come from fixed checks of the tool definitions the server returned on the date shown, not from its code or what it does when called. How the checks work.

Install

Pinned to version 0.8.1. Values in angle brackets are yours to fill in.

claude mcp add --transport http sg-buying-desk https://mcp.connective-labs.com/sg-buying-desk/mcp

Run in a terminal.

Claude Code permissions

Allow the reads, ask before a change, deny the deletes. Paste into .claude/settings.json.

.claude/settings.json
{
  "permissions": {
    "allow": [
      "mcp__sg-buying-desk__quote_list",
      "mcp__sg-buying-desk__list_categories",
      "mcp__sg-buying-desk__rush_order_status",
      "mcp__sg-buying-desk__resolve_sg_address"
    ],
    "ask": [
      "mcp__sg-buying-desk__quote_office_supplies",
      "mcp__sg-buying-desk__request_quote",
      "mcp__sg-buying-desk__quote_event_print",
      "mcp__sg-buying-desk__request_service",
      "mcp__sg-buying-desk__singapore_how_to",
      "mcp__sg-buying-desk__sg_business_days",
      "mcp__sg-buying-desk__sg_weather_psi"
    ],
    "deny": []
  }
}

Tools that only read are allowed, tools that change things ask first, tools that delete or cancel are denied. It assumes the server is installed as sg-buying-desk. Review it before you use it.