{"version":"2026-10-09","endpoints":{"mcp":"https://www.peer-freight.com/api/mcp","validate":"https://www.peer-freight.com/api/agent/quote-requests/validate","submit":"https://www.peer-freight.com/api/agent/quote-requests","submission":"https://www.peer-freight.com/api/agent/quote-requests/{submission_reference}","answers":"https://www.peer-freight.com/api/agent/quote-requests/{submission_reference}/answers","docs":"https://www.peer-freight.com/mcp.md"},"limits":{"maxLoads":50,"maxBodyBytes":262144,"submissionsPerHour":10,"rfqsPerHour":100,"submissionsPerHourPerIp":20,"requestsPerHour":120},"returns":"A submission reference, a reference per RFQ, and open questions (the structured checks plus a reviewer's questions about the freight itself). Never a price, a booking, or a promise of capacity.","answers":"POST answers to a submission's open questions with the client_reference, the question's field, the answer text, and where the answer came from. The original value stays visible to the desk beside the answer.","schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"idempotency_key":{"description":"A UUID you generate once per intended submission and reuse on every retry. Omit it only if you cannot retry; the server then generates one and a repeated call creates a second submission.","type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"submission_label":{"description":"A short label for the group, such as 'October shipments' or the spreadsheet name.","type":"string","maxLength":160},"contact":{"type":"object","properties":{"contactName":{"type":"string","minLength":1,"maxLength":120,"description":"Who Peer should reply to."},"contactEmail":{"type":"string","minLength":3,"maxLength":254,"description":"A company email address. Personal and disposable domains are rejected. The receipt goes here."},"companyName":{"type":"string","minLength":1,"maxLength":160,"description":"The shipper's company."},"contactPhone":{"type":"string","minLength":7,"maxLength":40,"description":"Phone with country code, such as +1 415 555 0123."}},"required":["contactName","contactEmail","companyName","contactPhone"],"additionalProperties":false},"loads":{"minItems":1,"maxItems":50,"type":"array","items":{"type":"object","properties":{"client_reference":{"type":"string","minLength":1,"maxLength":100,"description":"Your reference for this load, such as a PO or order number. Unique within the submission and echoed on every result."},"originCity":{"type":"string","minLength":1,"maxLength":80,"description":"Pickup city."},"originState":{"type":"string","minLength":2,"maxLength":2,"description":"Pickup state, two-letter code such as CA."},"originZip":{"type":"string","minLength":5,"maxLength":10,"description":"Pickup ZIP, 5 digits or ZIP+4."},"destCity":{"type":"string","minLength":1,"maxLength":80,"description":"Delivery city."},"destState":{"type":"string","minLength":2,"maxLength":2,"description":"Delivery state, two-letter code."},"destZip":{"type":"string","minLength":5,"maxLength":10,"description":"Delivery ZIP, 5 digits or ZIP+4."},"pickupDate":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$","description":"Requested pickup date, YYYY-MM-DD."},"shippingMethod":{"type":"string","enum":["full_truckload","ltl_partial","box_truck","refrigerated","flatbed","other","not_sure"],"description":"full_truckload, ltl_partial, box_truck, refrigerated, flatbed, other, or not_sure."},"commodity":{"type":"string","minLength":1,"maxLength":200,"description":"What is being shipped, in plain words."},"weightLbs":{"type":"integer","exclusiveMinimum":0,"maximum":100000,"description":"Total weight in whole pounds. Never send 0 for unknown; ask for the weight instead."},"packaging":{"type":"string","enum":["pallets","crates","cartons","floor_loaded","mixed_other","not_sure"],"description":"pallets, crates, cartons, floor_loaded, mixed_other, or not_sure."},"unitCount":{"description":"How many pallets, crates, cartons, or pieces. Use null with countUnknown: true when nobody knows.","anyOf":[{"type":"integer","exclusiveMinimum":0,"maximum":1000000},{"type":"null"}]},"countUnknown":{"description":"True when the piece count is not known. Do not guess a count.","type":"boolean"},"detailsIncluded":{"description":"True to include dimensions and stackability for a method that does not require them (full truckload or refrigerated).","type":"boolean"},"dimensions":{"description":"Packed dimensions with units, for example 'Each crate: 48 x 40 x 50 in'. Required for LTL or partial, box truck, flatbed, other, and not_sure, unless dimensionsUnknown is true.","anyOf":[{"type":"string","maxLength":500},{"type":"null"}]},"dimensionsUnknown":{"description":"True when the packed dimensions are not known.","type":"boolean"},"stackability":{"description":"Can other freight be stacked on top? Required whenever dimensions are required.","anyOf":[{"type":"string","enum":["yes","no","not_sure"]},{"type":"null"}]},"temperatureF":{"description":"Refrigerated only: set point and mode, for example '34F continuous', or 'Not sure'.","anyOf":[{"type":"string","maxLength":40},{"type":"null"}]},"hazmatAnswer":{"type":"string","enum":["yes","no","not_sure"],"description":"Is any of it hazardous? Anything except no is flagged for review."},"notes":{"description":"Anything else Peer should know: appointments, accessorials, special handling.","anyOf":[{"type":"string","maxLength":2000},{"type":"null"}]},"deliveryDeadline":{"description":"Delivery deadline or appointment, with the local time zone, as text. null when there is none known.","anyOf":[{"type":"string","maxLength":160},{"type":"null"}]},"declaredValueUsd":{"description":"Total cargo value in US dollars. null when unknown.","anyOf":[{"type":"number","minimum":0},{"type":"null"}]},"facilities":{"description":"What each end can do. Omitted capabilities mean unknown, never no.","type":"object","properties":{"pickup":{"type":"object","properties":{"dock":{"description":"Does the facility have a loading dock? Omit or use unknown when nobody has confirmed.","type":"string","enum":["yes","no","unknown"]},"forklift":{"description":"Is a forklift available at the facility? Omit or use unknown when nobody has confirmed.","type":"string","enum":["yes","no","unknown"]},"liftgateRequired":{"description":"Does the truck need a liftgate here? Omit or use unknown when the facility has to confirm. Never infer no from a blank cell.","type":"string","enum":["yes","no","unknown"]}},"additionalProperties":false},"delivery":{"type":"object","properties":{"dock":{"description":"Does the facility have a loading dock? Omit or use unknown when nobody has confirmed.","type":"string","enum":["yes","no","unknown"]},"forklift":{"description":"Is a forklift available at the facility? Omit or use unknown when nobody has confirmed.","type":"string","enum":["yes","no","unknown"]},"liftgateRequired":{"description":"Does the truck need a liftgate here? Omit or use unknown when the facility has to confirm. Never infer no from a blank cell.","type":"string","enum":["yes","no","unknown"]}},"additionalProperties":false}},"additionalProperties":false}},"required":["client_reference","originCity","originState","originZip","destCity","destState","destZip","pickupDate","shippingMethod","commodity","weightLbs","packaging","hazmatAnswer"],"additionalProperties":false},"description":"One or many loads, 50 at most. Thirty loads from one spreadsheet belong in one call, not thirty calls."}},"required":["contact","loads"],"additionalProperties":false},"enums":{"shippingMethod":[{"value":"full_truckload","label":"Full truckload"},{"value":"ltl_partial","label":"LTL or partial"},{"value":"box_truck","label":"Box truck"},{"value":"refrigerated","label":"Refrigerated"},{"value":"flatbed","label":"Flatbed"},{"value":"other","label":"Other"},{"value":"not_sure","label":"Not sure"}],"packaging":[{"value":"pallets","label":"Pallets"},{"value":"crates","label":"Crates"},{"value":"cartons","label":"Loose cartons"},{"value":"floor_loaded","label":"Floor-loaded"},{"value":"mixed_other","label":"Mixed or other"},{"value":"not_sure","label":"Not sure"}],"facility":["yes","no","unknown"]},"rules":["Weight is in whole pounds. Dimensions are free text and must include units.","pickupDate is a real YYYY-MM-DD date, today or later.","LTL or partial, box truck, flatbed, other and not_sure require dimensions (or dimensionsUnknown: true) and stackability.","Refrigerated requires temperatureF text: a set point and mode, or 'Not sure'.","Count unknown: send countUnknown: true and unitCount null. Never send 0 for an unknown number.","Facility capabilities default to unknown. Omitted does not mean no.","client_reference is unique within one submission and echoed on every result. It is not a global deduplication key.","A multi-stop shipment is one load, with the stops described in notes, until structured stops ship.","Fields outside this schema are rejected rather than ignored."],"example":{"idempotency_key":"8774308b-c537-49a5-b8ba-b1af6f1b69c6","submission_label":"October shipments","contact":{"contactName":"Shipping team","contactEmail":"shipping@example-hardware.com","companyName":"Example Hardware","contactPhone":"+14155550123"},"loads":[{"client_reference":"PO-1042","originCity":"Fresno","originState":"CA","originZip":"93701","destCity":"Reno","destState":"NV","destZip":"89501","pickupDate":"2026-11-05","shippingMethod":"ltl_partial","commodity":"Crated equipment","weightLbs":1200,"packaging":"crates","unitCount":2,"dimensions":"Each crate: 48 x 40 x 50 inches","stackability":"no","hazmatAnswer":"no","deliveryDeadline":null,"declaredValueUsd":null,"facilities":{"pickup":{"dock":"yes","forklift":"yes","liftgateRequired":"no"},"delivery":{"dock":"unknown","forklift":"unknown","liftgateRequired":"unknown"}}}]}}