← The evidence ledger
Evidence row 264687
Observed , by probe.mcp/1.
- Kind
- mcp.tools
- About
- endpoint 7ee09d74-b2cb-4dda-bee2-422ad37bc46b
- Recorded
- Previous row
- None: the first of its kind about this subject
- Body SHA-256
- 1d6facaa1dbe880bf155b2d3d3724d012ef99a482a7f8d14ac39eddcf6f6d8fe
- Leaf
- 0xfc027b5be60147313999623ee3316ba3f55668e81d7ac294902ab642ba4fab91
What was observed
{
"count": 6,
"tools": [
{
"description": "Prepare a new temporary static preview. Supply exactly one of small files or ZIP archive_base64. No backend/build. Requires explicit consent; returns an approval link, not a published URL. User must confirm in their browser. ",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"accept_terms": {
"const": true,
"description": "Set true only after the user explicitly agrees to the current terms and public temporary preview limits. Not inferred from a request to generate a site. Preparation is not publication; the user must also personally confirm the approval URL in their browser within 2 hours.",
"type": "boolean"
},
"archive_base64": {
"description": "One input choice: actual ZIP bytes encoded as canonical standard base64, without data: prefix. At most 50 MiB (52,428,800 bytes) of decoded ZIP and 50 MiB extracted content; at most 25 MiB per file. index.html at root. No nested archives or server code. Do not also send files or archive.",
"maxLength": 69905068,
"type": "string"
},
"files": {
"description": "One input choice: 1-500 already-built static files, at most 1 MiB decoded in total. Include index.html at the root and all needed assets. Do not also send archive_base64 or archive. For larger output use a ZIP.",
"items": {
"additionalProperties": false,
"properties": {
"content": {
"description": "Actual file contents, not a filename, local path or download URL. Use UTF-8 text for HTML/CSS/JS and canonical base64 for binary assets. All files together must decode to at most 1 MiB (1,048,576 bytes). No secrets, personal/payment data or forms.",
"maxLength": 1400000,
"type": "string"
},
"encoding": {
"description": "Defaults to utf8. Set base64 for binary content; standard padded base64 only, without a data: prefix, whitespace or URL-safe alphabet. The decoded bytes count toward the shared 1 MiB limit.",
"enum": [
"utf8",
"base64"
],
"type": "string"
},
"path": {
"description": "Relative POSIX path inside the ready static output, e.g. index.html or assets/app.js. index.html must be at the root. No absolute paths, traversal, symlinks, archives or executable/server files.",
"maxLength": 240,
"minLength": 1,
"type": "string"
}
},
"required": [
"path",
"content"
],
"type": "object"
},
"maxItems": 500,
"minItems": 1,
"type": "array"
}
},
"required": [
"accept_terms"
],
"type": "object"
},
"name": "create_preview"
},
{
"description": "Prepare deletion of an existing preview. Does not delete until its owner confirms in the browser holding the management key.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"confirm_delete": {
"const": true,
"description": "Set true only after the owner explicitly asks to delete this preview. The tool only prepares deletion; final confirmation requires the browser holding its management key.",
"type": "boolean"
},
"preview_id": {
"description": "Existing preview_id returned by AIfra. Do not invent it or pass a URL, alias, management key or source IP.",
"pattern": "^pv_[A-Za-z0-9_-]{24}$",
"type": "string"
}
},
"required": [
"preview_id",
"confirm_delete"
],
"type": "object"
},
"name": "delete_preview"
},
{
"description": "Explain remote browser-confirmed AIfra publication of ready static files, limits and current terms.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {},
"type": "object"
},
"name": "get_deploy_instructions"
},
{
"description": "Read whether a prepared operation is pending, complete, failed or uncertain. Returns no file content or management key. Never assume pending means published.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"operation_id": {
"description": "Exact operation_id from a preparation response. Read status after user confirmation or on request. Only complete with a result contains the published URL; pending is not published, uncertain must not be replayed.",
"pattern": "^rop_[A-Za-z0-9_-]{43}$",
"type": "string"
}
},
"required": [
"operation_id"
],
"type": "object"
},
"name": "get_operation_status"
},
{
"description": "Read current public status, URL and server-enforced expiry of an existing preview. Only the service owner can manually extend expiry; updates never extend it.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"preview_id": {
"description": "Existing preview_id returned by AIfra. Do not invent it or pass a URL, alias, management key or source IP.",
"pattern": "^pv_[A-Za-z0-9_-]{24}$",
"type": "string"
}
},
"required": [
"preview_id"
],
"type": "object"
},
"name": "get_preview_status"
},
{
"description": "Prepare replacement of an existing temporary static preview. Supply exactly one of small files or ZIP archive_base64. No backend/build. Requires explicit consent; returns an approval link, not a published URL. User must confirm in their browser. Requires the browser holding the existing management key; expiry is unchanged.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"accept_terms": {
"const": true,
"description": "Set true only after the user explicitly agrees to the current terms and public temporary preview limits. Not inferred from a request to generate a site. Preparation is not publication; the user must also personally confirm the approval URL in their browser within 2 hours.",
"type": "boolean"
},
"archive_base64": {
"description": "One input choice: actual ZIP bytes encoded as canonical standard base64, without data: prefix. At most 50 MiB (52,428,800 bytes) of decoded ZIP and 50 MiB extracted content; at most 25 MiB per file. index.html at root. No nested archives or server code. Do not also send files or archive.",
"maxLength": 69905068,
"type": "string"
},
"files": {
"description": "One input choice: 1-500 already-built static files, at most 1 MiB decoded in total. Include index.html at the root and all needed assets. Do not also send archive_base64 or archive. For larger output use a ZIP.",
"items": {
"additionalProperties": false,
"properties": {
"content": {
"description": "Actual file contents, not a filename, local path or download URL. Use UTF-8 text for HTML/CSS/JS and canonical base64 for binary assets. All files together must decode to at most 1 MiB (1,048,576 bytes). No secrets, personal/payment data or forms.",
"maxLength": 1400000,
"type": "string"
},
"encoding": {
"description": "Defaults to utf8. Set base64 for binary content; standard padded base64 only, without a data: prefix, whitespace or URL-safe alphabet. The decoded bytes count toward the shared 1 MiB limit.",
"enum": [
"utf8",
"base64"
],
"type": "string"
},
"path": {
"description": "Relative POSIX path inside the ready static output, e.g. index.html or assets/app.js. index.html must be at the root. No absolute paths, traversal, symlinks, archives or executable/server files.",
"maxLength": 240,
"minLength": 1,
"type": "string"
}
},
"required": [
"path",
"content"
],
"type": "object"
},
"maxItems": 500,
"minItems": 1,
"type": "array"
},
"preview_id": {
"description": "Existing preview_id returned by AIfra. Do not invent it or pass a URL, alias, management key or source IP.",
"pattern": "^pv_[A-Za-z0-9_-]{24}$",
"type": "string"
}
},
"required": [
"accept_terms",
"preview_id"
],
"type": "object"
},
"name": "update_preview"
}
]
}What the leaf hashes
{"body":"1d6facaa1dbe880bf155b2d3d3724d012ef99a482a7f8d14ac39eddcf6f6d8fe","id":264687,"kind":"mcp.tools","method":"probe.mcp/1","observed_us":1793034356943912,"prev":null,"subject":"7ee09d74-b2cb-4dda-bee2-422ad37bc46b","subject_kind":"endpoint"}Proof
Its day has not closed yet. A day closes ten minutes after midnight UTC; the proof appears here then.