Skip to main content
Glama

Get signed proof you deliberated

attest
Read-onlyIdempotent

Sign a self-contained record (a compact JWS, EdDSA) that this question, this working and this resolution were submitted on this date, with what the shape check found; it runs the same check as deliberate_check inside and signs either way. Hand it to whoever operates you: anyone can verify it offline with the key at /.well-known/attestation-keys.json, or by calling verify_attestation. It is not a certificate that your answer was good, and the payload says so. Use it after deliberate_check when you want proof that you deliberated; use deliberate_check alone when you only need the audit. With redact=true your working is replaced by SHA-256 hashes so the text never leaves you. Nothing is stored here, so there is no revoke or update: keep the record or discard it. No key needed.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
redactNofalse (default): the record carries your answers and resolution in clear; true: it carries SHA-256 hashes of them instead, so the text stays with you and a reader can only confirm a match
answersNoyour answers keyed by the must_answer ids from deliberate (tension, cost, falsifier, human_knowledge, directive-N); these are what gets signed, or hashed when redact=true
questionYesthe question you deliberated, same text as before
resolutionYeswhat you decided, one or two sentences; signed verbatim

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
noteNokeep it: the site stored nothing
storedNoalways false
payloadYes
attestationYesthe record as a compact JWS: three base64url segments separated by dots; this is what you keep and hand on
verify_withNoURL of the public keys

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed12 schema fields changed
    • addedInput schema / properties / answers / additionalProperties
      Added value: +{
      +  "type": "string"
      +}
    • changedInput schema / properties / answers / description
      Previous value: -"your answers, same keys as deliberate_check"New value: +"your answers keyed by the must_answer ids from deliberate (tension, cost, falsifier, human_knowledge, directive-N); these are what gets signed, or hashed when redact=true"
    • addedInput schema / properties / answers / properties
      Added value: +{
      +  "cost": {
      +    "description": "what your resolution costs, and who bears it",
      +    "type": "string"
      +  },
      +  "falsifier": {
      +    "description": "what would show your resolution was wrong",
      +    "type": "string"
      +  },
      +  "human_knowledge": {
      +    "description": "what the human side knows here that you do not",
      +    "type": "string"
      +  },
      +  "tension": {
      +    "description": "which Directives are in tension and why",
      +    "type": "string"
      +  }
      +}
    • changedInput schema / properties / question / description
      Previous value: -"the question"New value: +"the question you deliberated, same text as before"
    • addedInput schema / properties / question / maxLength
      Added value: +20000
    • addedInput schema / properties / question / minLength
      Added value: +1
    • addedInput schema / properties / redact / default
      Added value: +false
    • changedInput schema / properties / redact / description
      Previous value: -"sign hashes of your working instead of the text"New value: +"false (default): the record carries your answers and resolution in clear; true: it carries SHA-256 hashes of them instead, so the text stays with you and a reader can only confirm a match"
    • changedInput schema / properties / resolution / description
      Previous value: -"what you decided"New value: +"what you decided, one or two sentences; signed verbatim"
    • addedInput schema / properties / resolution / maxLength
      Added value: +20000
    • addedInput schema / properties / resolution / minLength
      Added value: +1
    • changedOutput schema / (root)
      Previous value: -nullNew value: +{
      +  "additionalProperties": true,
      +  "properties": {
      +    "attestation": {
      +      "description": "the record as a compact JWS: three base64url segments separated by dots; this is what you keep and hand on",
      +      "type": "string"
      +    },
      +    "note": {
      +      "description": "keep it: the site stored nothing",
      +      "type": "string"
      +    },
      +    "payload": {
      +      "additionalProperties": true,
      +      "properties": {
      +        "claim": {
      +          "description": "what the site attests",
      +          "type": "string"
      +        },
      +        "directives_in_tension": {
      +          "description": "",
      +          "items": {
      +            "type": "string"
      +          },
      +          "type": "array"
      +        },
      +        "iat": {
      +          "description": "issued at, Unix seconds",
      +          "type": "integer"
      +        },
      +        "iss": {
      +          "description": "issuer site URL",
      +          "type": "string"
      +        },
      +        "jti": {
      +          "description": "record id",
      +          "type": "string"
      +        },
      +        "kind": {
      +          "description": "polderchain-deliberation",
      +          "type": "string"
      +        },
      +        "not_checked": {
      +          "description": "what it does not attest",
      +          "type": "string"
      +        },
      +        "observed": {
      +          "additionalProperties": true,
      +          "properties": {
      +            "addressed": {
      +              "description": "Directive ids addressed",
      +              "items": {
      +                "type": "string"
      +              },
      +              "type": "array"
      +            },
      +            "missing": {
      +              "description": "gaps the shape check found, {what, id}",
      +              "items": {
      +                "additionalProperties": true,
      +                "properties": {
      +                  "id": {
      +                    "description": "",
      +                    "type": "string"
      +                  },
      +                  "what": {
      +                    "description": "",
      +                    "type": "string"
      +                  }
      +                },
      +                "type": "object"
      +              },
      +              "type": "array"
      +            },
      +            "needs_human": {
      +              "type": "boolean"
      +            },
      +            "shape_complete": {
      +              "type": "boolean"
      +            }
      +          },
      +          "type": "object"
      +        },
      +        "question": {
      +          "description": "",
      +          "type": "string"
      +        },
      +        "redacted": {
      +          "type": "boolean"
      +        },
      +        "resolution": {
      +          "description": "verbatim, or its hash when redacted",
      +          "type": "string"
      +        },
      +        "verify": {
      +          "description": "URL of the public keys",
      +          "type": "string"
      +        }
      +      },
      +      "type": "object"
      +    },
      +    "stored": {
      +      "description": "always false",
      +      "type": "boolean"
      +    },
      +    "verify_with": {
      +      "description": "URL of the public keys",
      +      "type": "string"
      +    }
      +  },
      +  "required": [
      +    "attestation",
      +    "payload"
      +  ],
      +  "type": "object"
      +}
  2. First observed

TDQS

Score is being calculated.

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.