{"service":"Partition Pros Agent API","version":"1.0.0","description":"Live pricing, catalog, takeoff resolution, and quoting for commercial toilet partitions, Division 10 restroom accessories, and lockers. Built for estimators working through an AI assistant.","docs":{"openapi":"https://www.thepartitionpros.com/.well-known/openapi.json","mcp":"https://www.thepartitionpros.com/mcp","catalog_text":"https://www.thepartitionpros.com/llms-products.txt","overview":"https://www.thepartitionpros.com/llms.txt"},"calling":{"rest":"GET or POST https://www.thepartitionpros.com/agent/v1/{tool}. Read-only tools accept query-string arguments on GET; all tools accept a JSON body on POST.","mcp":"Streamable HTTP MCP server at https://www.thepartitionpros.com/mcp (JSON-RPC 2.0).","auth":"None required for catalog, list pricing, lead times, freight, and estimates. Contract pricing and order status require an API key — email info@thepartitionpros.com.","rate_limit":"120 requests per minute per IP. See X-RateLimit-Remaining."},"pricing_notes":{"currency":"USD","list_pricing":"Catalog prices are published list prices, the same numbers shown on the website.","estimates":"price_partition_build and estimate_freight return storefront estimates derived from Partition Pros quote history; each response carries pricing_authority and valid_until.","binding":"create_quote returns a hub-priced proposal. That is the authoritative number."},"contact":{"phone":"(646) 453-4564","email":"info@thepartitionpros.com","web":"https://www.thepartitionpros.com"},"tools":[{"name":"search_products","title":"Search the product catalog","description":"Search 1,100+ commercial restroom products (ASI, Bobrick, Bradley, Hadrian, Zurn, World Dryer) by keyword, brand, or price. Returns list price, lead time, quick-ship status, and — for configurable products — every finish/color/size axis with its option values. Use this when you know what KIND of product you need. If you already have a part number, use get_product; if you have a whole list of part numbers, use resolve_takeoff instead of calling this repeatedly.","read_only":true,"endpoint":"https://www.thepartitionpros.com/agent/v1/search_products","methods":["GET","POST"],"input_schema":{"type":"object","additionalProperties":false,"properties":{"query":{"type":"string","description":"Free text, e.g. \"matte black grab bar 36\" or \"recessed towel dispenser\".","maxLength":200},"brand":{"type":"string","description":"Exact manufacturer name to filter by: ASI, Bobrick, Bradley, Hadrian, Zurn, World Dryer.","maxLength":60},"category_id":{"type":"integer","description":"BigCommerce category id, when narrowing a previous result."},"min_price":{"type":"number","minimum":0},"max_price":{"type":"number","minimum":0},"limit":{"type":"integer","description":"Products to return (1–50).","minimum":1,"maximum":50,"default":20},"cursor":{"type":"string","description":"next_cursor from a previous response, to page forward."}}}},{"name":"get_product","title":"Get one product in full","description":"Full detail for a single product by SKU, manufacturer part number, or numeric id — description, specifications, downloadable spec sheets and install manuals, and every priced variant with its option values. Tolerant of how part numbers get typed: \"B-262\", \"b262\", and a model number lifted from a product title all resolve. On a miss it returns ranked alternates rather than an empty result.","read_only":true,"endpoint":"https://www.thepartitionpros.com/agent/v1/get_product","methods":["GET","POST"],"input_schema":{"type":"object","additionalProperties":false,"required":["identifier"],"properties":{"identifier":{"type":"string","description":"SKU, MPN, model number, or BigCommerce product id.","minLength":1,"maxLength":100,"examples":["B-262","10-STRAIGHT-GB-SERIES","2B1-000000-SERIES"]}}}},{"name":"resolve_takeoff","title":"Price a whole takeoff list","description":"THE tool for estimators. Paste a raw takeoff — part numbers with quantities, however they were copied out of a spec section or spreadsheet — and get back priced line items with a subtotal. Handles \"B-262\", \"B-262, 4\", \"4x B-262\", \"(4) B-262\". Every line that does NOT match comes back with ranked alternates and the reason it failed, so you can resolve it in one more call instead of giving up. Prefer this over looping get_product: it is one round-trip for up to 250 lines.","read_only":true,"endpoint":"https://www.thepartitionpros.com/agent/v1/resolve_takeoff","methods":["GET","POST"],"input_schema":{"type":"object","additionalProperties":false,"properties":{"text":{"type":"string","description":"The raw list, one item per line. Either this or `items` is required.","maxLength":20000},"items":{"type":"array","description":"Structured alternative to `text`.","maxItems":250,"items":{"type":"object","additionalProperties":false,"required":["sku"],"properties":{"sku":{"type":"string","minLength":1,"maxLength":100},"quantity":{"type":"integer","minimum":1,"maximum":9999,"default":1}}}}}}},{"name":"price_partition_build","title":"Estimate a toilet-partition build","description":"Itemized ESTIMATE for a commercial toilet-partition build: material, stall count, urinal screens, destination state, plus hardware/hinge/height/privacy upcharges. Returns per-line rates and quantities, freight, and a total, from Partition Pros quote history. This is an estimate — `pricing_authority` says so and `valid_until` says how long it holds. When the customer is ready to commit, call create_quote for the binding, hub-priced proposal. Call list_options first if you are unsure of an id.","read_only":true,"endpoint":"https://www.thepartitionpros.com/agent/v1/price_partition_build","methods":["GET","POST"],"input_schema":{"type":"object","additionalProperties":false,"required":["material","stalls","state"],"properties":{"material":{"type":"string","enum":["powder-coated","plastic-laminate","solid-plastic","phenolic","stainless-steel"],"description":"Partition material id."},"stalls":{"type":"integer","description":"Total toilet compartments across the build.","minimum":1,"maximum":500},"urinal_screens":{"type":"integer","minimum":0,"maximum":500,"default":0},"state":{"type":"string","description":"Two-letter US state code for freight, e.g. \"TX\".","minLength":2,"maxLength":2},"hardware":{"type":"string","enum":["chrome","stainless"],"description":"Defaults to chrome."},"height":{"type":"string","enum":["standard","full"],"description":"\"full\" adds +30%."},"hinge":{"type":"string","enum":["gravity","piano"],"description":"Defaults to gravity."},"privacy":{"type":"array","description":"Privacy add-ons; each is a per-stall upcharge.","items":{"type":"string","enum":["occupancy-indicator","hinge-fillers","continuous-brackets"]},"maxItems":3},"color":{"type":"string","description":"Color id for the chosen material (see list_options).","maxLength":80}}}},{"name":"estimate_freight","title":"Estimate LTL freight","description":"Freight-only estimate for a partition shipment to a US state. Useful when the customer already has product pricing and only needs delivered cost. Solid plastic (HDPE) carries a heavier-material surcharge, already included in the returned total.","read_only":true,"endpoint":"https://www.thepartitionpros.com/agent/v1/estimate_freight","methods":["GET","POST"],"input_schema":{"type":"object","additionalProperties":false,"required":["state","material","stalls"],"properties":{"state":{"type":"string","minLength":2,"maxLength":2},"material":{"type":"string","enum":["powder-coated","plastic-laminate","solid-plastic","phenolic","stainless-steel"]},"stalls":{"type":"integer","minimum":1,"maximum":500},"urinal_screens":{"type":"integer","minimum":0,"maximum":500,"default":0}}}},{"name":"resolve_accessories","title":"Build a restroom accessory schedule","description":"Turn a restroom's fixture counts into a Division 10 accessory schedule with real SKUs, quantities, and prices — dispensers, grab bars, mirrors, hooks, waste receptacles, baby changing. Every line names the rule that produced it, including the ADA 2010 section for grab bars. These are Partition Pros default conventions, NOT a code-compliance determination: surface the returned `disclaimer` to the user and let local code and the project spec govern.","read_only":true,"endpoint":"https://www.thepartitionpros.com/agent/v1/resolve_accessories","methods":["GET","POST"],"input_schema":{"type":"object","additionalProperties":false,"required":["rooms"],"properties":{"rooms":{"type":"array","minItems":1,"maxItems":50,"items":{"type":"object","additionalProperties":false,"required":["room_type"],"properties":{"name":{"type":"string","maxLength":80,"description":"e.g. \"Level 2 Men's\"."},"room_type":{"type":"string","enum":["mens","womens","unisex","family"]},"water_closets":{"type":"integer","minimum":0,"maximum":200,"default":0},"ada_water_closets":{"type":"integer","description":"Accessible compartments, counted WITHIN water_closets.","minimum":0,"maximum":200,"default":0},"urinals":{"type":"integer","minimum":0,"maximum":200,"default":0},"lavatories":{"type":"integer","minimum":0,"maximum":200,"default":0},"baby_changing":{"type":"boolean","default":false}}}},"brand":{"type":"string","description":"Bias SKU selection toward one manufacturer, e.g. \"Bobrick\".","maxLength":60},"exclude":{"type":"array","description":"Rule ids to omit from the schedule.","items":{"type":"string","maxLength":60},"maxItems":20}}}},{"name":"list_options","title":"List every partition option id","description":"The enumerated, stable ids that price_partition_build and create_quote accept: materials, mountings, layouts, hardware, heights, privacy add-ons, hinges, shipping adds, per-material colors with their lead times and quick-ship flags, and the current upcharge rates. Call this before quoting if you are unsure of an id — guessing produces an invalid_input error.","read_only":true,"endpoint":"https://www.thepartitionpros.com/agent/v1/list_options","methods":["GET","POST"],"input_schema":{"type":"object","additionalProperties":false,"properties":{"material":{"type":"string","enum":["powder-coated","plastic-laminate","solid-plastic","phenolic","stainless-steel"],"description":"Return colors for just this material instead of all of them."}}}},{"name":"create_quote","title":"Create a real, hub-priced quote","description":"Create an actual proposal and return a customer portal URL. The hub re-prices the build authoritatively — this is the binding number, unlike price_partition_build. Requires a real name and email because a human proposal record is created and a salesperson may follow up. ALWAYS confirm the configuration and the customer's consent to be contacted before calling this; it is not a read-only lookup.","read_only":false,"endpoint":"https://www.thepartitionpros.com/agent/v1/create_quote","methods":["POST"],"input_schema":{"type":"object","additionalProperties":false,"required":["material","rooms","contact_name","contact_email"],"properties":{"material":{"type":"string","enum":["powder-coated","plastic-laminate","solid-plastic","phenolic","stainless-steel"]},"color":{"type":"string","maxLength":80},"mounting":{"type":"string","maxLength":40,"default":"headrail-braced"},"height":{"type":"string","enum":["standard","full"],"default":"standard"},"rooms":{"type":"array","minItems":1,"maxItems":50,"items":{"type":"object","additionalProperties":false,"required":["stalls"],"properties":{"layout":{"type":"string","enum":["corner-wall","between-walls","free-standing","alcove","alcove-between-walls"]},"stalls":{"type":"integer","minimum":1,"maximum":200}}}},"urinal_screens":{"type":"integer","minimum":0,"maximum":500,"default":0},"contact_name":{"type":"string","minLength":1,"maxLength":120},"contact_email":{"type":"string","minLength":5,"maxLength":200},"contact_phone":{"type":"string","maxLength":40},"contact_zip":{"type":"string","maxLength":12},"needed_by":{"type":"string","maxLength":120,"description":"e.g. \"ASAP — ready to order\" or \"Q4 2026\"."},"notes":{"type":"string","maxLength":2000},"request_contact":{"type":"boolean","description":"Whether a salesperson should reach out. Ask the customer first.","default":false}}}}]}