Skip to main content
Glama

Seal a schedule

pull_seal

Seals a schedule's text before the run: commits to it (SHA-256 of the text and a nonce) and encrypts it (ChaCha20) under a fresh key. Answers with sealed (the public half, for the session's schedule.sealed) and secret (the key, IV and nonce), to this call alone: this service does not store, log or show again either the text or the secret, so keep the secret, release each cue at its moment, and publish the secret into the session's schedule.opened after the close. held_by names the leader station's generator (default L); at_ns is when it was sealed, before start_ns. By default the randomness is 32 bytes of this server's operating-system randomness, graded hardware_seeded; seed draws from software instead (graded software, which a research run refuses); entropy_hex with grade brings your own bytes and says where they came from. Costs 1 unit.

Input Schema

NameRequiredDescriptionDefault
seedNoA whole number that makes the run reproducible: the same seed and inputs give the same answer.
at_nsNoThe sealing time in integer nanoseconds.
gradeNoHow the entropy you brought was produced, recorded with the schedule.
contentYesThe schedule text to seal, as drawn by pull_schedule.
entropyNoThe entropy source: os, the server's own.
held_byNoWho holds the secret half, recorded with the seal.
entropy_hexNoYour own entropy as hex, in place of the server's, when you must bring the bytes yourself; grade then says where they came from.

Output Schema

NameRequiredDescriptionDefault
msNoMilliseconds the run took.
jobYesThe job id; the job tool reads it.
verbNoThe tool that made it.
filesNoFiles made, each with a name, type, size and a signed URL.
unitsNoUnits this call cost.
resultNoThe engine's own answer, a JSON document.
statusNoqueued when the job runs in the background.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed8 schema fields changed
    • addedInput schema / properties / at_ns / description
      Added value: +"The sealing time in integer nanoseconds."
    • addedInput schema / properties / content / description
      Added value: +"The schedule text to seal, as drawn by pull_schedule."
    • addedInput schema / properties / entropy / description
      Added value: +"The entropy source: os, the server's own."
    • addedInput schema / properties / entropy_hex / description
      Added value: +"Your own entropy as hex, in place of the server's, when you must bring the bytes yourself; grade then says where they came from."
    • addedInput schema / properties / grade / description
      Added value: +"How the entropy you brought was produced, recorded with the schedule."
    • addedInput schema / properties / held_by / description
      Added value: +"Who holds the secret half, recorded with the seal."
    • addedInput schema / properties / seed / description
      Added value: +"A whole number that makes the run reproducible: the same seed and inputs give the same answer."
    • changedOutput schema / (root)
      Previous value: -nullNew value: +{
      +  "$schema": "http://json-schema.org/draft-07/schema#",
      +  "additionalProperties": true,
      +  "properties": {
      +    "files": {
      +      "description": "Files made, each with a name, type, size and a signed URL.",
      +      "items": {
      +        "additionalProperties": {},
      +        "type": "object"
      +      },
      +      "type": "array"
      +    },
      +    "job": {
      +      "description": "The job id; the job tool reads it.",
      +      "type": "string"
      +    },
      +    "ms": {
      +      "description": "Milliseconds the run took.",
      +      "type": "number"
      +    },
      +    "result": {
      +      "description": "The engine's own answer, a JSON document."
      +    },
      +    "status": {
      +      "description": "queued when the job runs in the background.",
      +      "type": "string"
      +    },
      +    "units": {
      +      "description": "Units this call cost.",
      +      "type": "number"
      +    },
      +    "verb": {
      +      "description": "The tool that made it.",
      +      "type": "string"
      +    }
      +  },
      +  "required": [
      +    "job"
      +  ],
      +  "type": "object"
      +}
  2. First observed

TDQS

A4.5/5.0
Behavior5/5

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

Annotations only cover safety flags; the description supplies the behavior that actually matters here: the service does not store, log or show the text or secret again, the key is fresh (implying non-idempotence), and the call costs 1 unit. This is exactly the kind of context annotations cannot convey.

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?

Front-loaded with the core operation and dense with relevant detail; nearly every clause earns its place. The trailing entropy-grade sentences are packed and run-on, making them harder to parse than the rest.

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 7-parameter cryptographic tool with an output schema already present, the description covers purpose, lifecycle, cost, and secret-handling obligations. The seed-vs-entropy_hex-vs-grade interaction is the one area left slightly ambiguous.

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 coverage is 100%, so baseline is 3, but the description adds real meaning: held_by defaults to L for the leader station, at_ns is the sealing time before start_ns, and the entropy/seed/entropy_hex/grade interaction determines the entropy grade that a research run accepts or refuses. It goes beyond the schema's per-field text.

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?

Specific verb ('Seals') plus resource ('a schedule's text') plus mechanism (SHA-256 commitment and ChaCha20 encryption under a fresh key) in the first sentence. It also situates the tool in the pull workflow by naming where content comes from (pull_schedule) and where results go (schedule.sealed, schedule.opened), letting an agent distinguish it from pull_open/pull_close/pull_schedule.

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?

Clear context: seal before the run, keep the secret, release cues at their moment, publish the secret into schedule.opened after the close. It also states a conditional constraint ('a research run refuses' software-graded seed). No explicit 'do not use this when...' or named alternative tool, so it stops short 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