NIST Randomness Beacon v2 — signed public random pulses every 60s.
All 5 tools have minimal descriptions (10-30 chars) and lack parameter descriptions entirely. Input schemas are present but parameters have no type annotations or descriptions. No output schemas documented. Error handling is basic (generic HTTP status errors). Tools follow a consistent naming pattern (verb_noun) but descriptions are too terse to guide LLM selection. No security considerations, no pagination support, no idempotency hints.
Chain metadata.
Most recent pulse.
Latest pulse in chain.
Pulse at UTC time (epoch ms).
Pulse by chain + pulse index.
All tool descriptions are under 20 characters and provide no context for LLM selection. 'Most recent pulse.' and 'Pulse at UTC time (epoch ms).' lack WHEN to use, WHAT is returned, and dependencies.
No parameter descriptions. 'time_ms', 'chain_id', 'pulse_id' lack type hints, format constraints, valid ranges, or examples. LLMs cannot infer whether time_ms is milliseconds since epoch, seconds, or a UNIX timestamp.
No output schemas documented. LLMs cannot plan downstream calls or extract required fields (e.g., does pulse response include chain_id for chaining to latest_in_chain?).
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 38 | 2026-07-28+ | v2 |
Error handling is minimal. Generic 'NIST Beacon: {status}' errors provide no recovery guidance. No distinction between retryable (5xx) vs user-fixable (4xx) errors. No actionable error messages.
Parameter validation is weak. reqNum() throws generic 'Required argument X is missing' without showing valid format or range. No enum constraints for chain_id (what are valid chains?). No bounds on time_ms or pulse_id.