Server definition
- Hash
- sha256:37f8f869a423719e32f751fcb75c18ced02dbcfb56d0922209c9434763ab5f79
- What it is
- What a remote MCP server returned when asked what it offers: 2 tools
The blob, as servednamed by its sha256
{
"instructions": null,
"tools": [
{
"description": "Call this before your agent does something consequential (sends, pays, deletes, publishes, installs or changes access). Pass mandate (the operator's rules; the first matching clause decides) and action (kind, verb, target, optional counterparty and amount). Returns permit, deny or escalate with the governing clause, a reason, an action digest and a signed receipt; treat error as deny. Advisory: it cannot stop an action, and it keeps no request content. To check a new mandate first, call validate_mandate. Examples: inputSchema. Docs: https://hanria.ai/llms.txt",
"inputSchema": {
"additionalProperties": false,
"examples": [
{
"action": {
"justification": "Read the permitted file.",
"operation": {
"kind": "file",
"target": "/tmp/example",
"verb": "read"
},
"requested_by": {
"agent": "example-agent"
},
"schema_version": "0.1-draft"
},
"mandate": {
"clauses": [
{
"effect": "permit",
"id": "permit-file",
"match": {
"kind": [
"file"
]
}
}
],
"default": "deny",
"mandate_id": "minimal-permit",
"purpose": "Permit one file action.",
"schema_version": "0.2-draft"
}
},
{
"action": {
"justification": "Pay the invoiced supplier.",
"operation": {
"amount": {
"currency": "USDC",
"value": "25"
},
"counterparty": "0x2222222222222222222222222222222222222222",
"kind": "transaction",
"target": "eip155:11155111/0x1111111111111111111111111111111111111111/transfer",
"verb": "transfer"
},
"requested_by": {
"agent": "example-agent"
},
"schema_version": "0.1-draft"
},
"mandate": {
"clauses": [
{
"effect": "permit",
"id": "small-transfers",
"match": {
"counterparty": [
"0x2222222222222222222222222222222222222222"
],
"kind": [
"transaction"
],
"max_amount": {
"currency": "USDC",
"value": "100"
},
"target_prefix": [
"eip155:11155111/0x1111111111111111111111111111111111111111/"
],
"verb": [
"transfer"
]
}
}
],
"default": "escalate",
"mandate_id": "example-payments",
"purpose": "Permit small transfers to one named recipient on a test network.",
"schema_version": "0.2-draft"
}
}
],
"properties": {
"action": {
"$comment": "Forbidden anywhere in an instance: credential, secret, private_key, token, password, api_key. A runtime is expected to refuse a request containing them rather than strip them.",
"additionalProperties": false,
"description": "A typed description of a proposed operation, submitted by an agent to a local HANRIA runtime. MUST NOT contain credentials, secrets, private keys, or tokens.",
"properties": {
"idempotency_key": {
"description": "Optional. Lets a runtime refuse a duplicate rather than perform an operation twice.",
"type": "string"
},
"justification": {
"description": "Why the agent believes this is within its mandate. Free text, for the record.",
"minLength": 1,
"type": "string"
},
"mandate_ref": {
"description": "Optional reference to the owner-defined mandate the agent believes authorizes this.",
"type": "string"
},
"operation": {
"additionalProperties": false,
"properties": {
"amount": {
"additionalProperties": false,
"description": "An amount. Both fields are required: a bare amount object describes nothing a ceiling could be compared against.",
"properties": {
"currency": {
"minLength": 1,
"type": "string"
},
"value": {
"description": "Decimal as a string, to avoid float error.",
"minLength": 1,
"type": "string"
}
},
"required": [
"value",
"currency"
],
"type": "object"
},
"counterparty": {
"type": "string"
},
"kind": {
"enum": [
"file",
"process",
"package",
"network",
"device",
"credential_use",
"transaction",
"administrative"
]
},
"parameters": {
"description": "Non-secret parameters. A runtime MUST reject any request whose parameters appear to contain a credential.",
"type": "object"
},
"target": {
"description": "What the operation acts on. A path, host, package name, or resource identifier. NEVER a secret. Required for the same reason as the verb.",
"minLength": 1,
"type": "string"
},
"verb": {
"description": "What is to be done to the target, e.g. read, write, execute, install, connect, sign, transfer. Required: an operation named only by its kind does not describe a proposed action well enough to be judged.",
"minLength": 1,
"type": "string"
}
},
"required": [
"kind",
"verb",
"target"
],
"type": "object"
},
"requested_by": {
"additionalProperties": false,
"properties": {
"agent": {
"description": "Identifier of the requesting agent.",
"type": "string"
},
"on_behalf_of": {
"description": "Optional identifier of the human or system the agent acts for.",
"type": "string"
},
"session": {
"description": "Optional session or task identifier.",
"type": "string"
}
},
"required": [
"agent"
],
"type": "object"
},
"schema_version": {
"const": "0.1-draft",
"description": "Draft. The runtime does not exist; this shape may change."
}
},
"required": [
"schema_version",
"requested_by",
"operation",
"justification"
],
"title": "HANRIA action request",
"type": "object"
},
"mandate": {
"$comment": "A mandate names what may be done, not the means of doing it, and must never contain a credential, secret, key or token. The checker refuses a mandate carrying recognizable credential material rather than evaluating it, because anything in a clause note is copied into the decision record. That detection is a heuristic and cannot be complete.",
"additionalProperties": false,
"description": "An operator-authored statement of what an agent may do. Written by a person, read by an agent, evaluated locally. A mandate is advisory: it describes intended authority and supports a local check, but it does not enforce anything. Enforcement requires a component that exclusively holds the credentials and can refuse.",
"properties": {
"clauses": {
"description": "Evaluated in order. The first matching clause decides. A request matching no clause takes the mandate default.",
"items": {
"additionalProperties": false,
"properties": {
"effect": {
"description": "What this clause does when it matches.",
"enum": [
"permit",
"deny",
"escalate"
]
},
"id": {
"description": "Identifier for this clause. Returned with every decision so a reviewer can see which sentence of the mandate was relied on.",
"minLength": 1,
"type": "string"
},
"match": {
"additionalProperties": false,
"description": "All present conditions must hold for the clause to match.",
"properties": {
"counterparty": {
"description": "Permitted counterparties, matched exactly. Absent means any counterparty.",
"items": {
"type": "string"
},
"minItems": 1,
"type": "array"
},
"kind": {
"description": "Operation kinds this clause covers.",
"items": {
"enum": [
"file",
"process",
"package",
"network",
"device",
"credential_use",
"transaction",
"administrative"
]
},
"minItems": 1,
"type": "array"
},
"max_amount": {
"additionalProperties": false,
"description": "Ceiling for an operation carrying an amount. A request above it does not match this clause.",
"properties": {
"currency": {
"type": "string"
},
"value": {
"description": "Decimal as a string, to avoid float error.",
"type": "string"
}
},
"required": [
"value",
"currency"
],
"type": "object"
},
"target_prefix": {
"description": "The operation target must begin with one of these strings. Absent means any target. Prefix matching is deliberately literal: it does not resolve symlinks, normalize paths, or understand hostnames, so a target is compared as written.",
"items": {
"type": "string"
},
"minItems": 1,
"type": "array"
},
"verb": {
"description": "Permitted verbs, matched case-insensitively and exactly. Absent means any verb.",
"items": {
"type": "string"
},
"minItems": 1,
"type": "array"
}
},
"required": [
"kind"
],
"type": "object"
},
"note": {
"description": "Why this clause exists. Carried into the decision record verbatim.",
"type": "string"
}
},
"required": [
"id",
"effect",
"match"
],
"type": "object"
},
"minItems": 1,
"type": "array"
},
"default": {
"description": "What happens when no clause matches. 'permit' is deliberately not an option: a mandate that permits by default cannot express a limit.",
"enum": [
"deny",
"escalate"
]
},
"issued_by": {
"description": "Who wrote this mandate. Free text; not authenticated by anything in this skill.",
"type": "string"
},
"mandate_id": {
"description": "Stable identifier for this mandate. Appears in every decision record made against it.",
"minLength": 1,
"type": "string"
},
"not_valid_after": {
"description": "RFC 3339 timestamp. After this instant every action is denied. Absent means no expiry, which is discouraged: an unbounded mandate is the condition that lets delegated authority outlive the task it was granted for.",
"format": "date-time",
"type": "string"
},
"purpose": {
"description": "What the agent is authorized to accomplish, in the operator's own words. Not evaluated mechanically; it is the human-readable statement against which a reviewer judges whether the clauses actually express the intent.",
"minLength": 1,
"type": "string"
},
"requires_human": {
"description": "Operation kinds that always require a person, even where a clause permits them. These escalate rather than permit.",
"items": {
"enum": [
"file",
"process",
"package",
"network",
"device",
"credential_use",
"transaction",
"administrative"
]
},
"minItems": 0,
"type": "array"
},
"schema_version": {
"const": "0.2-draft",
"description": "Draft. The shape may change while the runtime is in development."
}
},
"required": [
"schema_version",
"mandate_id",
"purpose",
"default",
"clauses"
],
"title": "HANRIA mandate",
"type": "object"
}
},
"required": [
"mandate",
"action"
],
"type": "object"
},
"name": "check_action",
"outputSchema": {
"additionalProperties": false,
"properties": {
"action_digest": {
"description": "SHA-256 of hanria-action-v1 followed by the action's canonical JSON.",
"type": "string"
},
"clause": {
"description": "The clause that decided, when one did.",
"type": "string"
},
"clause_note": {
"type": "string"
},
"mandate_ref": {
"type": "string"
},
"outcome": {
"description": "Treat error as deny.",
"enum": [
"permit",
"deny",
"escalate",
"error"
],
"type": "string"
},
"reason": {
"type": "string"
},
"receipt": {
"additionalProperties": false,
"description": "Ed25519-signed receipt binding the outcome to this action and mandate for 15 minutes. Keys and the signed-bytes rule: https://check.hanria.ai/.well-known/hanria-receipt-keys.json",
"properties": {
"action_digest": {
"type": "string"
},
"clause": {
"type": "string"
},
"issued_at": {
"format": "date-time",
"type": "string"
},
"kid": {
"type": "string"
},
"mandate_digest": {
"type": "string"
},
"mandate_ref": {
"type": "string"
},
"not_after": {
"format": "date-time",
"type": "string"
},
"outcome": {
"enum": [
"permit",
"deny",
"escalate"
],
"type": "string"
},
"signature": {
"type": "string"
},
"type": {
"const": "hanria-receipt-v1",
"type": "string"
}
},
"required": [
"type",
"kid",
"outcome",
"action_digest",
"mandate_digest",
"issued_at",
"not_after",
"signature"
],
"type": "object"
},
"schema_version": {
"const": "0.1-draft",
"type": "string"
}
},
"required": [
"schema_version",
"outcome",
"reason"
],
"type": "object"
}
},
{
"description": "Call this after writing or editing a mandate, before relying on it. Returns valid true or false with the reason: schema errors, clauses that can never run because an earlier clause already decides them, unbounded prefixes, credential material, and expiry. An invalid mandate makes every check_action call answer error. Once per mandate version is enough; there is no need to call it before every check_action. Free, and it keeps no request content. Docs: https://hanria.ai/llms.txt",
"inputSchema": {
"additionalProperties": false,
"examples": [
{
"mandate": {
"clauses": [
{
"effect": "permit",
"id": "permit-file",
"match": {
"kind": [
"file"
]
}
}
],
"default": "deny",
"mandate_id": "minimal-permit",
"purpose": "Permit one file action.",
"schema_version": "0.2-draft"
}
}
],
"properties": {
"mandate": {
"$comment": "A mandate names what may be done, not the means of doing it, and must never contain a credential, secret, key or token. The checker refuses a mandate carrying recognizable credential material rather than evaluating it, because anything in a clause note is copied into the decision record. That detection is a heuristic and cannot be complete.",
"additionalProperties": false,
"description": "An operator-authored statement of what an agent may do. Written by a person, read by an agent, evaluated locally. A mandate is advisory: it describes intended authority and supports a local check, but it does not enforce anything. Enforcement requires a component that exclusively holds the credentials and can refuse.",
"properties": {
"clauses": {
"description": "Evaluated in order. The first matching clause decides. A request matching no clause takes the mandate default.",
"items": {
"additionalProperties": false,
"properties": {
"effect": {
"description": "What this clause does when it matches.",
"enum": [
"permit",
"deny",
"escalate"
]
},
"id": {
"description": "Identifier for this clause. Returned with every decision so a reviewer can see which sentence of the mandate was relied on.",
"minLength": 1,
"type": "string"
},
"match": {
"additionalProperties": false,
"description": "All present conditions must hold for the clause to match.",
"properties": {
"counterparty": {
"description": "Permitted counterparties, matched exactly. Absent means any counterparty.",
"items": {
"type": "string"
},
"minItems": 1,
"type": "array"
},
"kind": {
"description": "Operation kinds this clause covers.",
"items": {
"enum": [
"file",
"process",
"package",
"network",
"device",
"credential_use",
"transaction",
"administrative"
]
},
"minItems": 1,
"type": "array"
},
"max_amount": {
"additionalProperties": false,
"description": "Ceiling for an operation carrying an amount. A request above it does not match this clause.",
"properties": {
"currency": {
"type": "string"
},
"value": {
"description": "Decimal as a string, to avoid float error.",
"type": "string"
}
},
"required": [
"value",
"currency"
],
"type": "object"
},
"target_prefix": {
"description": "The operation target must begin with one of these strings. Absent means any target. Prefix matching is deliberately literal: it does not resolve symlinks, normalize paths, or understand hostnames, so a target is compared as written.",
"items": {
"type": "string"
},
"minItems": 1,
"type": "array"
},
"verb": {
"description": "Permitted verbs, matched case-insensitively and exactly. Absent means any verb.",
"items": {
"type": "string"
},
"minItems": 1,
"type": "array"
}
},
"required": [
"kind"
],
"type": "object"
},
"note": {
"description": "Why this clause exists. Carried into the decision record verbatim.",
"type": "string"
}
},
"required": [
"id",
"effect",
"match"
],
"type": "object"
},
"minItems": 1,
"type": "array"
},
"default": {
"description": "What happens when no clause matches. 'permit' is deliberately not an option: a mandate that permits by default cannot express a limit.",
"enum": [
"deny",
"escalate"
]
},
"issued_by": {
"description": "Who wrote this mandate. Free text; not authenticated by anything in this skill.",
"type": "string"
},
"mandate_id": {
"description": "Stable identifier for this mandate. Appears in every decision record made against it.",
"minLength": 1,
"type": "string"
},
"not_valid_after": {
"description": "RFC 3339 timestamp. After this instant every action is denied. Absent means no expiry, which is discouraged: an unbounded mandate is the condition that lets delegated authority outlive the task it was granted for.",
"format": "date-time",
"type": "string"
},
"purpose": {
"description": "What the agent is authorized to accomplish, in the operator's own words. Not evaluated mechanically; it is the human-readable statement against which a reviewer judges whether the clauses actually express the intent.",
"minLength": 1,
"type": "string"
},
"requires_human": {
"description": "Operation kinds that always require a person, even where a clause permits them. These escalate rather than permit.",
"items": {
"enum": [
"file",
"process",
"package",
"network",
"device",
"credential_use",
"transaction",
"administrative"
]
},
"minItems": 0,
"type": "array"
},
"schema_version": {
"const": "0.2-draft",
"description": "Draft. The shape may change while the runtime is in development."
}
},
"required": [
"schema_version",
"mandate_id",
"purpose",
"default",
"clauses"
],
"title": "HANRIA mandate",
"type": "object"
}
},
"required": [
"mandate"
],
"type": "object"
},
"name": "validate_mandate",
"outputSchema": {
"additionalProperties": false,
"properties": {
"clauses": {
"type": "integer"
},
"expired": {
"description": "True when not_valid_after has passed; check_action then denies everything.",
"type": "boolean"
},
"mandate_digest": {
"description": "SHA-256 of the mandate's canonical JSON; receipts carry the same value.",
"type": "string"
},
"mandate_ref": {
"type": "string"
},
"reason": {
"type": "string"
},
"schema_version": {
"const": "0.1-draft",
"type": "string"
},
"valid": {
"type": "boolean"
}
},
"required": [
"schema_version",
"valid",
"reason"
],
"type": "object"
}
}
]
}Verify it yourself
curl -s https://api.teppi.xyz/v1/evidence/sha256:37f8f869a423719e32f751fcb75c18ced02dbcfb56d0922209c9434763ab5f79 | sha256sum