Skip to main content
Glama

a2a2p — Agent-to-Agent-to-Physical

review_specification

Current file inspection governs geometry readiness: expired, unreadable, mismatched, unsuccessfully parsed or uninspected attachments prevent quote-ready status. Reattach the original file and review again. Instant, synchronous engineering review of a physical requirement — nothing is submitted or stored. Purpose prose is preserved as intent but is not silently converted into loads, geometry, environments, interfaces, or acceptance criteria. The versioned engineering_evaluation receipt lists canonical paths and exact checks run, reports not_evaluated when none ran, and denies engineering-validation, certification, physical-truth, supplier-acceptance, and fabrication authority. Its finding-penalty score is not engineering soundness. Deterministic checks: material identification with handbook-typical properties (density, stiffness, yield, service temperature), explicit rectangular beam deflection, nominal bending stress, and nominal transverse shear with requester-defined acceptance criteria, material/process compatibility, tolerance-vs-process reality, quantity economics (e.g. tooling amortization), environment fit (UV, saltwater, food contact, temperature, medical), flexibility fit, post-processing validity, design-file format fit, and specification completeness. Every matched material reference identifies the current table as an uncited compilation and explicitly denies source verification, exact-state verification, design-allowable use, and simulation eligibility. A criterion that depends on that reference remains not_evaluated; its numerical comparison is reference_only, never a pass, failure, or blocker. Every supplied limit or strength basis is labeled requester_assertion, and every criterion verdict is explicitly conditional on declared inputs and the bounded model—not engineering validation or design certification. Returns findings ranked blocker/warning/info, two readiness scores, and a deterministic clarification_plan: compact next_fields, visible remaining_fields, optional CAD accelerators, an intent-only resolution handoff, next_call with the recommended exact MCP/REST continuation, and continuation_options for explicitly eligible operations: design_brief for complete intent without specifications, or budgetary_pricing and supplier_handoff for a complete specification. Examples are shapes, never invented defaults. For a decomposed design, send specification.assembly with parts and interfaces: a2a2p then checks galvanic pairing and interface fit across parts, which a single-part review cannot, and prices each part separately. Two or more explicitly declared parts always classify as assembly_or_system and can never become quote_ready as one part, regardless of purpose wording or top-level part fields. Undeclared interfaces are unchecked — nothing is inferred. CHECK intake_classification first. a2a2p reviews one manufacturable part at a time; a request naming a behaviour rather than an object ("a device that detects and removes debris") is classified capability_concept and redirected to decomposition, because no material or tolerance can be derived from it. The classification is advisory, never blocks, and defers to any supplied specification. READ resolution_readiness, not quote_readiness, while you are still answering questions. quote_readiness is supplier-facing and stays capped by material/process/dimensions/tolerance that a2a2p derives for you, so it cannot reach quote_ready from intent alone however much you supply. resolution_readiness measures only what the requester owns and reaches ready_to_resolve once you have supplied enough to derive a specification — which is not a supplier quote. completeness.awaiting_requester and completeness.derivable_by_resolution say which fields are whose. Accepts the same input as request_physical_solution (structured intent/specification or legacy flat fields). Forward-compatible fields remain accepted, but uninterpreted_fields names every supplied path in the declared review scope whose value did not influence deterministic engineering checks, uses bounded and privacy-safe RFC 6901 JSON Pointers, caps unqualified ready grades, and provides non-inferential repair guidance; never read HTTP success alone as proof that every field was understood. For intent_only, complete requester context leads to submit_for_specification_resolution; for a supplied specification, apply only facts you know, re-review until quote_ready, then submit if a durable resolution is useful.

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.
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
engineering_evaluationYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field 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"
      +]
  2. Changed1 schema field changed
    • changedOutput schema / (root)
      Previous value: -nullNew value: +{
      +  "additionalProperties": true,
      +  "properties": {
      +    "engineering_evaluation": {
      +      "$comment": "JSON Schema constrains the portable envelope. Consumers must also run the semantic validator for deterministic sorting, status/check consistency, exact finding-penalty arithmetic, and the non-authority boundary.",
      +      "$id": "https://a2a2p.com/schema/engineering-evaluation",
      +      "$schema": "https://json-schema.org/draft/2020-12/schema",
      +      "additionalProperties": false,
      +      "properties": {
      +        "authority": {
      +          "additionalProperties": false,
      +          "properties": {
      +            "design_certification": {
      +              "const": false
      +            },
      +            "engineering_validation": {
      +              "const": false
      +            },
      +            "fabrication": {
      +              "const": false
      +            },
      +            "physical_truth": {
      +              "const": false
      +            },
      +            "supplier_acceptance": {
      +              "const": false
      +            }
      +          },
      +          "required": [
      +            "engineering_validation",
      +            "design_certification",
      +            "physical_truth",
      +            "supplier_acceptance",
      +            "fabrication"
      +          ],
      +          "type": "object"
      +        },
      +        "canonical_input_paths_present": {
      +          "items": {
      +            "minLength": 1,
      +            "pattern": "^/",
      +            "type": "string"
      +          },
      +          "type": "array",
      +          "uniqueItems": true
      +        },
      +        "checks_run": {
      +          "items": {
      +            "minLength": 1,
      +            "pattern": "^\\S",
      +            "type": "string"
      +          },
      +          "type": "array",
      +          "uniqueItems": true
      +        },
      +        "contract": {
      +          "const": "a2a2p.engineering-evaluation"
      +        },
      +        "finding_counts": {
      +          "additionalProperties": false,
      +          "properties": {
      +            "blocker": {
      +              "minimum": 0,
      +              "type": "integer"
      +            },
      +            "info": {
      +              "minimum": 0,
      +              "type": "integer"
      +            },
      +            "warning": {
      +              "minimum": 0,
      +              "type": "integer"
      +            }
      +          },
      +          "required": [
      +            "blocker",
      +            "warning",
      +            "info"
      +          ],
      +          "type": "object"
      +        },
      +        "finding_penalty_score": {
      +          "maximum": 100,
      +          "minimum": 0,
      +          "type": "integer"
      +        },
      +        "interpretation": {
      +          "minLength": 1,
      +          "pattern": "\\S",
      +          "type": "string"
      +        },
      +        "purpose_constraints_extracted": {
      +          "const": false
      +        },
      +        "status": {
      +          "enum": [
      +            "not_evaluated",
      +            "partial"
      +          ]
      +        },
      +        "version": {
      +          "const": "1.0.0"
      +        }
      +      },
      +      "required": [
      +        "contract",
      +        "version",
      +        "status",
      +        "canonical_input_paths_present",
      +        "checks_run",
      +        "purpose_constraints_extracted",
      +        "finding_penalty_score",
      +        "finding_counts",
      +        "interpretation",
      +        "authority"
      +      ],
      +      "title": "a2a2p engineering-evaluation receipt",
      +      "type": "object",
      +      "x-a2a2p-semantic-invariants": {
      +        "authority_values": false,
      +        "deterministic_arrays": "canonical_input_paths_present and checks_run are unique and lexicographically sorted.",
      +        "finding_penalty_formula": "max(0, 100 - 25*blocker - 12*warning - 4*info)",
      +        "profile": "https://a2a2p.com/profile/engineering-evaluation",
      +        "purpose_constraints_extracted": false,
      +        "status_checks": "not_evaluated requires zero checks_run entries; partial requires one or more."
      +      }
      +    }
      +  },
      +  "required": [
      +    "engineering_evaluation"
      +  ],
      +  "type": "object"
      +}
  3. 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"
      +}
  4. 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"
  5. Changed4 schema fields changed
    • changedInput schema / properties / specification / properties / design_files / description
      Previous value: -"STEP/STL/DXF file references."New value: +"Temporary or externally hosted manufacturing file references ({url, format, optional role}). Accepted upload aliases: stl, step, stp, dxf, pdf; shared downstream ceiling: 8388608 bytes."
    • addedInput schema / properties / specification / properties / design_files / items / properties / format / enum
      Added value: +[
      +  "stl",
      +  "step",
      +  "stp",
      +  "dxf",
      +  "pdf"
      +]
    • addedInput schema / properties / specification / properties / design_files / items / properties / role
      Added value: +{
      +  "enum": [
      +    "geometry",
      +    "drawing",
      +    "reference"
      +  ],
      +  "type": "string"
      +}
    • addedInput schema / properties / specification / properties / design_files / items / required
      Added value: +[
      +  "url",
      +  "format"
      +]
  6. Changed5 schema fields changed
    • addedInput schema / anyOf
      Added value: +[
      +  {
      +    "required": [
      +      "requirement"
      +    ]
      +  },
      +  {
      +    "properties": {
      +      "intent": {
      +        "required": [
      +          "purpose"
      +        ]
      +      }
      +    },
      +    "required": [
      +      "intent"
      +    ]
      +  }
      +]
    • addedInput schema / properties / intent / properties / functional_requirements / properties / load_case
      Added value: +{
      +  "description": "Optional bounded structural sanity check. State an explicit static point-load model and rectangular section; height_mm is the bending direction.",
      +  "properties": {
      +    "allowable_stress_mpa": {
      +      "description": "Optional requester-supplied design allowable; never inferred from handbook yield.",
      +      "exclusiveMinimum": 0,
      +      "type": "number"
      +    },
      +    "elastic_modulus_gpa": {
      +      "description": "Optional requester-supplied Young's modulus. Otherwise the matched material handbook reference is used and labeled.",
      +      "exclusiveMinimum": 0,
      +      "type": "number"
      +    },
      +    "load_n": {
      +      "description": "Static point-load magnitude in Newtons.",
      +      "exclusiveMinimum": 0,
      +      "type": "number"
      +    },
      +    "max_deflection_mm": {
      +      "description": "Optional requester-supplied acceptance limit.",
      +      "exclusiveMinimum": 0,
      +      "type": "number"
      +    },
      +    "minimum_factor_of_safety": {
      +      "description": "Optional acceptance criterion; evaluated only with requester-supplied yield_strength_mpa.",
      +      "exclusiveMinimum": 0,
      +      "type": "number"
      +    },
      +    "model": {
      +      "description": "Supported deterministic models: cantilever_end_load or simply_supported_center_load. Other values are preserved but reported as unsupported.",
      +      "examples": [
      +        "cantilever_end_load",
      +        "simply_supported_center_load"
      +      ],
      +      "type": "string"
      +    },
      +    "section": {
      +      "properties": {
      +        "height_mm": {
      +          "description": "Rectangular section depth in the bending direction, millimetres.",
      +          "exclusiveMinimum": 0,
      +          "type": "number"
      +        },
      +        "width_mm": {
      +          "description": "Rectangular section width in millimetres.",
      +          "exclusiveMinimum": 0,
      +          "type": "number"
      +        }
      +      },
      +      "required": [
      +        "width_mm",
      +        "height_mm"
      +      ],
      +      "type": "object"
      +    },
      +    "span_mm": {
      +      "description": "Beam span in millimetres.",
      +      "exclusiveMinimum": 0,
      +      "type": "number"
      +    },
      +    "yield_strength_mpa": {
      +      "description": "Optional exact grade/condition/product-form datasheet value supplied by the requester.",
      +      "exclusiveMinimum": 0,
      +      "type": "number"
      +    }
      +  },
      +  "required": [
      +    "model",
      +    "load_n",
      +    "span_mm",
      +    "section"
      +  ],
      +  "type": "object"
      +}
    • changedInput schema / properties / intent / properties / functional_requirements / properties / max_load / description
      Previous value: -"Maximum load in Newtons."New value: +"Maximum load magnitude. A Newton scalar is preferred; { value, unit: \"N\" } remains accepted."
    • addedInput schema / properties / intent / properties / functional_requirements / properties / max_load / oneOf
      Added value: +[
      +  {
      +    "exclusiveMinimum": 0,
      +    "type": "number"
      +  },
      +  {
      +    "properties": {
      +      "unit": {
      +        "description": "Force unit; N is canonical.",
      +        "type": "string"
      +      },
      +      "value": {
      +        "exclusiveMinimum": 0,
      +        "type": "number"
      +      }
      +    },
      +    "required": [
      +      "value"
      +    ],
      +    "type": "object"
      +  }
      +]
    • removedInput schema / properties / intent / properties / functional_requirements / properties / max_load / type
      Removed value: -"number"
  7. First observed

TDQS

A4.3/5.0
Behavior5/5

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

With no annotations provided, the description carries the full burden and meets it thoroughly. It discloses that 'nothing is submitted or stored,' that the review is not engineering validation or certification, that finding-penalty score is not engineering soundness, and that reference-only comparisons 'never' become pass, failure, or blocker. It also reveals classification as advisory, uninterpreted_fields behavior, and readiness-score semantics. This is unusually transparent about the tool's limits and side effects.

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

Conciseness2/5

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

The description is a dense, unstructured wall of text with no headings or separation of concepts. The actual purpose appears only after opening with file-inspection geometry-readiness prose, so it is not front-loaded. Much of the content is valuable, but the lack of organization and excessive length make it harder for an agent to scan and apply quickly.

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?

Despite its structural weaknesses, the description is remarkably complete for a complex tool with no annotations. It covers deterministic checks, output receipt behavior, readiness-score interpretation, assembly handling, uninterpreted fields, continuation options, and explicit limitations. Since an output schema exists, return-value details do not need to be repeated, and everything else an agent needs to invoke this tool correctly is present.

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

Parameters4/5

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

The input schema already documents all 11 parameters with 100% coverage, so the baseline is 3. The description adds genuine semantic value by stating that the tool 'accepts the same input as request_physical_solution,' including 'structured intent/specification or legacy flat fields,' and by describing the assembly input pattern ('send specification.assembly with parts and interfaces'). It also clarifies how intent-only versus supplied-specification inputs should be interpreted, which goes beyond the schema.

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?

The description clearly identifies the tool as an 'Instant, synchronous engineering review of a physical requirement' performed by a2a2p, and later clarifies it 'reviews one manufacturable part at a time.' This gives a specific verb and resource. It does not explicitly name a sibling tool to differentiate from, but the capability_concept and assembly_or_system distinctions help separate review from other operations.

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?

The description gives explicit directional guidance: 'CHECK intake_classification first,' 'READ resolution_readiness, not quote_readiness, while you are still answering questions,' and 'For a decomposed design, send specification.assembly.' It also explains when a request is 'classified capability_concept and redirected to decomposition' and contrasts intent_only versus supplied-specification continuation paths. This is strong when-to-use guidance with alternatives and exclusions.

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