Skip to main content
Glama

a2a2p — Agent-to-Agent-to-Physical

build_supplier_request_package

PRECONDITION — CALL ONLY after the requester supplied what the physical object must accomplish at intent.purpose (or requirement). If absent, ask the requester first; never infer purpose and do not invoke this tool yet. Build a synchronous, deterministic supplier request package from the requirement the caller already holds. The package follows the open a2a2p supplier profile and its versioned output schema at https://a2a2p.com/schema/supplier-package, preserves provenance, carries quote-stage screening, and names every quote-critical gap instead of inventing values. Every emitted package carries a reproducible SHA-256 artifact_identity over the exact package content, excluding the identity field itself. The digest proves content identity only; it does not prove supplier receipt, a quote, payment, fabrication, or physical correctness. The package also returns a deterministic quote_stage_eligibility receipt. Quote-stage eligibility lane flat_laser_cut_5052_h32: aluminum_5052_h32, laser_cutting, quantity 1-5, 10-300 mm by 10-300 mm, verified HTTPS DXF, raw finish, no secondary or regulated requirements, US delivery, and total budget up to USD 500. Classification sets no fee and grants no payment, supplier-contact, quote-acceptance, order, or fabrication authority. If no package can be built, MCP and REST share the a2a2p.supplier-package-rejection contract: a closed reason_code, exact vocabulary version, and deterministic next_action only where repair is sufficient. A purpose_required rejection includes an a2a2p.argument-repair operation that preserves the caller's existing arguments, requires the caller's own purpose statement, and forbids inference. An explicit specification.assembly with two or more parts returns decomposition_required and no package; one package represents one fabricated part. This is a stateless data transformation only: it stores no requirement, contacts no supplier or provider, requests no external quote, and creates no order, payment, or fabrication authority.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
intentNoLayer 1 — the problem. What the physical matter needs to DO. Use this for intent-driven requests where the agent describes purpose and a2a2p recommends solutions.
contactNoOptional email or callback endpoint for quote delivery.
deadlineNoRequired delivery date or timeframe. Maps to intent.timeline.
deliveryNoOptional caller-declared routing context carried into the returned package. a2a2p does not send it anywhere.
quantityNoNumber of units needed. Maps to intent.quantity.
budget_usdNoApproximate budget in USD. Maps to intent.budget_envelope.
constraintsNoHard constraints: tolerances, certifications, materials to avoid, size/weight limits. Maps to intent.functional_requirements.
requirementNoPlain-language description of the physical need. Maps to intent.purpose. Include function, dimensions, materials, load/performance requirements, environment, and interfaces where known.
callback_urlNoOptional HTTPS URL. When the quote is ready, a2a2p POSTs it as JSON to this URL.
specificationNoLayer 2 — the solution. What the physical matter IS. Populate what is known. Precise specifications produce faster, tighter quotes. Controlled vocabularies are preferred but open values are accepted.
business_contextNoOptional business requirements (expected volumes, cost targets, ROI constraints). If provided, the quote includes a business case.
rejected_alternativesNoOptions already considered and ruled out. Prevents re-suggesting and builds the learning corpus.

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
gapsYes
profileYes
requestYes
deliveryYes
geometryYes
screeningYes
commercialYes
provenanceYes
already_checkedYes
profile_versionYes
artifact_identityYes
specification_urlYes
what_is_requestedYes
delivery_requirementsYes
quote_stage_eligibilityYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed17 schema fields changed
    • addedInput schema / properties / intent / properties / alternates_acceptable
      Added value: +{
      +  "description": "Whether a supplier may propose a different material, process or stock size.",
      +  "type": [
      +    "boolean",
      +    "string"
      +  ]
      +}
    • addedInput schema / properties / intent / properties / inspection_documents
      Added value: +{
      +  "description": "Inspection or material documents required with the parts, or \"none required\".",
      +  "type": "string"
      +}
    • addedInput schema / properties / intent / properties / quote_by
      Added value: +{
      +  "description": "Date a quote is needed by.",
      +  "type": "string"
      +}
    • addedInput schema / properties / intent / properties / ship_to_region
      Added value: +{
      +  "description": "Delivery region. When present, a supplier package asks for a price including freight to it; when absent, freight is excluded.",
      +  "type": "string"
      +}
    • addedInput schema / properties / specification / properties / cutting
      Added value: +{
      +  "description": "Cutting-tool constraints for routed or milled profiles.",
      +  "properties": {
      +    "inside_corner_relief": {
      +      "description": "dogbone or t_bone: the supplier adds that relief; in_file: relief is already drawn; not_required: tool-radius corners are acceptable.",
      +      "enum": [
      +        "dogbone",
      +        "t_bone",
      +        "in_file",
      +        "not_required"
      +      ],
      +      "type": "string"
      +    },
      +    "tool_diameter_mm": {
      +      "description": "Smallest cutter that will be used. Inside corners and holes with a smaller radius are flagged against the measured DXF.",
      +      "exclusiveMinimum": 0,
      +      "type": "number"
      +    }
      +  },
      +  "type": "object"
      +}
    • addedInput schema / properties / specification / properties / notes
      Added value: +{
      +  "description": "Manufacturing notes for the supplier. Carried verbatim into the supplier package; never parsed into facts. State anything a check must use in its structured field.",
      +  "maxLength": 4000,
      +  "type": "string"
      +}
    • changedInput schema / properties / specification / properties / process / enum
      Previous value: -[
      -  "cnc_milling",
      -  "cnc_turning",
      -  "fdm_3d_print",
      -  "sla_3d_print",
      -  "sls_3d_print",
      -  "sheet_metal",
      -  "laser_cutting",
      -  "casting",
      -  "injection_molding",
      -  "extrusion"
      -]New value: +[
      +  "cnc_milling",
      +  "cnc_turning",
      +  "cnc_routing",
      +  "fdm_3d_print",
      +  "sla_3d_print",
      +  "sls_3d_print",
      +  "sheet_metal",
      +  "laser_cutting",
      +  "casting",
      +  "injection_molding",
      +  "extrusion"
      +]
    • addedInput schema / properties / specification / properties / sheet_stock
      Added value: +{
      +  "description": "The sheet a flat part is cut from. For plywood a supplier needs face_grade, nominal and actual thickness, ply_count and glue_class; for MDF, grade and thickness. Missing facts are asked, never chosen by a2a2p.",
      +  "properties": {
      +    "actual_thickness_mm": {
      +      "anyOf": [
      +        {
      +          "exclusiveMinimum": 0,
      +          "type": "number"
      +        },
      +        {
      +          "properties": {
      +            "max": {
      +              "type": "number"
      +            },
      +            "min": {
      +              "type": "number"
      +            }
      +          },
      +          "type": "object"
      +        }
      +      ],
      +      "description": "Measured or specified actual thickness. Stock-relative tolerances also satisfy this: the joint follows the sheet."
      +    },
      +    "face_grade": {
      +      "description": "Face/back veneer grade, for example B/BB.",
      +      "type": "string"
      +    },
      +    "glue_class": {
      +      "description": "Bond class, for example EN 314-2 class 1 (interior) or class 3 (exterior).",
      +      "type": "string"
      +    },
      +    "grade": {
      +      "description": "Panel grade for MDF and similar boards, for example standard or moisture_resistant.",
      +      "type": "string"
      +    },
      +    "grain_direction": {
      +      "description": "Face-grain direction relative to the declared X/Y dimensions.",
      +      "enum": [
      +        "along_x",
      +        "along_y",
      +        "not_applicable"
      +      ],
      +      "type": "string"
      +    },
      +    "nominal_thickness_mm": {
      +      "exclusiveMinimum": 0,
      +      "type": "number"
      +    },
      +    "ply_count": {
      +      "minimum": 1,
      +      "type": "integer"
      +    }
      +  },
      +  "type": "object"
      +}
    • addedInput schema / properties / specification / properties / tolerances
      Added value: +{
      +  "additionalProperties": {
      +    "anyOf": [
      +      {
      +        "exclusiveMinimum": 0,
      +        "type": "number"
      +      },
      +      {
      +        "properties": {
      +          "allowance_mm": {
      +            "description": "Added to the measured stock thickness; negative for an interference fit.",
      +            "type": "number"
      +          },
      +          "fit_class": {
      +            "description": "Optional label such as push_fit or press_fit.",
      +            "type": "string"
      +          },
      +          "minus": {
      +            "minimum": 0,
      +            "type": "number"
      +          },
      +          "nominal": {
      +            "exclusiveMinimum": 0,
      +            "type": "number"
      +          },
      +          "plus": {
      +            "minimum": 0,
      +            "type": "number"
      +          },
      +          "relative_to": {
      +            "enum": [
      +              "measured_stock_thickness"
      +            ],
      +            "type": "string"
      +          },
      +          "unit": {
      +            "type": "string"
      +          },
      +          "value": {
      +            "exclusiveMinimum": 0,
      +            "type": "number"
      +          }
      +        },
      +        "type": "object"
      +      }
      +    ]
      +  },
      +  "description": "Exact numeric tolerance callouts keyed by feature. They govern over tolerance_class for the named feature. Forms: a positive number (plus or minus that amount); { nominal, plus, minus }; or a stock-relative rule { relative_to: \"measured_stock_thickness\", allowance_mm, plus, minus, fit_class } for joints cut to the sheet actually used.",
      +  "type": "object"
      +}
    • addedOutput schema / properties / geometry / properties / files / items / properties
      Added value: +{
      +  "content_bytes": {
      +    "minimum": 1,
      +    "type": "integer"
      +  },
      +  "content_sha256": {
      +    "description": "SHA-256 of the exact bytes a2a2p inspected. A copy attached to or re-hosted for a delivery must match it.",
      +    "pattern": "^[a-f0-9]{64}$",
      +    "type": "string"
      +  }
      +}
    • changedOutput schema / properties / profile_version / const
      Previous value: -"1.5.0-draft"New value: +"1.6.0-draft"
    • addedOutput schema / properties / request / properties / cutting
      Added value: +{
      +  "description": "Requester-declared cutting-tool constraints (tool_diameter_mm, inside_corner_relief), projected without invention.",
      +  "properties": {
      +    "inside_corner_relief": {
      +      "description": "dogbone or t_bone: the supplier adds that relief; in_file: relief is already drawn; not_required: tool-radius corners are acceptable.",
      +      "enum": [
      +        "dogbone",
      +        "t_bone",
      +        "in_file",
      +        "not_required"
      +      ],
      +      "type": "string"
      +    },
      +    "tool_diameter_mm": {
      +      "description": "Smallest cutter that will be used. Inside corners and holes with a smaller radius are flagged against the measured DXF.",
      +      "exclusiveMinimum": 0,
      +      "type": "number"
      +    }
      +  },
      +  "type": [
      +    "object",
      +    "null"
      +  ]
      +}
    • addedOutput schema / properties / request / properties / manufacturing_notes
      Added value: +{
      +  "description": "The requester's specification notes, carried verbatim. They are instructions for the supplier and are never parsed into facts; structured fields govern where both exist.",
      +  "type": [
      +    "string",
      +    "null"
      +  ]
      +}
    • addedOutput schema / properties / request / properties / sheet_stock
      Added value: +{
      +  "description": "Requester-declared sheet the part is cut from (thickness, face grade, ply count, glue class, grade, grain direction), projected without invention.",
      +  "properties": {
      +    "actual_thickness_mm": {
      +      "anyOf": [
      +        {
      +          "exclusiveMinimum": 0,
      +          "type": "number"
      +        },
      +        {
      +          "properties": {
      +            "max": {
      +              "type": "number"
      +            },
      +            "min": {
      +              "type": "number"
      +            }
      +          },
      +          "type": "object"
      +        }
      +      ],
      +      "description": "Measured or specified actual thickness. Stock-relative tolerances also satisfy this: the joint follows the sheet."
      +    },
      +    "face_grade": {
      +      "description": "Face/back veneer grade, for example B/BB.",
      +      "type": "string"
      +    },
      +    "glue_class": {
      +      "description": "Bond class, for example EN 314-2 class 1 (interior) or class 3 (exterior).",
      +      "type": "string"
      +    },
      +    "grade": {
      +      "description": "Panel grade for MDF and similar boards, for example standard or moisture_resistant.",
      +      "type": "string"
      +    },
      +    "grain_direction": {
      +      "description": "Face-grain direction relative to the declared X/Y dimensions.",
      +      "enum": [
      +        "along_x",
      +        "along_y",
      +        "not_applicable"
      +      ],
      +      "type": "string"
      +    },
      +    "nominal_thickness_mm": {
      +      "exclusiveMinimum": 0,
      +      "type": "number"
      +    },
      +    "ply_count": {
      +      "minimum": 1,
      +      "type": "integer"
      +    }
      +  },
      +  "type": [
      +    "object",
      +    "null"
      +  ]
      +}
    • addedOutput schema / properties / request / properties / stock_relative_dimensions
      Added value: +{
      +  "description": "Derived from stock-relative callouts in tolerances. Each feature is cut to the thickness of the sheet actually used plus allowance_mm; it must not be cut to the nominal thickness.",
      +  "items": {
      +    "properties": {
      +      "allowance_mm": {
      +        "type": "number"
      +      },
      +      "feature": {
      +        "type": "string"
      +      },
      +      "minus": {
      +        "minimum": 0,
      +        "type": "number"
      +      },
      +      "plus": {
      +        "minimum": 0,
      +        "type": "number"
      +      },
      +      "relative_to": {
      +        "const": "measured_stock_thickness"
      +      },
      +      "rule": {
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "feature",
      +      "relative_to",
      +      "allowance_mm",
      +      "plus",
      +      "minus",
      +      "rule"
      +    ],
      +    "type": "object"
      +  },
      +  "type": "array"
      +}
    • changedOutput schema / properties / request / properties / tolerances / additionalProperties / anyOf
      Previous value: -[
      -  {
      -    "exclusiveMinimum": 0,
      -    "type": "number"
      -  },
      -  {
      -    "additionalProperties": true,
      -    "properties": {
      -      "minus": {
      -        "minimum": 0,
      -        "type": "number"
      -      },
      -      "plus": {
      -        "minimum": 0,
      -        "type": "number"
      -      },
      -      "unit": {
      -        "type": "string"
      -      },
      -      "value": {
      -        "exclusiveMinimum": 0,
      -        "type": "number"
      -      }
      -    },
      -    "type": "object"
      -  }
      -]New value: +[
      +  {
      +    "exclusiveMinimum": 0,
      +    "type": "number"
      +  },
      +  {
      +    "additionalProperties": true,
      +    "properties": {
      +      "allowance_mm": {
      +        "type": "number"
      +      },
      +      "minus": {
      +        "minimum": 0,
      +        "type": "number"
      +      },
      +      "nominal": {
      +        "exclusiveMinimum": 0,
      +        "type": "number"
      +      },
      +      "plus": {
      +        "minimum": 0,
      +        "type": "number"
      +      },
      +      "relative_to": {
      +        "enum": [
      +          "measured_stock_thickness"
      +        ]
      +      },
      +      "unit": {
      +        "type": "string"
      +      },
      +      "value": {
      +        "exclusiveMinimum": 0,
      +        "type": "number"
      +      }
      +    },
      +    "type": "object"
      +  }
      +]
    • changedOutput schema / properties / request / required
      Previous value: -[
      -  "purpose",
      -  "quantity",
      -  "timeline",
      -  "environment",
      -  "part_type",
      -  "material",
      -  "process",
      -  "tolerance_class",
      -  "tolerances",
      -  "tolerance_precedence",
      -  "dimensions",
      -  "surface_finish",
      -  "post_processing",
      -  "compliance"
      -]New value: +[
      +  "purpose",
      +  "quantity",
      +  "timeline",
      +  "environment",
      +  "part_type",
      +  "material",
      +  "process",
      +  "tolerance_class",
      +  "tolerances",
      +  "tolerance_precedence",
      +  "stock_relative_dimensions",
      +  "dimensions",
      +  "surface_finish",
      +  "post_processing",
      +  "compliance",
      +  "sheet_stock",
      +  "cutting",
      +  "manufacturing_notes"
      +]
  2. Changed7 schema fields changed
    • addedOutput schema / properties / gaps / properties / review_flags
      Added value: +{
      +  "items": {
      +    "additionalProperties": true,
      +    "properties": {
      +      "field": {
      +        "type": "string"
      +      },
      +      "why": {
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "field",
      +      "why"
      +    ],
      +    "type": "object"
      +  },
      +  "type": "array"
      +}
    • changedOutput schema / properties / gaps / required
      Previous value: -[
      -  "blocking_a_firm_quote",
      -  "widens_the_range",
      -  "quotable",
      -  "open_questions",
      -  "note"
      -]New value: +[
      +  "blocking_a_firm_quote",
      +  "widens_the_range",
      +  "quotable",
      +  "open_questions",
      +  "review_flags",
      +  "note"
      +]
    • changedOutput schema / properties / profile_version / const
      Previous value: -"1.4.0-draft"New value: +"1.5.0-draft"
    • addedOutput schema / properties / request / properties / tolerance_class / description
      Added value: +"Coarse fallback only. Exact named callouts in tolerances govern wherever they are present."
    • addedOutput schema / properties / request / properties / tolerance_precedence
      Added value: +{
      +  "description": "Code-owned resolution rule. numeric means exact callouts govern and tolerance_class is retained only as a coarse fallback; class_fallback means no exact callout was declared; absent means neither form was declared and the package carries a blocking tolerance_omission gap.",
      +  "enum": [
      +    "numeric",
      +    "class_fallback",
      +    "absent"
      +  ]
      +}
    • addedOutput schema / properties / request / properties / tolerances
      Added value: +{
      +  "additionalProperties": {
      +    "anyOf": [
      +      {
      +        "exclusiveMinimum": 0,
      +        "type": "number"
      +      },
      +      {
      +        "additionalProperties": true,
      +        "properties": {
      +          "minus": {
      +            "minimum": 0,
      +            "type": "number"
      +          },
      +          "plus": {
      +            "minimum": 0,
      +            "type": "number"
      +          },
      +          "unit": {
      +            "type": "string"
      +          },
      +          "value": {
      +            "exclusiveMinimum": 0,
      +            "type": "number"
      +          }
      +        },
      +        "type": "object"
      +      }
      +    ]
      +  },
      +  "description": "Requester-declared exact numeric tolerance callouts keyed by feature or dimension. Null means the requester declared no numeric tolerances. Exact callouts govern over tolerance_class for the named feature and are projected without invention.",
      +  "type": [
      +    "object",
      +    "null"
      +  ]
      +}
    • changedOutput schema / properties / request / required
      Previous value: -[
      -  "purpose",
      -  "quantity",
      -  "timeline",
      -  "environment",
      -  "part_type",
      -  "material",
      -  "process",
      -  "tolerance_class",
      -  "dimensions",
      -  "surface_finish",
      -  "post_processing",
      -  "compliance"
      -]New value: +[
      +  "purpose",
      +  "quantity",
      +  "timeline",
      +  "environment",
      +  "part_type",
      +  "material",
      +  "process",
      +  "tolerance_class",
      +  "tolerances",
      +  "tolerance_precedence",
      +  "dimensions",
      +  "surface_finish",
      +  "post_processing",
      +  "compliance"
      +]
  3. Changed5 schema fields changed
    • changedInput schema / properties / specification / properties / process / enum
      Previous value: -[
      -  "cnc_milling",
      -  "cnc_turning",
      -  "fdm_3d_print",
      -  "sla_3d_print",
      -  "sls_3d_print",
      -  "sheet_metal",
      -  "casting",
      -  "injection_molding",
      -  "extrusion"
      -]New value: +[
      +  "cnc_milling",
      +  "cnc_turning",
      +  "fdm_3d_print",
      +  "sla_3d_print",
      +  "sls_3d_print",
      +  "sheet_metal",
      +  "laser_cutting",
      +  "casting",
      +  "injection_molding",
      +  "extrusion"
      +]
    • changedOutput schema / properties / profile_version / const
      Previous value: -"1.3.0-draft"New value: +"1.4.0-draft"
    • addedOutput schema / properties / quote_stage_eligibility
      Added value: +{
      +  "$id": "https://a2a2p.com/schema/quote-stage-eligibility",
      +  "$schema": "http://json-schema.org/draft-07/schema#",
      +  "additionalProperties": false,
      +  "properties": {
      +    "authority": {
      +      "additionalProperties": false,
      +      "properties": {
      +        "fabrication": {
      +          "const": false
      +        },
      +        "order": {
      +          "const": false
      +        },
      +        "payment": {
      +          "const": false
      +        },
      +        "quote_acceptance": {
      +          "const": false
      +        },
      +        "supplier_contact": {
      +          "const": false
      +        }
      +      },
      +      "required": [
      +        "payment",
      +        "supplier_contact",
      +        "quote_acceptance",
      +        "order",
      +        "fabrication"
      +      ],
      +      "type": "object"
      +    },
      +    "blocking_codes": {
      +      "items": {
      +        "type": "string"
      +      },
      +      "type": "array"
      +    },
      +    "checks": {
      +      "items": {
      +        "additionalProperties": false,
      +        "properties": {
      +          "code": {
      +            "type": "string"
      +          },
      +          "message": {
      +            "type": "string"
      +          },
      +          "result": {
      +            "enum": [
      +              "pass",
      +              "needs_input",
      +              "ineligible"
      +            ]
      +          }
      +        },
      +        "required": [
      +          "code",
      +          "result",
      +          "message"
      +        ],
      +        "type": "object"
      +      },
      +      "minItems": 1,
      +      "type": "array"
      +    },
      +    "commercial_terms": {
      +      "additionalProperties": false,
      +      "properties": {
      +        "active": {
      +          "const": false
      +        },
      +        "commission_rate": {
      +          "type": "null"
      +        },
      +        "note": {
      +          "type": "string"
      +        }
      +      },
      +      "required": [
      +        "active",
      +        "commission_rate",
      +        "note"
      +      ],
      +      "type": "object"
      +    },
      +    "contract": {
      +      "const": "a2a2p.quote-stage-eligibility"
      +    },
      +    "evidence": {
      +      "items": {
      +        "pattern": "^https://",
      +        "type": "string"
      +      },
      +      "type": "array"
      +    },
      +    "lane": {
      +      "const": "flat_laser_cut_5052_h32"
      +    },
      +    "next_action": {
      +      "type": "string"
      +    },
      +    "program": {
      +      "const": "a2a2p.reference-first-physical-exchange"
      +    },
      +    "status": {
      +      "enum": [
      +        "eligible",
      +        "needs_input",
      +        "ineligible"
      +      ]
      +    },
      +    "supported_stock_thickness_mm": {
      +      "items": {
      +        "type": "number"
      +      },
      +      "type": "array"
      +    },
      +    "version": {
      +      "const": "0.1.0-draft"
      +    }
      +  },
      +  "required": [
      +    "contract",
      +    "version",
      +    "program",
      +    "lane",
      +    "status",
      +    "checks",
      +    "blocking_codes",
      +    "supported_stock_thickness_mm",
      +    "evidence",
      +    "next_action",
      +    "commercial_terms",
      +    "authority"
      +  ],
      +  "title": "a2a2p quote-stage eligibility receipt",
      +  "type": "object",
      +  "x-a2a2p-program": {
      +    "criteria": {
      +      "material": "aluminum_5052_h32",
      +      "process": "laser_cutting",
      +      "quantity": {
      +        "max": 5,
      +        "min": 1
      +      },
      +      "ship_to_country": "US",
      +      "size_mm": {
      +        "max_x": 300,
      +        "max_y": 300,
      +        "min_x": 10,
      +        "min_y": 10
      +      },
      +      "stock_thickness_mm": [
      +        1.02,
      +        1.6,
      +        2.03,
      +        2.29,
      +        2.54,
      +        3.18
      +      ],
      +      "surface_finish": "raw",
      +      "tolerance_classes": [
      +        "coarse",
      +        "medium"
      +      ],
      +      "total_budget": {
      +        "currency": "USD",
      +        "max": 500
      +      }
      +    },
      +    "evidence": [
      +      "https://sendcutsend.com/materials/5052-aluminum/",
      +      "https://sendcutsend.com/services/sheet-cutting/",
      +      "https://www.oshcut.com/materials",
      +      "https://www.oshcut.com/capabilities",
      +      "https://www.xometry.com/capabilities/sheet-cutting/metal-laser-cutting/"
      +    ],
      +    "lane": "flat_laser_cut_5052_h32",
      +    "program": "a2a2p.reference-first-physical-exchange"
      +  }
      +}
    • changedOutput schema / required
      Previous value: -[
      -  "profile",
      -  "profile_version",
      -  "specification_url",
      -  "request",
      -  "geometry",
      -  "commercial",
      -  "provenance",
      -  "gaps",
      -  "already_checked",
      -  "screening",
      -  "what_is_requested",
      -  "delivery",
      -  "delivery_requirements",
      -  "artifact_identity"
      -]New value: +[
      +  "profile",
      +  "profile_version",
      +  "specification_url",
      +  "request",
      +  "geometry",
      +  "commercial",
      +  "provenance",
      +  "gaps",
      +  "already_checked",
      +  "screening",
      +  "what_is_requested",
      +  "delivery",
      +  "delivery_requirements",
      +  "quote_stage_eligibility",
      +  "artifact_identity"
      +]
    • addedOutput schema / x-a2a2p-projection / field_origins / quote_stage_eligibility
      Added value: +"derived from the complete caller-held requirement and package gates at read time"
  4. Changed4 schema fields changed
    • addedOutput schema / properties / artifact_identity
      Added value: +{
      +  "additionalProperties": false,
      +  "properties": {
      +    "algorithm": {
      +      "const": "sha256"
      +    },
      +    "canonical_bytes": {
      +      "minimum": 1,
      +      "type": "integer"
      +    },
      +    "canonicalization": {
      +      "const": "a2a2p.sorted-json-v1"
      +    },
      +    "contract": {
      +      "const": "a2a2p.supplier-package-artifact-identity"
      +    },
      +    "digest_input": {
      +      "const": "the complete supplier package excluding artifact_identity"
      +    },
      +    "does_not_prove": {
      +      "items": {
      +        "type": "string"
      +      },
      +      "minItems": 4,
      +      "type": "array"
      +    },
      +    "proves": {
      +      "type": "string"
      +    },
      +    "scope": {
      +      "const": "content_identity_only"
      +    },
      +    "sha256": {
      +      "pattern": "^[a-f0-9]{64}$",
      +      "type": "string"
      +    },
      +    "version": {
      +      "const": "1.0.0"
      +    }
      +  },
      +  "required": [
      +    "contract",
      +    "version",
      +    "algorithm",
      +    "canonicalization",
      +    "digest_input",
      +    "sha256",
      +    "canonical_bytes",
      +    "scope",
      +    "proves",
      +    "does_not_prove"
      +  ],
      +  "type": "object"
      +}
    • changedOutput schema / properties / profile_version / const
      Previous value: -"1.2.0-draft"New value: +"1.3.0-draft"
    • changedOutput schema / required
      Previous value: -[
      -  "profile",
      -  "profile_version",
      -  "specification_url",
      -  "request",
      -  "geometry",
      -  "commercial",
      -  "provenance",
      -  "gaps",
      -  "already_checked",
      -  "screening",
      -  "what_is_requested",
      -  "delivery",
      -  "delivery_requirements"
      -]New value: +[
      +  "profile",
      +  "profile_version",
      +  "specification_url",
      +  "request",
      +  "geometry",
      +  "commercial",
      +  "provenance",
      +  "gaps",
      +  "already_checked",
      +  "screening",
      +  "what_is_requested",
      +  "delivery",
      +  "delivery_requirements",
      +  "artifact_identity"
      +]
    • addedOutput schema / x-a2a2p-projection / field_origins / artifact_identity
      Added value: +"derived from canonical supplier-package bytes at read time"
  5. Changed2 schema fields changed
    • addedInput schema / description
      Added value: +"PRECONDITION: provide a requester-supplied non-whitespace purpose at intent.purpose or requirement before invoking. If purpose is absent, ask what the physical object must accomplish; do not infer it and do not call this tool yet."
    • addedInput schema / examples
      Added value: +[
      +  {
      +    "intent": {
      +      "purpose": "Hold an indoor sensor enclosure against a vertical rail without drilling."
      +    }
      +  }
      +]
  6. Changed1 schema field changed
    • addedInput schema / properties / intent / properties / functional_requirements / properties / load_case / properties / allowable_shear_stress_mpa
      Added value: +{
      +  "description": "Optional requester-supplied transverse-shear design allowable; evaluated independently and never inferred from handbook data.",
      +  "exclusiveMinimum": 0,
      +  "type": "number"
      +}
  7. Changed5 schema fields changed
    • changedInput schema / properties / intent / properties / purpose / description
      Previous value: -"What the physical matter needs to accomplish (one line minimum, required)."New value: +"What the physical matter needs to accomplish (one non-whitespace line minimum, required)."
    • addedInput schema / properties / intent / properties / purpose / minLength
      Added value: +1
    • addedInput schema / properties / intent / properties / purpose / pattern
      Added value: +"\\S"
    • addedInput schema / properties / requirement / minLength
      Added value: +1
    • addedInput schema / properties / requirement / pattern
      Added value: +"\\S"
  8. Changed7 schema fields changed
    • addedInput schema / properties / delivery / properties / principal_kind
      Added value: +{
      +  "enum": [
      +    "organization",
      +    "person"
      +  ],
      +  "type": "string"
      +}
    • addedInput schema / properties / delivery / properties / registered_address
      Added value: +{
      +  "description": "Required for an organization principal; its verifiable registered address.",
      +  "maxLength": 500,
      +  "type": "string"
      +}
    • changedInput schema / properties / delivery / required
      Previous value: -[
      -  "accountable_principal",
      -  "reply_to"
      -]New value: +[
      +  "accountable_principal",
      +  "principal_kind",
      +  "reply_to"
      +]
    • addedOutput schema / properties / commercial / additionalProperties
      Added value: +true
    • addedOutput schema / properties / commercial / properties
      Added value: +{
      +  "freight_included": {
      +    "type": "boolean"
      +  },
      +  "price_scope": {
      +    "enum": [
      +      "manufacturing_only_freight_excluded",
      +      "delivered_to_declared_region"
      +    ]
      +  }
      +}
    • addedOutput schema / properties / commercial / required
      Added value: +[
      +  "price_scope",
      +  "freight_included"
      +]
    • changedOutput schema / properties / profile_version / const
      Previous value: -"1.1.0-draft"New value: +"1.2.0-draft"
  9. Changed3 schema fields changed
    • addedOutput schema / properties / geometry / properties / dimension_consistency
      Added value: +{
      +  "additionalProperties": true,
      +  "properties": {
      +    "reason": {
      +      "type": "string"
      +    },
      +    "status": {
      +      "enum": [
      +        "match",
      +        "conflict",
      +        "not_evaluated"
      +      ]
      +    }
      +  },
      +  "required": [
      +    "status",
      +    "reason"
      +  ],
      +  "type": "object"
      +}
    • changedOutput schema / properties / geometry / required
      Previous value: -[
      -  "files",
      -  "preferred",
      -  "note"
      -]New value: +[
      +  "files",
      +  "preferred",
      +  "note",
      +  "dimension_consistency"
      +]
    • changedOutput schema / properties / profile_version / const
      Previous value: -"1.0.0-draft"New value: +"1.1.0-draft"
  10. Changed1 schema field changed
    • changedOutput schema / (root)
      Previous value: -nullNew value: +{
      +  "$id": "https://a2a2p.com/schema/supplier-package",
      +  "$schema": "http://json-schema.org/draft-07/schema#",
      +  "additionalProperties": true,
      +  "description": "Transport-neutral, screened request for supplier pricing. This schema conveys no order or fabrication authority.",
      +  "properties": {
      +    "already_checked": {
      +      "type": [
      +        "object",
      +        "null"
      +      ]
      +    },
      +    "commercial": {
      +      "type": "object"
      +    },
      +    "delivery": {
      +      "type": [
      +        "object",
      +        "null"
      +      ]
      +    },
      +    "delivery_requirements": {
      +      "additionalProperties": true,
      +      "properties": {
      +        "satisfied": {
      +          "type": "boolean"
      +        }
      +      },
      +      "required": [
      +        "binding_must_supply",
      +        "rationale",
      +        "satisfied",
      +        "note"
      +      ],
      +      "type": "object"
      +    },
      +    "gaps": {
      +      "additionalProperties": true,
      +      "properties": {
      +        "blocking_a_firm_quote": {
      +          "items": {
      +            "additionalProperties": true,
      +            "properties": {
      +              "field": {
      +                "type": "string"
      +              },
      +              "why": {
      +                "type": "string"
      +              }
      +            },
      +            "required": [
      +              "field",
      +              "why"
      +            ],
      +            "type": "object"
      +          },
      +          "type": "array"
      +        },
      +        "note": {
      +          "type": "string"
      +        },
      +        "open_questions": {
      +          "items": {
      +            "type": "object"
      +          },
      +          "type": "array"
      +        },
      +        "quotable": {
      +          "type": "boolean"
      +        },
      +        "widens_the_range": {
      +          "items": {
      +            "additionalProperties": true,
      +            "properties": {
      +              "field": {
      +                "type": "string"
      +              },
      +              "why": {
      +                "type": "string"
      +              }
      +            },
      +            "required": [
      +              "field",
      +              "why"
      +            ],
      +            "type": "object"
      +          },
      +          "type": "array"
      +        }
      +      },
      +      "required": [
      +        "blocking_a_firm_quote",
      +        "widens_the_range",
      +        "quotable",
      +        "open_questions",
      +        "note"
      +      ],
      +      "type": "object"
      +    },
      +    "geometry": {
      +      "additionalProperties": true,
      +      "properties": {
      +        "files": {
      +          "items": {
      +            "type": "object"
      +          },
      +          "maxItems": 8,
      +          "type": "array"
      +        },
      +        "note": {
      +          "type": "string"
      +        },
      +        "preferred": {
      +          "type": "string"
      +        }
      +      },
      +      "required": [
      +        "files",
      +        "preferred",
      +        "note"
      +      ],
      +      "type": "object"
      +    },
      +    "profile": {
      +      "const": "a2a2p-supplier-request"
      +    },
      +    "profile_version": {
      +      "const": "1.0.0-draft"
      +    },
      +    "provenance": {
      +      "additionalProperties": true,
      +      "properties": {
      +        "human_reviewed_before_sending": {
      +          "type": "boolean"
      +        },
      +        "note": {
      +          "type": "string"
      +        },
      +        "originator": {
      +          "const": "automated_agent_via_a2a2p"
      +        }
      +      },
      +      "required": [
      +        "originator",
      +        "human_reviewed_before_sending",
      +        "note"
      +      ],
      +      "type": "object"
      +    },
      +    "request": {
      +      "additionalProperties": true,
      +      "properties": {
      +        "compliance": {
      +          "items": {
      +            "type": "string"
      +          },
      +          "type": "array"
      +        },
      +        "dimensions": {
      +          "type": [
      +            "object",
      +            "null"
      +          ]
      +        },
      +        "environment": {
      +          "items": {
      +            "type": "string"
      +          },
      +          "type": "array"
      +        },
      +        "material": {
      +          "type": [
      +            "string",
      +            "null"
      +          ]
      +        },
      +        "part_type": {
      +          "type": [
      +            "string",
      +            "null"
      +          ]
      +        },
      +        "post_processing": {
      +          "items": {
      +            "type": "string"
      +          },
      +          "type": "array"
      +        },
      +        "process": {
      +          "type": [
      +            "string",
      +            "null"
      +          ]
      +        },
      +        "purpose": {
      +          "type": [
      +            "string",
      +            "null"
      +          ]
      +        },
      +        "quantity": {
      +          "minimum": 1,
      +          "type": [
      +            "integer",
      +            "null"
      +          ]
      +        },
      +        "surface_finish": {
      +          "type": [
      +            "string",
      +            "null"
      +          ]
      +        },
      +        "timeline": {
      +          "type": [
      +            "string",
      +            "null"
      +          ]
      +        },
      +        "tolerance_class": {
      +          "type": [
      +            "string",
      +            "null"
      +          ]
      +        }
      +      },
      +      "required": [
      +        "purpose",
      +        "quantity",
      +        "timeline",
      +        "environment",
      +        "part_type",
      +        "material",
      +        "process",
      +        "tolerance_class",
      +        "dimensions",
      +        "surface_finish",
      +        "post_processing",
      +        "compliance"
      +      ],
      +      "type": "object"
      +    },
      +    "screening": {
      +      "additionalProperties": true,
      +      "properties": {
      +        "policy_url": {
      +          "pattern": "^https://",
      +          "type": "string"
      +        },
      +        "policy_version": {
      +          "type": "string"
      +        },
      +        "stage": {
      +          "const": "quote"
      +        },
      +        "verdict": {
      +          "enum": [
      +            "allow",
      +            "review",
      +            "deny"
      +          ]
      +        }
      +      },
      +      "required": [
      +        "verdict",
      +        "stage",
      +        "policy_version",
      +        "policy_url"
      +      ],
      +      "type": "object"
      +    },
      +    "specification_url": {
      +      "pattern": "^https://",
      +      "type": "string"
      +    },
      +    "what_is_requested": {
      +      "additionalProperties": true,
      +      "properties": {
      +        "action": {
      +          "const": "price_and_lead_time"
      +        },
      +        "not_an_order": {
      +          "const": true
      +        },
      +        "note": {
      +          "type": "string"
      +        }
      +      },
      +      "required": [
      +        "action",
      +        "not_an_order",
      +        "note"
      +      ],
      +      "type": "object"
      +    }
      +  },
      +  "required": [
      +    "profile",
      +    "profile_version",
      +    "specification_url",
      +    "request",
      +    "geometry",
      +    "commercial",
      +    "provenance",
      +    "gaps",
      +    "already_checked",
      +    "screening",
      +    "what_is_requested",
      +    "delivery",
      +    "delivery_requirements"
      +  ],
      +  "title": "a2a2p supplier request package",
      +  "type": "object",
      +  "x-a2a2p-projection": {
      +    "field_origins": {
      +      "gaps": "derived from absent or insufficient quote-critical requirement fields",
      +      "geometry": "derived description of declared design-file references",
      +      "provenance": "derived projection metadata plus caller-declared delivery context",
      +      "request": "declared requirement fields, projected without invention",
      +      "screening": "derived by quote-stage screening of the same caller-held requirement"
      +    },
      +    "lifecycle": "derived_at_read",
      +    "source_of_truth": "caller-held a2a2p requirement plus the deterministic review produced from that requirement"
      +  }
      +}
  11. Added

TDQS

A4.2/5.0
Behavior5/5

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

No annotations exist, so the description carries the full burden and does it well: it discloses the deterministic SHA-256 artifact_identity, that the digest proves identity only and not receipt/quote/payment/fabrication, the eligibility lane criteria, the rejection reason_code/vocabulary/next_action contract, and a full statelessness and authority disclaimer. This is far beyond what the schema or lack of annotations provides.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loads the precondition as a clear first sentence, which is good, but the paragraph runs long and mixes preconditions, identity digest, eligibility lane specifics, and rejection vocabulary into one dense block. Every sentence arguably earns its place, but the density hurts readability and front-loading beyond the opening.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema present, return-value detail is not required, and the description appropriately covers authority limits, statelessness, the precondition, and rejection behavior. The gap is the absence of any pointer to output schema availability or guidance on interpreting the quote_stage_eligibility receipt beyond its name.

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 description coverage is 100% and the schema already documents all 12 parameters, including intent.purpose, quantity, and specification.assembly (via schema). The description adds the purpose precondition and the assembly>=2 decomposition rule, which are genuine semantics not in the schema, but the baseline for full coverage is 3 and the description does not compensate for anything missing.

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?

States a specific verb and artifact: 'build a synchronous, deterministic supplier request package from the requirement the caller already holds,' naming the a2a2p supplier profile. Distinguishes itself by routing to the rejection contract for unbuildable packages. Not fully differentiated from siblings like request_physical_solution or get_supply_options, which are not mentioned.

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?

Gives an explicit precondition (purpose must already be supplied), a fallback instruction for when it is absent (ask the requester, never infer), and triggers for non-invocation (assembly with two or more parts returns decomposition_required). No alternatives among the 27 siblings are named, but the when/when-not conditions are unusually complete.

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