Skip to main content
Glama

a2a2p — Agent-to-Agent-to-Physical

revise_requirement

Create a new, immutable revision of a prior request by applying only the fields you learned since the first submission. Use this after review_specification returns a clarification_plan: provide the original request_id plus the patch (for example intent.geometric_envelope or specification.material). The original is preserved; the revision receives a new request_id, a fresh spec_review, a revision_of link, and a deterministic readiness_progress comparison against its immediate predecessor. Provide idempotency_key when retrying the same patch so a network retry returns the same revision instead of creating another.

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.
request_idYesThe prior request_id to revise.
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.
revision_noteNoOptional short explanation of what changed.
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.
idempotency_keyNoOptional stable retry key (1–128 characters). Reusing it with the same patch returns the prior revision; reuse with a different patch is rejected.
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.

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
    • 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"
      +}
  3. 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"
  4. 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"
      +]
  5. Changed4 schema fields changed
    • 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"
  6. Added

TDQS

A4.6/5.0
Behavior5/5

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

With no annotations, the description carries full behavioral burden and it delivers: immutability, preservation of the original, new request_id, fresh spec_review, revision_of link, deterministic readiness_progress comparison, and idempotency semantics (same patch returns same revision). This goes well beyond the schema.

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

Conciseness5/5

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

Three dense sentences front-load the core behavior, then workflow trigger, then side effects and idempotency. No redundant restatement of schema fields or filler.

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?

For a 14-parameter, nested, no-output-schema tool, the description covers the necessary workflow, side effects, and retry behavior. However, it does not describe the exact response payload or error cases (e.g., invalid request_id, empty patch), so an agent has to infer those from schema or runtime.

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?

Schema description coverage is 100%, so baseline is 3. The description adds value by framing parameters as a patch ('applying only the fields you learned'), giving concrete examples (intent.geometric_envelope, specification.material), and clarifying idempotency_key's reuse behavior. These meanings are not fully explicit in the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Opens with a specific verb+object: 'Create a new, immutable revision of a prior request.' It also states the exact trigger ('after review_specification returns a clarification_plan'), which differentiates it from sibling request_physical_solution and the review tool itself.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly tells the agent when to invoke it (after review_specification returns a clarification_plan), what to provide (request_id plus patch), and idempotency behavior on retries. It does not explicitly name alternatives or state when not to use it, so it misses the when-not component of a 5.

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