PK25 · browser-local production
Offline API Batch Production Kit
Generate fixed-origin curl, JavaScript, and Python production artifacts for one validated Utilito API batch without executing it.
Production envelope
Not generated. Build a new offline API batch production kit.Download current envelope
Build-time verified sample
{"ok":true,"schema_version":"utilito.product-kit.v1","kit":{"id":"offline-api-batch-production-kit","version":"1.0.0"},"result":{"canonical_batch_body":{"requests":[{"id":"repair","tool_id":"json-repair","input":{"input":"{name:\"Ada\",}","strip_fences":true,"strip_prose":false,"close_truncated":false}},{"id":"format","tool_id":"json-formatter","input":{"input":"{\"name\":\"Ada\"}","action":"format","indent":2}},{"id":"encode","tool_id":"base64","input":{"input":"Utilito offline batch","action":"encode","urlSafe":false}},{"id":"url","tool_id":"url-encoder","input":{"input":"hello world","action":"encode","mode":"component"}}]},"canonical_batch_json":"{\"requests\":[{\"id\":\"repair\",\"tool_id\":\"json-repair\",\"input\":{\"input\":\"{name:\\\"Ada\\\",}\",\"strip_fences\":true,\"strip_prose\":false,\"close_truncated\":false}},{\"id\":\"format\",\"tool_id\":\"json-formatter\",\"input\":{\"input\":\"{\\\"name\\\":\\\"Ada\\\"}\",\"action\":\"format\",\"indent\":2}},{\"id\":\"encode\",\"tool_id\":\"base64\",\"input\":{\"input\":\"Utilito offline batch\",\"action\":\"encode\",\"urlSafe\":false}},{\"id\":\"url\",\"tool_id\":\"url-encoder\",\"input\":{\"input\":\"hello world\",\"action\":\"encode\",\"mode\":\"component\"}}]}","artifacts":{"curl":"curl -X POST 'https://utilito.dev/api/batch' \\\n -H 'Content-Type: application/json' \\\n --data-binary '{\"requests\":[{\"id\":\"repair\",\"tool_id\":\"json-repair\",\"input\":{\"input\":\"{name:\\\"Ada\\\",}\",\"strip_fences\":true,\"strip_prose\":false,\"close_truncated\":false}},{\"id\":\"format\",\"tool_id\":\"json-formatter\",\"input\":{\"input\":\"{\\\"name\\\":\\\"Ada\\\"}\",\"action\":\"format\",\"indent\":2}},{\"id\":\"encode\",\"tool_id\":\"base64\",\"input\":{\"input\":\"Utilito offline batch\",\"action\":\"encode\",\"urlSafe\":false}},{\"id\":\"url\",\"tool_id\":\"url-encoder\",\"input\":{\"input\":\"hello world\",\"action\":\"encode\",\"mode\":\"component\"}}]}'\n","javascript":"const body = {\"requests\":[{\"id\":\"repair\",\"tool_id\":\"json-repair\",\"input\":{\"input\":\"{name:\\\"Ada\\\",}\",\"strip_fences\":true,\"strip_prose\":false,\"close_truncated\":false}},{\"id\":\"format\",\"tool_id\":\"json-formatter\",\"input\":{\"input\":\"{\\\"name\\\":\\\"Ada\\\"}\",\"action\":\"format\",\"indent\":2}},{\"id\":\"encode\",\"tool_id\":\"base64\",\"input\":{\"input\":\"Utilito offline batch\",\"action\":\"encode\",\"urlSafe\":false}},{\"id\":\"url\",\"tool_id\":\"url-encoder\",\"input\":{\"input\":\"hello world\",\"action\":\"encode\",\"mode\":\"component\"}}]};\n\nexport function buildRequest() {\n return { url: 'https://utilito.dev/api/batch', options: { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify(body) } };\n}\n\nexport async function run() {\n return fetch('https://utilito.dev/api/batch', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify(body) });\n}\n","python":"import base64\nimport json\nimport urllib.request\n\n_BODY_B64 = \"eyJyZXF1ZXN0cyI6W3siaWQiOiJyZXBhaXIiLCJ0b29sX2lkIjoianNvbi1yZXBhaXIiLCJpbnB1dCI6eyJpbnB1dCI6IntuYW1lOlwiQWRhXCIsfSIsInN0cmlwX2ZlbmNlcyI6dHJ1ZSwic3RyaXBfcHJvc2UiOmZhbHNlLCJjbG9zZV90cnVuY2F0ZWQiOmZhbHNlfX0seyJpZCI6ImZvcm1hdCIsInRvb2xfaWQiOiJqc29uLWZvcm1hdHRlciIsImlucHV0Ijp7ImlucHV0Ijoie1wibmFtZVwiOlwiQWRhXCJ9IiwiYWN0aW9uIjoiZm9ybWF0IiwiaW5kZW50IjoyfX0seyJpZCI6ImVuY29kZSIsInRvb2xfaWQiOiJiYXNlNjQiLCJpbnB1dCI6eyJpbnB1dCI6IlV0aWxpdG8gb2ZmbGluZSBiYXRjaCIsImFjdGlvbiI6ImVuY29kZSIsInVybFNhZmUiOmZhbHNlfX0seyJpZCI6InVybCIsInRvb2xfaWQiOiJ1cmwtZW5jb2RlciIsImlucHV0Ijp7ImlucHV0IjoiaGVsbG8gd29ybGQiLCJhY3Rpb24iOiJlbmNvZGUiLCJtb2RlIjoiY29tcG9uZW50In19XX0=\"\n\ndef build_request():\n body = json.loads(base64.b64decode(_BODY_B64).decode(\"utf-8\"))\n data = json.dumps(body, ensure_ascii=False, separators=(\",\", \":\")).encode(\"utf-8\")\n return urllib.request.Request(\"https://utilito.dev/api/batch\", data=data, headers={\"Content-Type\": \"application/json\"}, method=\"POST\")\n\ndef run():\n return urllib.request.urlopen(build_request())\n"},"artifact_manifest":[{"language":"curl","filename":"offline-api-batch.sh","content_type":"text/plain","utf8_bytes":588},{"language":"javascript","filename":"offline-api-batch.mjs","content_type":"text/plain","utf8_bytes":869},{"language":"python","filename":"offline_api_batch.py","content_type":"text/plain","utf8_bytes":1086}],"validation_receipt":{"calls_validated":4,"schemas_checked":4,"tool_ids":["json-repair","json-formatter","base64","url-encoder"],"canonical_tool_ids":true,"unique_call_ids":true,"fixed_endpoint":true},"safety":{"calls_executed":false,"network_used":false,"credentials_accepted":false,"arbitrary_origins_accepted":false,"fixed_origin":"https://utilito.dev"}},"receipt":{"input_bytes":531,"output_bytes":5174,"operations":0,"omitted_items":0,"warnings":[],"calls":4,"artifacts":3,"schemas_checked":4,"calls_executed":false},"provenance":{"deterministic":true,"model_used":false,"network_used":false,"storage_used":false,"core_versions":{"offline_api_batch_production_kit":"1.0.0","offline_api_batch_contract":"1.0.0","offline_api_batch_tool_resolution":"1.0.0"}},"error":null}Explicit limits
- Only four frozen canonical deterministic tool IDs are accepted. Aliases, Product Kits, random, rendering, security, filesystem, agent, pipeline, and caller-defined tool IDs are rejected.
- Inputs are strict closed per-tool records. Endpoint, origin, path, method, headers, authentication, options, environment values, and $INPUT/$PREV/$STEP bindings are outside the contract.
- Generated content is inert until a person deliberately executes it. Generation performs no call, fetch, network access, storage, telemetry, pipeline binding, import, filesystem operation, or dynamic code execution.
- Artifacts always target https://utilito.dev/api/batch with Content-Type only. URL-like values inside allowed tool payload text remain inert data and cannot alter the fixed destination.