{"service":"Quantum Entropy-as-a-Service","version":"1.0.0","framing":"Q-EaaS supplies high-quality entropy from a quantum random number generator (QRNG) that seeds a standards HMAC-DRBG (SP 800-90A). Only DRBG-derived bytes, seeds, and ML-KEM key material are served -- raw QRNG bits are never exposed. The quantum part is the entropy source; post-quantum resistance comes from ML-KEM (FIPS 203), not from the randomness itself.","web_url":"https://qeaas.eu","api_url":"https://api.qeaas.eu","auth_steps":["Public endpoints (health, random, dice, verify, pubkey) need no key -- call them directly.","For developer endpoints, obtain an admin-minted API key from the operator.","Send the key on every premium request as the HTTP header `X-API-Key: <key>`.","Premium responses carry a signed receipt; verify provenance later via POST /v1/verify or the published Ed25519 public key.","Respect the per-key daily quota and rate limit; over-limit returns 429 with a Retry-After header."],"auth":{"type":"api_key","header":"X-API-Key","public_endpoints_need_key":false,"how_to_obtain":"API keys are admin-minted. Request one from the operator; keys are revocable and per-key quota-metered. Public endpoints (health, random, dice, verify, pubkey) need no key."},"endpoints":[{"name":"health","method":"GET","path":"/health","summary":"Service health & entropy level","auth":"none","curl":"curl -s \"https://api.qeaas.eu/health\""},{"name":"random","method":"GET","path":"/random","summary":"Anonymous quantum-seeded random bytes","auth":"none","curl":"curl -s \"https://api.qeaas.eu/random?bytes=32\""},{"name":"dice","method":"POST","path":"/dice","summary":"Roll dice with quantum-seeded randomness","auth":"none","curl":"curl -s -X POST -H 'content-type: application/json' -d '{\"sides\":6,\"count\":1}' \"https://api.qeaas.eu/dice\""},{"name":"random_bytes","method":"GET","path":"/v1/random/bytes","summary":"Developer entropy endpoint (API key)","auth":"api_key","curl":"curl -s -H \"X-API-Key: $QEAAS_API_KEY\" \"https://api.qeaas.eu/v1/random/bytes?size=...&format=hex\""},{"name":"verify","method":"POST","path":"/v1/verify","summary":"Verify a provenance receipt","auth":"none","curl":"curl -s -X POST -H 'content-type: application/json' -d '{\"request_id\":null,\"receipt\":null}' \"https://api.qeaas.eu/v1/verify\""},{"name":"pubkey","method":"GET","path":"/v1/pubkey","summary":"Ed25519 receipt-signing public key","auth":"none","curl":"curl -s \"https://api.qeaas.eu/v1/pubkey\""},{"name":"kem_keypair","method":"POST","path":"/v1/kem/keypair","summary":"QRNG-seeded ML-KEM-768 keypair","auth":"api_key","curl":"curl -s -X POST -H \"X-API-Key: $QEAAS_API_KEY\" -H 'content-type: application/json' -d '{\"include_secret_key\":false}' \"https://api.qeaas.eu/v1/kem/keypair\""},{"name":"kem_encapsulate","method":"POST","path":"/v1/kem/encapsulate","summary":"QRNG-seeded ML-KEM encapsulation","auth":"api_key","curl":"curl -s -X POST -H \"X-API-Key: $QEAAS_API_KEY\" -H 'content-type: application/json' -d '{\"public_key\":\"...\",\"include_shared_secret\":false}' \"https://api.qeaas.eu/v1/kem/encapsulate\""}],"quotas":{"anon_ip_per_min":60,"anon_daily_bytes":5242880,"tier_daily_quota_bytes":{"default":262144,"iot":10485760,"trusted":524288000},"tier_rate_limits_per_min":{"default":120,"iot":600,"trusted":1200},"default_tier":"default"},"error_envelope":{"error":"<slug>"},"error_slugs":["missing_api_key","invalid_api_key","unauthorized","bad_request","not_found","rate_limited","daily_limit_reached","quota_exceeded","low_quantum_entropy","dice_sampling_failed"],"provenance":{"model":"verify provenance, not the secret","receipt_format":"qeaas1.<b64url(payload)>.<b64url(ed25519_sig)>","public_key_endpoint":"https://api.qeaas.eu/v1/pubkey","verify_endpoint":"https://api.qeaas.eu/v1/verify","note":"Every premium response ships a signed receipt over its metadata (request_id, size, entropy_epoch, timestamp). Output bytes are never stored; /v1/verify resolves provenance only."},"mcp":{"endpoint":"https://api.qeaas.eu/mcp","transport":"streamable-http","protocol_version":"2025-06-18"},"links":{"openapi":"https://api.qeaas.eu/openapi.json","docs":"https://api.qeaas.eu/docs","agent":"https://api.qeaas.eu/.well-known/agent.json","ai_plugin":"https://api.qeaas.eu/.well-known/ai-plugin.json","mcp_discovery":"https://api.qeaas.eu/.well-known/mcp.json","tools":"https://api.qeaas.eu/v1/agent/tools","manifest":"https://api.qeaas.eu/v1/agent/manifest","pubkey":"https://api.qeaas.eu/v1/pubkey","mcp":"https://api.qeaas.eu/mcp","llms_txt":"https://qeaas.eu/llms.txt","llms_full_txt":"https://qeaas.eu/llms-full.txt","agents_page":"https://qeaas.eu/agents"},"note":"Pass ?profile=<http|openai-tools|anthropic-tools|mcp> for a framework-shaped quickstart."}