Skip to main content
Glama

fahce_plan_bounded_repair

Idempotent

Discover correction planning via x402 POST /api/v1/repair. Returns an evidence-preserving proposal and receipt. Example: correct a contradicted success claim.

Input Schema

NameRequiredDescriptionDefault
requestYesREST body only; maximum 524288 UTF-8 bytes for the complete serialized body. Field limits also apply.
idempotency_keyNoREST retry key; reuse only for identical operation, input, and authorization.

Output Schema

NameRequiredDescriptionDefault
repairYes
schemaYes
billingYes
bindingNo
receiptYes
authorityNo
diagnosisYes
operationYes
input_hashYes
request_idYesDetermination ID; equals receipt.case_id/run_id and identifies the saved receipt. Error request_id is a separate trace.
attestationNo
verificationYes
execution_stateNo
next_safe_actionYes
evidence_provenanceNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed4 schema fields changed
    • changedInput schema / examples
      Previous value: -[
      -  {
      -    "request": {
      -      "candidate_output": "Deployment completed successfully.",
      -      "evidence": [
      -        {
      -          "id": "deployment_log",
      -          "kind": "log",
      -          "source_label": "independent deployment log",
      -          "text": "Deployment failed."
      -        }
      -      ],
      -      "schema": "FAHCE_MACHINE_REQUEST_V1"
      -    }
      -  }
      -]New value: +[
      +  {
      +    "request": {
      +      "candidate_output": "Deployment completed successfully.",
      +      "evidence": [
      +        {
      +          "id": "deployment_log",
      +          "kind": "log",
      +          "source_label": "caller-supplied deployment log",
      +          "text": "Deployment failed."
      +        }
      +      ],
      +      "schema": "FAHCE_MACHINE_REQUEST_V1"
      +    }
      +  }
      +]
    • changedInput schema / properties / idempotency_key / description
      Previous value: -"Optional REST Idempotency-Key. Reuse only with unchanged operation, input, and authorization; recover saved results after uncertain delivery."New value: +"REST retry key; reuse only for identical operation, input, and authorization."
    • changedInput schema / properties / request / description
      Previous value: -"Send this request object alone to the paid REST endpoint. Entire JSON must fit 524288 UTF-8 bytes, including MCP wrapper, labels and escaping; per-field ceilings cannot all be used together. Character limits use UTF-16 code units."New value: +"REST body only; maximum 524288 UTF-8 bytes for the complete serialized body. Field limits also apply."
    • changedOutput schema / properties / request_id / description
      Previous value: -"Determination UUID, identical to receipt.case_id and receipt.run_id. Use this UUID as receipt_id in GET /api/v1/receipts/{receipt_id}. Error-envelope request_id is a separate HTTP trace; use its receipt_id when present."New value: +"Determination ID; equals receipt.case_id/run_id and identifies the saved receipt. Error request_id is a separate trace."
  2. Changed2 schema fields changed
    • addedInput schema / examples
      Added value: +[
      +  {
      +    "request": {
      +      "candidate_output": "Deployment completed successfully.",
      +      "evidence": [
      +        {
      +          "id": "deployment_log",
      +          "kind": "log",
      +          "source_label": "independent deployment log",
      +          "text": "Deployment failed."
      +        }
      +      ],
      +      "schema": "FAHCE_MACHINE_REQUEST_V1"
      +    }
      +  }
      +]
    • changedInput schema / properties / idempotency_key / description
      Previous value: -"Optional REST Idempotency-Key; bind unchanged operation, input and authorization. Reuse conflicts on changes; recover saved results instead of paying again."New value: +"Optional REST Idempotency-Key. Reuse only with unchanged operation, input, and authorization; recover saved results after uncertain delivery."
  3. Changed12 schema fields changed
    • removedInput schema / examples
      Removed value: -[
      -  {
      -    "request": {
      -      "candidate_output": "Deployment completed successfully.",
      -      "evidence": [
      -        {
      -          "id": "deployment_log",
      -          "kind": "log",
      -          "source_label": "independent deployment log",
      -          "text": "Deployment failed."
      -        }
      -      ],
      -      "schema": "FAHCE_MACHINE_REQUEST_V1"
      -    }
      -  }
      -]
    • changedInput schema / properties / idempotency_key / description
      Previous value: -"Optional REST Idempotency-Key. Reuse only with unchanged operation, input, and authorization; recover saved results after uncertain delivery."New value: +"Optional REST Idempotency-Key; bind unchanged operation, input and authorization. Reuse conflicts on changes; recover saved results instead of paying again."
    • changedInput schema / properties / request / description
      Previous value: -"Answer and supporting records for REST review. Whole request: 524288 UTF-8 bytes including the MCP wrapper; character limits use UTF-16 code units."New value: +"Send this request object alone to the paid REST endpoint. Entire JSON must fit 524288 UTF-8 bytes, including MCP wrapper, labels and escaping; per-field ceilings cannot all be used together. Character limits use UTF-16 code units."
    • changedInput schema / properties / request / properties / candidate_output / description
      Previous value: -"Answer to diagnose, correct, or recheck; for Verify, supply the revised answer."New value: +"The exact candidate output to diagnose or verify. Never use payment evidence as semantic evidence."
    • changedInput schema / properties / request / properties / evidence / description
      Previous value: -"Up to 12 caller-supplied records. No sources are fetched or authenticated; an empty list provides no corroboration."New value: +"Caller-supplied records; sources are not authenticated or fetched. An empty array supplies no corroboration."
    • changedInput schema / properties / request / properties / evidence / items / properties / claim_bearing / description
      Previous value: -"True treats this record as claims to check. False or omission does not override candidate-source labels."New value: +"True marks candidate claims, not corroboration. False or omission does not override candidate-source labels."
    • changedInput schema / properties / request / properties / evidence / items / properties / id / description
      Previous value: -"Unique evidence reference within this request, such as deployment_log."New value: +"Unique evidence identifier within this request."
    • changedInput schema / properties / request / properties / evidence / items / properties / kind / description
      Previous value: -"How this record is represented: log, pasted text, document, or description; this does not set its trust level."New value: +"Record format category, not a trust level."
    • changedInput schema / properties / request / properties / evidence / items / properties / source_label / description
      Previous value: -"Record attribution, such as deployment log; candidate/output labels identify claims rather than independent corroboration."New value: +"Source attribution; candidate/output labels mark untrusted claims, not independent proof."
    • changedInput schema / properties / request / properties / evidence / items / properties / text / description
      Previous value: -"Record content used to assess the answer; payment authorization is not semantic evidence."New value: +"Record content to review; never payment authorization as semantic proof."
    • changedInput schema / properties / request / properties / expected_output / description
      Previous value: -"Optional format directives or correction target; factual text here is not corroborating evidence."New value: +"Optional format/constraint and repair-target context for all operations, including Diagnose. Recognized directives (e.g. Return JSON) can affect diagnosis. Factual text is not compared for string equality or trusted as evidence; supply independent records."
    • changedInput schema / properties / request / properties / schema / description
      Previous value: -"Exact FAHCE request contract identifier."New value: +"Request contract identifier; use this exact value."
  4. Changed12 schema fields changed
    • addedInput schema / examples
      Added value: +[
      +  {
      +    "request": {
      +      "candidate_output": "Deployment completed successfully.",
      +      "evidence": [
      +        {
      +          "id": "deployment_log",
      +          "kind": "log",
      +          "source_label": "independent deployment log",
      +          "text": "Deployment failed."
      +        }
      +      ],
      +      "schema": "FAHCE_MACHINE_REQUEST_V1"
      +    }
      +  }
      +]
    • changedInput schema / properties / idempotency_key / description
      Previous value: -"Optional REST Idempotency-Key; bind unchanged operation, input and authorization. Reuse conflicts on changes; recover saved results instead of paying again."New value: +"Optional REST Idempotency-Key. Reuse only with unchanged operation, input, and authorization; recover saved results after uncertain delivery."
    • changedInput schema / properties / request / description
      Previous value: -"Send this request object alone to the paid REST endpoint. Entire JSON must fit 524288 UTF-8 bytes, including MCP wrapper, labels and escaping; per-field ceilings cannot all be used together. Character limits use UTF-16 code units."New value: +"Answer and supporting records for REST review. Whole request: 524288 UTF-8 bytes including the MCP wrapper; character limits use UTF-16 code units."
    • changedInput schema / properties / request / properties / candidate_output / description
      Previous value: -"The exact candidate output to diagnose or verify. Never use payment evidence as semantic evidence."New value: +"Answer to diagnose, correct, or recheck; for Verify, supply the revised answer."
    • changedInput schema / properties / request / properties / evidence / description
      Previous value: -"Caller-supplied records; sources are not authenticated or fetched. An empty array supplies no corroboration."New value: +"Up to 12 caller-supplied records. No sources are fetched or authenticated; an empty list provides no corroboration."
    • changedInput schema / properties / request / properties / evidence / items / properties / claim_bearing / description
      Previous value: -"True marks candidate claims, not corroboration. False or omission does not override candidate-source labels."New value: +"True treats this record as claims to check. False or omission does not override candidate-source labels."
    • changedInput schema / properties / request / properties / evidence / items / properties / id / description
      Previous value: -"Unique evidence identifier within this request."New value: +"Unique evidence reference within this request, such as deployment_log."
    • changedInput schema / properties / request / properties / evidence / items / properties / kind / description
      Previous value: -"Record format category, not a trust level."New value: +"How this record is represented: log, pasted text, document, or description; this does not set its trust level."
    • changedInput schema / properties / request / properties / evidence / items / properties / source_label / description
      Previous value: -"Source attribution; candidate/output labels mark untrusted claims, not independent proof."New value: +"Record attribution, such as deployment log; candidate/output labels identify claims rather than independent corroboration."
    • changedInput schema / properties / request / properties / evidence / items / properties / text / description
      Previous value: -"Record content to review; never payment authorization as semantic proof."New value: +"Record content used to assess the answer; payment authorization is not semantic evidence."
    • changedInput schema / properties / request / properties / expected_output / description
      Previous value: -"Optional format/constraint and repair-target context for all operations, including Diagnose. Recognized directives (e.g. Return JSON) can affect diagnosis. Factual text is not compared for string equality or trusted as evidence; supply independent records."New value: +"Optional format directives or correction target; factual text here is not corroborating evidence."
    • changedInput schema / properties / request / properties / schema / description
      Previous value: -"Request contract identifier; use this exact value."New value: +"Exact FAHCE request contract identifier."
  5. Changed4 schema fields changed
    • addedOutput schema / allOf
      Added value: +[
      +  {
      +    "if": {
      +      "properties": {
      +        "receipt": {
      +          "properties": {
      +            "response_hash_scheme": {
      +              "const": "SHA256_SORTED_JSON_RESPONSE_WITHOUT_ATTESTATION_V3"
      +            }
      +          },
      +          "required": [
      +            "response_hash_scheme"
      +          ]
      +        }
      +      },
      +      "required": [
      +        "receipt"
      +      ]
      +    },
      +    "then": {
      +      "required": [
      +        "attestation"
      +      ]
      +    }
      +  }
      +]
    • addedOutput schema / properties / attestation
      Added value: +{
      +  "additionalProperties": false,
      +  "properties": {
      +    "binding": {
      +      "properties": {
      +        "engine_version": {
      +          "type": "string"
      +        },
      +        "input_hash": {
      +          "type": "string"
      +        },
      +        "issued_at": {
      +          "type": "integer"
      +        },
      +        "nonce": {
      +          "type": "string"
      +        },
      +        "request_id": {
      +          "type": "string"
      +        },
      +        "response_hash": {
      +          "type": "string"
      +        },
      +        "schema": {
      +          "const": "FAHCE_MACHINE_RESULT_BINDING_V1"
      +        },
      +        "scope": {
      +          "const": "CONFIDENTIAL_DETERMINISTIC_COMPUTATION"
      +        }
      +      },
      +      "required": [
      +        "schema",
      +        "nonce",
      +        "request_id",
      +        "input_hash",
      +        "response_hash",
      +        "engine_version",
      +        "issued_at",
      +        "scope"
      +      ],
      +      "type": "object"
      +    },
      +    "maa_token": {
      +      "description": "Microsoft-signed MAA JWT; verify against the published trust material and exact response binding.",
      +      "type": "string"
      +    },
      +    "policy_sha256": {
      +      "pattern": "^[a-f0-9]{64}$",
      +      "type": "string"
      +    },
      +    "schema": {
      +      "const": "FAHCE_MACHINE_ATTESTATION_V1"
      +    }
      +  },
      +  "required": [
      +    "schema",
      +    "policy_sha256",
      +    "binding",
      +    "maa_token"
      +  ],
      +  "type": "object"
      +}
    • changedOutput schema / properties / receipt / properties / hash_scheme / enum
      Previous value: -[
      -  "SHA256_CANONICAL_JSON_RESULT_WITH_EMPTY_RESULT_HASH_V1",
      -  "SHA256_SORTED_JSON_RESULT_WITH_EMPTY_RESULT_HASH_V2"
      -]New value: +[
      +  "SHA256_CANONICAL_JSON_RESULT_WITH_EMPTY_RESULT_HASH_V1",
      +  "SHA256_SORTED_JSON_RESULT_WITH_EMPTY_RESULT_HASH_V2",
      +  "SHA256_SORTED_JSON_RESULT_WITHOUT_ATTESTATION_V3"
      +]
    • changedOutput schema / properties / receipt / properties / response_hash_scheme / enum
      Previous value: -[
      -  "SHA256_JSON_RESPONSE_WITH_EMPTY_RESPONSE_HASH_V1",
      -  "SHA256_SORTED_JSON_RESPONSE_WITH_EMPTY_RESPONSE_HASH_V2"
      -]New value: +[
      +  "SHA256_JSON_RESPONSE_WITH_EMPTY_RESPONSE_HASH_V1",
      +  "SHA256_SORTED_JSON_RESPONSE_WITH_EMPTY_RESPONSE_HASH_V2",
      +  "SHA256_SORTED_JSON_RESPONSE_WITHOUT_ATTESTATION_V3"
      +]
  6. Changed10 schema fields changed
    • addedInput schema / properties / idempotency_key / description
      Added value: +"Optional REST Idempotency-Key; bind unchanged operation, input and authorization. Reuse conflicts on changes; recover saved results instead of paying again."
    • changedInput schema / properties / request / description
      Previous value: -"The entire UTF-8 encoded JSON body must fit within 524288 bytes (512 KiB), including all fields, labels, escaping and JSON overhead. Per-field maxima are independent ceilings; they cannot all be used at once. MCP includes its JSON-RPC wrapper in the same body ceiling. Character limits are UTF-16 code units."New value: +"Send this request object alone to the paid REST endpoint. Entire JSON must fit 524288 UTF-8 bytes, including MCP wrapper, labels and escaping; per-field ceilings cannot all be used together. Character limits use UTF-16 code units."
    • addedInput schema / properties / request / properties / evidence / description
      Added value: +"Caller-supplied records; sources are not authenticated or fetched. An empty array supplies no corroboration."
    • addedInput schema / properties / request / properties / evidence / items / properties / claim_bearing / description
      Added value: +"True marks candidate claims, not corroboration. False or omission does not override candidate-source labels."
    • addedInput schema / properties / request / properties / evidence / items / properties / id / description
      Added value: +"Unique evidence identifier within this request."
    • addedInput schema / properties / request / properties / evidence / items / properties / kind / description
      Added value: +"Record format category, not a trust level."
    • addedInput schema / properties / request / properties / evidence / items / properties / source_label / description
      Added value: +"Source attribution; candidate/output labels mark untrusted claims, not independent proof."
    • addedInput schema / properties / request / properties / evidence / items / properties / text / description
      Added value: +"Record content to review; never payment authorization as semantic proof."
    • changedInput schema / properties / request / properties / expected_output / description
      Previous value: -"Optional response-contract and repair-target context for all operations, including Diagnose. Supported response-format directives (for example, Return JSON) and implemented explicit constraints can affect the diagnosis. Ordinary matching or mismatching factual text is not compared for string equality and is not a trusted answer oracle or supporting evidence; supply independent evidence for factual claims."New value: +"Optional format/constraint and repair-target context for all operations, including Diagnose. Recognized directives (e.g. Return JSON) can affect diagnosis. Factual text is not compared for string equality or trusted as evidence; supply independent records."
    • addedInput schema / properties / request / properties / schema / description
      Added value: +"Request contract identifier; use this exact value."
  7. First observed

TDQS

C2.9/5.0
Behavior3/5

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

Annotations already declare idempotentHint=true, destructiveHint=false, and readOnlyHint=false. The description adds real value by signaling an x402 POST (i.e., a paid, non-read-only endpoint) and stating the return shape ('evidence-preserving proposal and receipt'). However, it never states that a payment/authorization step is required or what it costs, which is the key behavioral fact for an x402 endpoint.

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

Conciseness4/5

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

Three short sentences with no padding, and the purpose is front-loaded before the example. The endpoint path is arguably noise for an agent, but overall it is tight and efficiently structured.

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

Completeness3/5

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

An output schema exists, so return values needn't be spelled out, and the nested request schema is thoroughly documented. What is missing for this complex, paid, multi-stage workflow is the placement relative to siblings and the payment/authorization prerequisite.

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 nested schema documents schema constant, evidence items, candidate_output, and idempotency_key in detail. The description adds no parameter-level meaning beyond the schema, so baseline 3 applies.

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

Purpose3/5

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

The description names a resource (correction planning) and an example use case (correcting a contradicted success claim), but the verb 'Discover' is vague and the HTTP endpoint reference ('x402 POST /api/v1/repair') does little to clarify intent. It never distinguishes this planning step from siblings like fahce_diagnose_integrity, fahce_integrity_repair_bundle, or fahce_verify_repaired_output.

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

Usage Guidelines2/5

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

There is a single example of when the tool might apply, but no explicit when-to-use or when-not-to-use guidance, and no routing against the three sibling tools that cover adjacent stages (diagnose, bundle, verify). The agent must infer the workflow position of this 'plan' step.

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