{"service":"HALOWERK agentenwerk","version":"1.0.0","currency":"USDC","network":"eip155:8453","network_name":"Base Mainnet","recipient":"0x2880EdfFF13100677Bf97A3CBdF3Bc34771C4E5E","payment_header":"PAYMENT-SIGNATURE","endpoints":[{"method":"POST","path":"/v1/webhook-inbox","url":"https://agent.halowerk.com/v1/webhook-inbox","tool":"webhook_inbox","price_usdc":0.005,"price_model":"per_call","summary":"Create a short-lived public receive URL, then poll it for the events that arrived, parsed and in order.","description":"Gives an agent without a reachable server a place to receive callbacks. create returns a public URL that accepts any POST, GET or PUT from a third party; poll returns the events that arrived since a cursor you carry forward, with headers, parsed body and arrival time. The inbox expires after at most seven days and holds at most 500 events, oldest dropped first. Reading requires the secret returned at creation.","input_schema":{"type":"object","required":["action"],"additionalProperties":false,"properties":{"action":{"type":"string","enum":["create","poll","delete"],"description":"create makes a new inbox, poll reads events, delete removes it."},"inbox_id":{"type":"string","minLength":8,"maxLength":64,"description":"Required for poll and delete."},"secret":{"type":"string","minLength":8,"maxLength":128,"description":"The secret returned by create. Required for poll and delete."},"cursor":{"type":"integer","minimum":0,"default":0,"description":"Only events with a higher sequence number are returned."},"limit":{"type":"integer","minimum":1,"maximum":200,"default":50,"description":"Maximum events per poll."},"ttl_seconds":{"type":"integer","minimum":60,"maximum":604800,"default":3600,"description":"Lifetime of a new inbox, at most seven days."},"max_events":{"type":"integer","minimum":1,"maximum":500,"default":100,"description":"How many events the inbox keeps before dropping the oldest."},"note":{"type":"string","maxLength":200,"description":"Free label carried through."}}},"needs_history":false,"payment_required":true,"serviceName":"webhook_inbox","tags":["agent","webhook","events"],"example_request":{"action":"create","cursor":0,"limit":50,"ttl_seconds":3600,"max_events":100},"requestExample":{"action":"create","cursor":0,"limit":50,"ttl_seconds":3600,"max_events":100},"outputSchema":{"type":"object"},"outputExample":{"action":"create","inbox_id":"3c1ec60b225426fc2cf35028","secret":"0HiX6YvfXspoQcAaujPO_32e0_jsUIw0","receive_url":"https://agent.halowerk.com/inbox/3c1ec60b225426fc2cf35028","accepts":["POST","PUT","GET"],"expires_at":"2026-10-23T00:40:36.399Z","expires_at_ms":1792716036399,"ttl_seconds":3600,"max_events":100,"note":null,"how_to_poll":{"action":"poll","inbox_id":"3c1ec60b225426fc2cf35028","secret":"0HiX6YvfXspoQcAaujPO_32e0_jsUIw0","cursor":0},"warning":"Die Empfangsadresse ist oeffentlich. Jeder, der sie kennt, kann zustellen. Keine Zahlungs- oder Anmeldebestaetigungen hierher leiten."}},{"method":"POST","path":"/v1/state-store","url":"https://agent.halowerk.com/v1/state-store","tool":"state_store","price_usdc":0.002,"price_model":"per_call","summary":"Store, read, list and delete small pieces of agent state under a namespace, with a mandatory expiry so nothing is kept forever.","description":"Key-value state for agents that need to survive between calls. Every write carries a time-to-live; the maximum is 30 days and there is no way to store something permanently. Values are opaque JSON up to 64 KB, at most 1000 live keys per namespace. Actions: set, get, list, delete. A get on a missing or expired key answers found=false, it is not an error. The namespace is a plain string chosen by the caller and is not authenticated — anyone who knows it can read it, so do not put secrets in it.","input_schema":{"type":"object","required":["action","namespace"],"additionalProperties":false,"properties":{"action":{"type":"string","enum":["set","get","list","delete"],"description":"What to do."},"namespace":{"type":"string","minLength":3,"maxLength":128,"description":"Namespace the key lives in. Not a secret and not authenticated."},"key":{"type":"string","minLength":1,"maxLength":256,"description":"Key. Required for set, get and delete."},"value":{"description":"Any JSON value. Required for set. Serialised size must stay under 64 KB."},"ttl_seconds":{"type":"integer","minimum":1,"maximum":2592000,"default":3600,"description":"Lifetime in seconds, at most 30 days."},"limit":{"type":"integer","minimum":1,"maximum":500,"default":100,"description":"Maximum keys returned by list."}}},"needs_history":false,"payment_required":true,"serviceName":"state_store","tags":["agent","state","storage"],"example_request":{"action":"set","namespace":"beispiel","ttl_seconds":3600,"limit":100},"requestExample":{"action":"set","namespace":"beispiel","ttl_seconds":3600,"limit":100},"outputSchema":{"type":"object"}},{"method":"POST","path":"/v1/wakeup","url":"https://agent.halowerk.com/v1/wakeup","tool":"wakeup_schedule","price_usdc":0.002,"price_model":"per_call","summary":"Schedule one HTTP callback to your own URL at a fixed time, then check or cancel it — for agents that are not running when the moment arrives.","description":"Books a single POST to a URL you own, at a time you name, with a payload you supply. Delivery is retried up to five times with growing gaps and every attempt is recorded with its status. Lead time is between 10 seconds and 30 days, and at most 200 pending wakeups per target URL. The target must be a public https address: private, loopback and link-local addresses are refused, so this cannot be pointed at an internal network.","input_schema":{"type":"object","required":["action"],"additionalProperties":false,"properties":{"action":{"type":"string","enum":["schedule","status","cancel","list"],"description":"What to do."},"target_url":{"type":"string","maxLength":2000,"description":"Public https URL that receives the POST. Required for schedule and list."},"due_at":{"type":"string","description":"Absolute time as ISO 8601, e.g. 2026-08-12T09:00:00Z. Either this or delay_seconds."},"delay_seconds":{"type":"integer","minimum":10,"maximum":2592000,"description":"Relative lead time in seconds. Either this or due_at."},"payload":{"description":"JSON body delivered with the callback. Up to 16 KB."},"header_name":{"type":"string","maxLength":64,"description":"Optional header name sent with the callback, e.g. X-Agent-Token."},"header_value":{"type":"string","maxLength":512,"description":"Value for that header. Stored as given."},"wakeup_id":{"type":"string","minLength":8,"maxLength":64,"description":"Required for status and cancel."},"note":{"type":"string","maxLength":200,"description":"Free label carried through."},"limit":{"type":"integer","minimum":1,"maximum":100,"default":25,"description":"Maximum entries returned by list."}}},"needs_history":false,"payment_required":true,"serviceName":"wakeup_schedule","tags":["agent","scheduling","callback"],"example_request":{"action":"schedule","limit":25},"requestExample":{"action":"schedule","limit":25},"outputSchema":{"type":"object"}},{"method":"POST","path":"/v1/job-runner","url":"https://agent.halowerk.com/v1/job-runner","tool":"job_runner","price_usdc":0.003,"price_model":{"kind":"per_unit","unit":"step","unit_price_usdc":"0.003","min_usdc":"0.003","max_units":50,"max_usdc":"0.150000"},"summary":"Hand over a list of up to 50 HTTP calls, get an immediate job id, and have the collected results posted to your callback when they are done.","description":"For work that outlives one HTTP response. You submit steps, each an HTTP request against a public address; the job is acknowledged at once and runs in the background, and the collected results are POSTed to your callback URL when finished. Every step reports its status, timing, response headers and body up to 256 KB, and a failing step never aborts the others. Price is 0.003 USDC per step, quoted before payment.","input_schema":{"type":"object","required":["action"],"additionalProperties":false,"properties":{"action":{"type":"string","enum":["submit","status","cancel"],"description":"What to do."},"steps":{"type":"array","minItems":1,"maxItems":50,"description":"The calls to make, in order. Required for submit.","items":{"type":"object","required":["url"],"additionalProperties":false,"properties":{"url":{"type":"string","maxLength":2000,"description":"Public http or https address."},"method":{"type":"string","enum":["GET","POST","PUT","HEAD"],"default":"GET","description":"HTTP method."},"headers":{"type":"object","description":"Extra request headers."},"body":{"description":"Request body. Objects are sent as JSON."},"label":{"type":"string","maxLength":100,"description":"Name for this step in the result."}}}},"callback_url":{"type":"string","maxLength":2000,"description":"Public https URL that receives the finished job. Required for submit."},"callback_header_name":{"type":"string","maxLength":64,"description":"Optional header sent with the callback."},"callback_header_value":{"type":"string","maxLength":512,"description":"Value for that header."},"job_id":{"type":"string","minLength":8,"maxLength":64,"description":"Required for status and cancel."},"token":{"type":"string","minLength":16,"maxLength":128,"description":"The token from submit. Required for status and cancel."},"include_results":{"type":"boolean","default":false,"description":"Return the collected results with status as well as via callback."},"note":{"type":"string","maxLength":200,"description":"Free label carried through."}}},"needs_history":false,"payment_required":true,"serviceName":"job_runner","tags":["agent","async","jobs"],"example_request":{"action":"submit","include_results":false},"requestExample":{"action":"submit","include_results":false},"outputSchema":{"type":"object"}},{"method":"POST","path":"/v1/file-vault","url":"https://agent.halowerk.com/v1/file-vault","tool":"file_vault","price_usdc":0.004,"price_model":{"kind":"per_unit","unit":"megabyte","unit_price_usdc":"0.004","min_usdc":"0.004","max_units":25,"max_usdc":"0.100000"},"summary":"Park a file for a limited time and get back an unguessable download URL that anyone you send it to can fetch without a wallet.","description":"Takes a base64 file up to 25 MB and stores it for as long as you say, at most seven days. You get a download URL carrying a 32-byte token; whoever holds the link can fetch the file once or up to a limit you set, with no payment and no account. Price is 0.004 USDC per started megabyte, quoted before payment from the size you declare. Actions: store, status, delete.","input_schema":{"type":"object","required":["action"],"additionalProperties":false,"properties":{"action":{"type":"string","enum":["store","status","delete"],"description":"What to do."},"content_base64":{"type":"string","description":"File content, base64 encoded. Required for store."},"filename":{"type":"string","maxLength":255,"description":"Name suggested to the downloader."},"content_type":{"type":"string","maxLength":128,"default":"application/octet-stream","description":"MIME type served on download."},"ttl_seconds":{"type":"integer","minimum":60,"maximum":604800,"default":3600,"description":"Lifetime, at most seven days."},"max_downloads":{"type":"integer","minimum":1,"maximum":1000,"description":"Delete after this many downloads. Unlimited within the lifetime if omitted."},"size_bytes":{"type":"integer","minimum":1,"maximum":26214400,"description":"Declared size, used to quote the price before payment. Must match the real size."},"file_id":{"type":"string","minLength":8,"maxLength":64,"description":"Required for status and delete."},"token":{"type":"string","minLength":16,"maxLength":128,"description":"The token returned by store. Required for status and delete."},"note":{"type":"string","maxLength":200,"description":"Free label carried through."}}},"needs_history":false,"payment_required":true,"serviceName":"file_vault","tags":["agent","storage","files"],"example_request":{"action":"store","content_base64":"SGVsbG8sIEhBTE9XRVJLIQo=","filename":"hello.txt","content_type":"text/plain","ttl_seconds":60,"size_bytes":17},"requestExample":{"action":"store","content_base64":"SGVsbG8sIEhBTE9XRVJLIQo=","filename":"hello.txt","content_type":"text/plain","ttl_seconds":60,"size_bytes":17},"outputSchema":{"type":"object"},"outputExample":{"action":"store","file_id":"02f33424e46a4a8734c764a6","token":"pyqpEHTTxuXObvU4gP0KjoH_FbnOFPgJAsYxgapiyIY","download_url":"https://agent.halowerk.com/vault/02f33424e46a4a8734c764a6/pyqpEHTTxuXObvU4gP0KjoH_FbnOFPgJAsYxgapiyIY","bytes":17,"megabytes_charged":1,"sha256":"19754d5e79eef15d0c6b5956364f8597131731f0ee7c6785417b5eb17950a9c3","filename":"hello.txt","content_type":"text/plain","expires_at":"2026-10-22T23:41:36.487Z","expires_at_ms":1792712496487,"ttl_seconds":60,"max_downloads":null,"note":null,"warning":"Wer die Adresse hat, bekommt die Datei — ohne Zahlung und ohne Konto. Nichts Persoenliches oder Geheimes hier ablegen."}},{"method":"POST","path":"/v1/a2a-card-validate","url":"https://agent.halowerk.com/v1/a2a-card-validate","tool":"a2a_card_validate","price_usdc":0.002,"price_model":"per_call","summary":"Check an A2A Agent Card for required fields, skill definitions, authentication declarations and transport hygiene, and get every deviation listed with its JSON path.","description":"Validates an Agent Card document against the A2A convention and returns findings by severity: error (the card is unusable as published), warning (works, but a consuming agent will guess), info (recommended field absent).","input_schema":{"type":"object","required":["card"],"additionalProperties":false,"properties":{"card":{"type":"object","description":"The Agent Card document as JSON."},"strict":{"type":"boolean","default":false,"description":"If true, recommended-field findings count as warnings and lower the verdict."}}},"needs_history":false,"payment_required":true,"serviceName":"a2a_card_validate","tags":["agent","a2a","validation"],"example_request":{"card":{},"strict":false},"requestExample":{"card":{},"strict":false},"outputSchema":{"type":"object"},"outputExample":{"valid":false,"verdict":"invalid","counts":{"error":6,"warning":0,"info":6},"findings":[{"severity":"error","path":"/name","code":"required_missing","message":"Pflichtfeld \"name\" fehlt."},{"severity":"error","path":"/description","code":"required_missing","message":"Pflichtfeld \"description\" fehlt."},{"severity":"error","path":"/url","code":"required_missing","message":"Pflichtfeld \"url\" fehlt."},{"severity":"error","path":"/version","code":"required_missing","message":"Pflichtfeld \"version\" fehlt."},{"severity":"error","path":"/capabilities","code":"required_missing","message":"Pflichtfeld \"capabilities\" fehlt."},{"severity":"error","path":"/skills","code":"required_missing","message":"Pflichtfeld \"skills\" fehlt."},{"severity":"info","path":"/provider","code":"recommended_missing","message":"Empfohlenes Feld \"provider\" fehlt. Ein fremder Agent muss es sonst erraten."},{"severity":"info","path":"/documentationUrl","code":"recommended_missing","message":"Empfohlenes Feld \"documentationUrl\" fehlt. Ein fremder Agent muss es sonst erraten."},{"severity":"info","path":"/defaultInputModes","code":"recommended_missing","message":"Empfohlenes Feld \"defaultInputModes\" fehlt. Ein fremder Agent muss es sonst erraten."},{"severity":"info","path":"/defaultOutputModes","code":"recommended_missing","message":"Empfohlenes Feld \"defaultOutputModes\" fehlt. Ein fremder Agent muss es sonst erraten."},{"severity":"info","path":"/protocolVersion","code":"recommended_missing","message":"Empfohlenes Feld \"protocolVersion\" fehlt. Ein fremder Agent muss es sonst erraten."},{"severity":"info","path":"/securitySchemes","code":"auth_undeclared","message":"Keine Authentisierung erklaert. Ein Aufrufer muss annehmen, dass der Agent offen ist."}],"card_summary":{"name":null,"version":null,"url":null,"protocol_version":null,"skill_count":0,"skills":[],"streaming":null,"push_notifications":null,"auth_schemes":[]},"strict_mode":false,"checked_fields":{"required":["name","description","url","version","capabilities","skills"],"recommended":["provider","documentationUrl","defaultInputModes","defaultOutputModes","protocolVersion"]},"limits":"Nur das uebergebene Dokument wird geprueft. Es wird nichts abgerufen und der Agent nicht kontaktiert."}},{"method":"POST","path":"/v1/mcp-inspect","url":"https://agent.halowerk.com/v1/mcp-inspect","tool":"mcp_inspect","price_usdc":0.005,"price_model":"per_call","summary":"Look at a remote MCP server from the outside: whether it answers, which protocol it speaks, and the tools, resources and prompts it offers with their schemas.","description":"Performs the MCP handshake against a streamable-HTTP endpoint and then reads the catalogue: tools with their input schemas, resources with their URIs and mime types, and prompts with their arguments. Servers answering as an event stream are handled as well as plain JSON, and a session id is carried across calls. Only listing methods are sent — no tool of the inspected server is ever executed, nothing is written, and no resource contents are read.","input_schema":{"type":"object","required":["url"],"additionalProperties":false,"properties":{"url":{"type":"string","maxLength":2000,"description":"The MCP endpoint, e.g. https://example.com/mcp. Public https address."},"include":{"type":"array","default":["tools","resources","prompts"],"items":{"type":"string","enum":["tools","resources","prompts"]},"description":"Which catalogues to read."},"include_schemas":{"type":"boolean","default":true,"description":"Return the full input schema per tool. If false, only names and descriptions."}}},"needs_history":false,"payment_required":true,"serviceName":"mcp_inspect","tags":["agent","mcp","discovery"],"example_request":{"url":"beispiel","include":["tools","resources","prompts"],"include_schemas":true},"requestExample":{"url":"beispiel","include":["tools","resources","prompts"],"include_schemas":true},"outputSchema":{"type":"object"}},{"method":"POST","path":"/v1/mcp-normalize","url":"https://agent.halowerk.com/v1/mcp-normalize","tool":"mcp_normalize","price_usdc":0.002,"price_model":"per_call","summary":"Bring MCP tool definitions from different servers into one shape: uniform input schemas, a field list, a synthetic example call and a common set of error codes.","description":"Takes a list of MCP tool definitions, as returned by tools/list on any number of servers, and rewrites them into one common form. Servers disagree on where the schema lives — inputSchema, input_schema, parameters, schema or arguments are all in use — and a consumer reading only one of them loses the others silently; every spelling is accepted and the one found is reported.","input_schema":{"type":"object","required":["tools"],"additionalProperties":false,"properties":{"tools":{"type":"array","minItems":1,"maxItems":200,"description":"The MCP tool definitions to normalise.","items":{"type":"object","required":["name"],"properties":{"name":{"type":"string","minLength":1,"description":"Tool name."},"server":{"type":"string","description":"Which server the tool came from. Used for collision reporting."}}}},"include_examples":{"type":"boolean","default":true,"description":"Build a synthetic example call per tool."},"naming":{"type":"string","enum":["snake_case","preserve"],"default":"snake_case","description":"How to normalise tool names."}}},"needs_history":false,"payment_required":true,"serviceName":"mcp_normalize","tags":["agent","mcp","schema"],"example_request":{"tools":[{"name":"beispiel"}],"include_examples":true,"naming":"snake_case"},"requestExample":{"tools":[{"name":"beispiel"}],"include_examples":true,"naming":"snake_case"},"outputSchema":{"type":"object"},"outputExample":{"tools":[{"name":"beispiel","original_name":"beispiel","server":null,"description":null,"description_source_field":null,"schema_source_field":null,"input_schema":{"type":"object","properties":{},"additionalProperties":true},"schema_present":false,"required":[],"fields":[],"field_count":0,"example_call":{"name":"beispiel","arguments":{}}}],"summary":{"total":1,"with_schema":0,"without_schema":1,"with_description":0,"servers":[],"name_collisions":0},"collisions":[],"findings":[{"severity":"warning","tool":"beispiel","server":null,"code":"schema_missing","message":"Kein Schemafeld gefunden (gesucht: inputSchema, input_schema, parameters, schema, arguments). Der Aufruf muss geraten werden."},{"severity":"warning","tool":"beispiel","server":null,"code":"description_missing","message":"Keine Beschreibung. Ein Agent kann nicht entscheiden, wann er das Werkzeug nehmen soll."}],"error_taxonomy":[{"code":"invalid_arguments","when":"Ein Pflichtfeld fehlt oder ein Wert passt nicht zum Schema."},{"code":"not_found","when":"Die angeforderte Sache existiert beim Server nicht."},{"code":"permission_denied","when":"Der Aufrufer darf das Werkzeug nicht benutzen."},{"code":"rate_limited","when":"Zu viele Aufrufe in zu kurzer Zeit."},{"code":"upstream_error","when":"Ein Vorlieferant des Servers war nicht erreichbar."},{"code":"timeout","when":"Die Bearbeitung hat das Zeitbudget ueberschritten."},{"code":"internal_error","when":"Unerwarteter Fehler im Server."}],"naming":"snake_case","schema_fields_accepted":["inputSchema","input_schema","parameters","schema","arguments"],"limits":"example_call zeigt nur die Form. Werte wie \"string\" oder 0 sind Platzhalter und duerfen nicht an einen echten Server gehen."}},{"method":"POST","path":"/v1/fallback-resolve","url":"https://agent.halowerk.com/v1/fallback-resolve","tool":"fallback_resolve","price_usdc":0.005,"price_model":"per_call","summary":"Find paid x402 endpoints that can stand in for one that stopped answering, ranked by how well they match the task and what they cost.","description":"Searches the public x402 discovery catalogue for services able to replace a broken dependency. Give the failed URL and, better still, a short description of what it did and the fields you need back; matches are scored on overlap between your task words and the candidate name, description and path, then ordered by score and price. Every hit carries the reason it matched, its price in USDC, its network and when the catalogue last saw it.","input_schema":{"type":"object","required":["failed_url"],"additionalProperties":false,"properties":{"failed_url":{"type":"string","maxLength":2000,"description":"The endpoint that stopped working."},"task":{"type":"string","maxLength":500,"description":"What it did, in a few words. The single strongest signal for a good match."},"required_fields":{"type":"array","items":{"type":"string"},"default":[],"description":"Field names you need in the answer. Candidates mentioning them score higher."},"max_price_usdc":{"type":"number","minimum":0,"description":"Ignore candidates above this price per call."},"network":{"type":"string","maxLength":64,"description":"Only candidates on this network, e.g. eip155:8453."},"limit":{"type":"integer","minimum":1,"maximum":25,"default":10,"description":"How many candidates to return."}}},"needs_history":false,"payment_required":true,"serviceName":"fallback_resolve","tags":["agent","resilience","discovery"],"example_request":{"failed_url":"https://legacy.example.invalid/v1/weather/forecast","task":"Weather forecast with temperature and precipitation.","required_fields":["temperature","precipitation"],"network":"eip155:8453","limit":5},"requestExample":{"failed_url":"https://legacy.example.invalid/v1/weather/forecast","task":"Weather forecast with temperature and precipitation.","required_fields":["temperature","precipitation"],"network":"eip155:8453","limit":5},"outputSchema":{"type":"object"},"outputExample":{"failed_url":"https://legacy.example.invalid/v1/weather/forecast","failed_host":"legacy.example.invalid","candidates":[{"url":"https://bazaar-gateway.vercel.app/api/weather","host":"bazaar-gateway.vercel.app","name":"Navi Weather","description":"Real-time weather data and 3-day forecast for any location worldwide. Accepts city name or lat/lon coordinates. Returns temperature, humidity, wind, precipitation, and conditions. Powered by Open-Meteo.","price_usdc":0.001,"network":"eip155:8453","pay_to":"0x9200c98c8188ef50302ed3b8b0ffd5d39832090c","last_seen":"2026-09-28T12:24:36.453Z","score":1.3,"matched_terms":["weather","forecast","temperature","precipitation"],"matched_required_fields":["temperature","precipitation"],"same_host_as_failed":false,"why":"Matches 4 of 4 search terms and names 2 required fields."},{"url":"https://data.greeneris.io/v1/wx/forecast","host":"data.greeneris.io","name":"eu-verify","description":"Hourly weather forecast for any point on Earth from Open-Meteo (blend of ECMWF/GFS/ICON models, refreshed hourly; data CC-BY 4.0). Query: ?latitude=48.8566&longitude=2.3522&hourly=temperature_2m,precipitation,wind_speed_10m&forecast_days=2 (1-16 days, ~80 hourly variables available, optional daily= aggregates and timezone=auto). ISO 8601 time arrays + units. 15 min cache.","price_usdc":0.001,"network":"eip155:8453","pay_to":"0x6ab8efe305cce67daa48c97bde29c04402822dff","last_seen":"2026-10-22T22:00:02.367Z","score":1.3,"matched_terms":["weather","forecast","temperature","precipitation"],"matched_required_fields":["temperature","precipitation"],"same_host_as_failed":false,"why":"Matches 4 of 4 search terms and names 2 required fields."},{"url":"https://x402-datashop-production.up.railway.app/v1/wx/forecast","host":"x402-datashop-production.up.railway.app","name":"eu-verify","description":"Hourly weather forecast for any point on Earth from Open-Meteo (blend of ECMWF/GFS/ICON models, refreshed hourly; data CC-BY 4.0). Query: ?latitude=48.8566&longitude=2.3522&hourly=temperature_2m,precipitation,wind_speed_10m&forecast_days=2 (1-16 days, ~80 hourly variables available, optional daily= aggregates and timezone=auto). ISO 8601 time arrays + units. 15 min cache.","price_usdc":0.001,"network":"eip155:8453","pay_to":"0x6ab8efe305cce67daa48c97bde29c04402822dff","last_seen":"2026-10-22T22:00:18.504Z","score":1.3,"matched_terms":["weather","forecast","temperature","precipitation"],"matched_required_fields":["temperature","precipitation"],"same_host_as_failed":false,"why":"Matches 4 of 4 search terms and names 2 required fields."},{"url":"https://agents.dexl.io/v1/tools/weather","host":"agents.dexl.io","name":"DexL Agents","description":"Current weather and a short forecast for anywhere on earth, by place name or by latitude and longitude. Returns temperature, apparent temperature, humidity, precipitation, wind speed and direction, plus a daily high and low for up to seven days. Place names are geocoded for you.","price_usdc":0.001,"network":"eip155:8453","pay_to":"0x820D61a720963fab63aB6e0aeF4D1779Eb42F6BB","last_seen":"2026-10-22T22:00:01.220Z","score":1.3,"matched_terms":["weather","forecast","temperature","precipitation"],"matched_required_fields":["temperature","precipitation"],"same_host_as_failed":false,"why":"Matches 4 of 4 search terms and names 2 required fields."},{"url":"https://x402.tbs-digital.com/weather/current","host":"x402.tbs-digital.com","name":"TBS Weather & Climate API","description":"Complete weather bundle in one call: current conditions (temperature, feels-like, humidity, wind speed/direction/gusts, pressure, cloud cover, precipitation, UV, day/night) plus 24-hour hourly and 7-day daily forecast, air quality (AQI, PM2.5, PM10, ozone), solar radiation, and severe-weather alerts. Query by city name or lat/lon. Times in the location local timezone. Most complete weather data pe","price_usdc":0.001,"network":"eip155:8453","pay_to":"0xd6fCE15298Fc9D60f867d9455D497177Da9BFB0a","last_seen":"2026-10-22T22:00:07.091Z","score":1.3,"matched_terms":["weather","forecast","temperature","precipitation"],"matched_required_fields":["temperature","precipitation"],"same_host_as_failed":false,"why":"Matches 4 of 4 search terms and names 2 required fields."}],"found":2228,"returned":5,"search_terms":["weather","forecast","temperature","precipitation"],"catalogue":{"source":"x402 discovery (CDP), oeffentlich — lokale Kopie","entries_total":83365,"entries_prefiltered":2905,"refreshed_at":"2026-10-22T22:00:34.346Z","age_ms":6003437},"no_candidate":false,"advice":"Vor dem Umschalten die 402-Antwort des Kandidaten lesen: das Eingabeschema weicht ab, ein Tausch ohne Anpassung schlaegt fehl.","limits":"Es wird nur eine Kopie des oeffentlichen Index gelesen, kein Kandidat aufgerufen. Eine Listung ist kein Beleg dafuer, dass der Dienst heute antwortet. Die Vorauswahl greift auf die ersten 12 Suchbegriffe zu und liefert hoechstens 4000 Zeilen zur Feinbewertung."}},{"method":"POST","path":"/v1/task-quote-compare","url":"https://agent.halowerk.com/v1/task-quote-compare","tool":"task_quote_compare","price_usdc":0.005,"price_model":"per_call","summary":"Compare competing agent offers for one task on price, delivery time, required capabilities and output format, and get a ranked list with the reason for every position.","description":"Normalises offers that describe the same task in different shapes and ranks them. Each offer may carry a price, a delivery time, a list of capabilities and one or more delivery formats. You state which capabilities and formats the task requires; offers missing a required capability or format are marked ineligible and ranked last, never silently dropped. The ranking is a weighted score over price, speed and capability coverage, with weights you supply and which are echoed back.","input_schema":{"type":"object","required":["offers"],"additionalProperties":false,"properties":{"offers":{"type":"array","minItems":1,"maxItems":25,"description":"The competing offers.","items":{"type":"object","required":["agent"],"additionalProperties":false,"properties":{"agent":{"type":"string","minLength":1,"maxLength":128,"description":"Name of the offering agent."},"price":{"type":"number","minimum":0,"description":"Price for the whole task."},"currency":{"type":"string","minLength":2,"maxLength":10,"default":"USDC","description":"Currency. Must be the same across all offers."},"delivery_seconds":{"type":"integer","minimum":0,"description":"Promised delivery time in seconds."},"capabilities":{"type":"array","items":{"type":"string"},"default":[],"description":"What the agent says it can do."},"formats":{"type":"array","items":{"type":"string"},"default":[],"description":"Delivery formats offered, e.g. json, pdf, markdown."},"note":{"type":"string","maxLength":500,"description":"Free text carried through unchanged."}}}},"required_capabilities":{"type":"array","items":{"type":"string"},"default":[],"description":"Capabilities the task cannot do without."},"required_formats":{"type":"array","items":{"type":"string"},"default":[],"description":"Acceptable delivery formats. An offer matching any one of them qualifies."},"max_price":{"type":"number","minimum":0,"description":"Offers above this are marked ineligible."},"max_delivery_seconds":{"type":"integer","minimum":0,"description":"Offers slower than this are marked ineligible."},"weights":{"type":"object","additionalProperties":false,"description":"Weighting of the three criteria. Normalised to sum 1.","properties":{"price":{"type":"number","minimum":0,"default":0.4},"speed":{"type":"number","minimum":0,"default":0.3},"capability":{"type":"number","minimum":0,"default":0.3}}}}},"needs_history":false,"payment_required":true,"serviceName":"task_quote_compare","tags":["agent","procurement","comparison"],"example_request":{"offers":[{"agent":"beispiel","currency":"USDC","capabilities":[],"formats":[]}],"required_capabilities":[],"required_formats":[]},"requestExample":{"offers":[{"agent":"beispiel","currency":"USDC","capabilities":[],"formats":[]}],"required_capabilities":[],"required_formats":[]},"outputSchema":{"type":"object"},"outputExample":{"ranked":[{"agent":"beispiel","eligible":true,"ineligible_reasons":[],"score":0.3,"subscores":{"price":null,"speed":null,"capability":1},"price":null,"currency":null,"delivery_seconds":null,"capabilities":[],"missing_capabilities":[],"formats":[],"format_ok":true,"missing_fields":["price","delivery_seconds"],"note":null,"rank":1}],"recommendation":{"agent":"beispiel","score":0.3,"why":"Best weighted result among 1 eligible offers (price 40%, speed 30%, capability 30%)."},"no_eligible_offer":false,"summary":{"offers":1,"eligible":1,"ineligible":0,"currency":"USDC","price_range":null,"delivery_range_seconds":null,"price_spread_factor":null},"weights_used":{"price":0.4,"speed":0.3,"capability":0.3},"required":{"capabilities":[],"formats":[]},"limits":"No currency conversion and no validation that an offer is truthful. The comparison uses the providers' claims. Missing values score zero and are listed under missing_fields."}},{"method":"POST","path":"/v1/result-consensus","url":"https://agent.halowerk.com/v1/result-consensus","tool":"result_consensus","price_usdc":0.002,"price_model":"per_call","summary":"Compare several agent answers to the same question, report where they agree, and list every field where they contradict each other with the competing values.","description":"Takes two to twelve answers and returns a field-by-field comparison. For JSON answers every leaf path is compared across responders: a path is agreed when all responders that supplied it carry the same value, conflicting when they differ, and partial when some omitted it. Numbers count as equal inside a relative tolerance you set.","input_schema":{"type":"object","required":["answers"],"additionalProperties":false,"properties":{"answers":{"type":"array","minItems":2,"maxItems":12,"description":"The answers to compare. Two to twelve entries.","items":{"type":"object","required":["responder","value"],"additionalProperties":false,"properties":{"responder":{"type":"string","minLength":1,"maxLength":128,"description":"Name of the answering agent."},"value":{"description":"The answer: a JSON document or a string."},"weight":{"type":"number","minimum":0,"maximum":100,"default":1,"description":"Optional weight for the majority count."}}}},"number_tolerance":{"type":"number","minimum":0,"maximum":1,"default":0.001,"description":"Relative tolerance below which two numbers count as equal."},"text_similarity_threshold":{"type":"number","minimum":0,"maximum":1,"default":0.6,"description":"Word-overlap ratio from which two texts count as agreeing."}}},"needs_history":false,"payment_required":true,"serviceName":"result_consensus","tags":["agent","consensus","quality"],"example_request":{"answers":[{"responder":"beispiel","value":null,"weight":1},{"responder":"beispiel","value":null,"weight":1}],"number_tolerance":0.001,"text_similarity_threshold":0.6},"requestExample":{"answers":[{"responder":"beispiel","value":null,"weight":1},{"responder":"beispiel","value":null,"weight":1}],"number_tolerance":0.001,"text_similarity_threshold":0.6},"outputSchema":{"type":"object"}},{"method":"POST","path":"/v1/twin-diff","url":"https://agent.halowerk.com/v1/twin-diff","tool":"twin_diff","price_usdc":0.003,"price_model":"per_call","summary":"Compare a desired state document against an observed one field by field and get every deviation with its absolute and relative size, the tolerance that was applied and the declared unit.","description":"Takes two state documents — target (what the twin should look like) and observed (what was measured) — and returns a leaf-by-leaf comparison. Every leaf path carries one of five states: in_tolerance, out_of_tolerance, missing_in_observed, unexpected_in_observed or type_mismatch.","input_schema":{"type":"object","required":["target","observed"],"additionalProperties":false,"properties":{"target":{"type":"object","description":"The desired state document (the twin)."},"observed":{"type":"object","description":"The observed state document (the measurement)."},"tolerances":{"type":"array","maxItems":200,"description":"Per-path tolerances. Give tolerance_abs or tolerance_ratio, not both.","items":{"type":"object","required":["field"],"additionalProperties":false,"properties":{"field":{"type":"string","minLength":1,"maxLength":400,"description":"Leaf path as it appears in the result, e.g. /pump/pressure_bar. A trailing /* applies the entry to every leaf below that prefix."},"unit":{"type":"string","maxLength":32,"description":"Unit of this field, echoed into the result. Declared by you, never inferred."},"tolerance_abs":{"type":"number","minimum":0,"description":"Absolute tolerance in the unit of this field."},"tolerance_ratio":{"type":"number","minimum":0,"maximum":1,"description":"Relative tolerance as a ratio of the larger of the two values."}}}},"default_tolerance_ratio":{"type":"number","minimum":0,"maximum":1,"default":0,"description":"Relative tolerance for numeric paths without their own entry. 0 means exact equality."},"ignore_fields":{"type":"array","maxItems":200,"items":{"type":"string","minLength":1,"maxLength":400},"description":"Paths to leave out of the comparison. A trailing /* ignores everything below that prefix."},"case_insensitive_strings":{"type":"boolean","default":false,"description":"Compare string leaves without regard to case."},"max_fields":{"type":"integer","minimum":1,"maximum":2000,"default":2000,"description":"Reject the request if the two documents together hold more leaf paths than this."}}},"needs_history":false,"payment_required":true,"serviceName":"twin_diff","tags":["agent","state","diff","twin"],"example_request":{"target":{"pump":{"pressure_bar":4,"running":true},"firmware":"2.4.1","site":{"radius_km":12}},"observed":{"pump":{"pressure_bar":4.15,"running":true},"firmware":"2.3.9","site":{"radius_km":12.4}},"tolerances":[{"field":"/pump/pressure_bar","unit":"bar","tolerance_abs":0.2},{"field":"/site/radius_km","unit":"km","tolerance_ratio":0.01}],"default_tolerance_ratio":0},"requestExample":{"target":{"pump":{"pressure_bar":4,"running":true},"firmware":"2.4.1","site":{"radius_km":12}},"observed":{"pump":{"pressure_bar":4.15,"running":true},"firmware":"2.3.9","site":{"radius_km":12.4}},"tolerances":[{"field":"/pump/pressure_bar","unit":"bar","tolerance_abs":0.2},{"field":"/site/radius_km","unit":"km","tolerance_ratio":0.01}],"default_tolerance_ratio":0},"outputSchema":{"type":"object"},"outputExample":{"summary":{"compared_fields":4,"ignored_fields":0,"in_tolerance":2,"out_of_tolerance":2,"missing_in_observed":0,"unexpected_in_observed":0,"type_mismatch":0,"verdict":"drift"},"deviations":[{"path":"/site/radius_km","status":"out_of_tolerance","target":12,"observed":12.4,"delta_abs":0.4,"delta_ratio":0.0322580645,"unit":"km","unit_source":"declared","tolerance_applied":{"tolerance_ratio":0.01,"source":"explicit"}},{"path":"/firmware","status":"out_of_tolerance","target":"2.4.1","observed":"2.3.9","delta_abs":null,"delta_ratio":null,"unit":null,"unit_source":"not_declared","tolerance_applied":{"comparison":"equality","source":"type_has_no_tolerance"}}],"matching":["/pump/pressure_bar","/pump/running"],"settings_used":{"default_tolerance_ratio":0,"case_insensitive_strings":false,"explicit_tolerances":2,"max_fields":2000},"ignored":[],"limits":"Zustandslos: kein Zwilling wird gehalten, kein Verlauf gefuehrt, nichts synchronisiert. Listen werden ueber den Index verglichen, eine andere Reihenfolge zaehlt als Abweichung. Einheiten werden nie aus dem Feldnamen geschlossen, sondern nur uebernommen, wenn sie erklaert wurden. Nur Zahlen kennen eine Toleranz; Text, Wahrheitswerte und null werden auf Gleichheit geprueft."}},{"method":"POST","path":"/v1/memory-compact","url":"https://agent.halowerk.com/v1/memory-compact","tool":"memory_compact","price_usdc":0.005,"price_model":"per_call","summary":"Compact a long agent conversation to a character budget in four declared stages and get back exactly which messages stayed verbatim, which were trimmed and which were dropped, with the loss quantified.","description":"Takes a message history and a character budget and returns a shortened history together with a full account of what it cost.","input_schema":{"type":"object","required":["messages","budget_chars"],"additionalProperties":false,"properties":{"messages":{"type":"array","minItems":2,"maxItems":200,"description":"The conversation in order, oldest first.","items":{"type":"object","required":["role","content"],"additionalProperties":false,"properties":{"role":{"type":"string","enum":["system","user","assistant","tool"],"description":"Speaker role."},"content":{"type":"string","minLength":1,"maxLength":8000,"description":"Message text."},"id":{"type":"string","maxLength":128,"description":"Optional caller-side identifier, echoed unchanged."},"pin":{"type":"boolean","default":false,"description":"If true this message is protected: never trimmed, never dropped."}}}},"budget_chars":{"type":"integer","minimum":100,"maximum":400000,"description":"Character budget for the sum of all returned message contents."},"keep_last_n":{"type":"integer","minimum":0,"maximum":50,"default":5,"description":"How many of the most recent messages are protected."},"keep_roles":{"type":"array","maxItems":4,"default":["system"],"items":{"type":"string","enum":["system","user","assistant","tool"]},"description":"Roles whose messages are protected."},"duplicate_threshold":{"type":"number","minimum":0.5,"maximum":1,"default":0.9,"description":"Word-overlap ratio from which a later message of the same role counts as a near-duplicate of an earlier one."},"max_message_chars":{"type":"integer","minimum":80,"maximum":4000,"default":400,"description":"Length to which unprotected survivors are trimmed in the trim stage."}}},"needs_history":false,"payment_required":true,"serviceName":"memory_compact","tags":["agent","memory","context","compaction"],"example_request":{"messages":[{"role":"system","content":"You are a logistics dispatcher. Always answer with the shipment id first."},{"role":"user","content":"Where is shipment DE-4471? It left Hamburg on Monday morning and should reach Lyon by Thursday."},{"role":"assistant","content":"DE-4471 is in transit and cleared the Strasbourg hub at 03:10. Estimated arrival in Lyon is Thursday 14:00."},{"role":"user","content":"Where is shipment DE-4471? It left Hamburg on Monday morning and should reach Lyon by Thursday."},{"role":"assistant","content":"DE-4471 is still on schedule, no new scan since Strasbourg."},{"role":"user","content":"Good. Book the return leg for Friday."}],"budget_chars":400,"keep_last_n":2,"keep_roles":["system"],"duplicate_threshold":0.9,"max_message_chars":120},"requestExample":{"messages":[{"role":"system","content":"You are a logistics dispatcher. Always answer with the shipment id first."},{"role":"user","content":"Where is shipment DE-4471? It left Hamburg on Monday morning and should reach Lyon by Thursday."},{"role":"assistant","content":"DE-4471 is in transit and cleared the Strasbourg hub at 03:10. Estimated arrival in Lyon is Thursday 14:00."},{"role":"user","content":"Where is shipment DE-4471? It left Hamburg on Monday morning and should reach Lyon by Thursday."},{"role":"assistant","content":"DE-4471 is still on schedule, no new scan since Strasbourg."},{"role":"user","content":"Good. Book the return leg for Friday."}],"budget_chars":400,"keep_last_n":2,"keep_roles":["system"],"duplicate_threshold":0.9,"max_message_chars":120},"outputSchema":{"type":"object"},"outputExample":{"messages":[{"index":0,"role":"system","content":"You are a logistics dispatcher. Always answer with the shipment id first.","kept":"verbatim","protected":true,"protected_because":["role"],"original_chars":73,"chars":73},{"index":1,"role":"user","content":"Where is shipment DE-4471? It left Hamburg on Monday morning and should reach Lyon by Thursday.","kept":"verbatim","protected":false,"score":0.529412,"original_chars":95,"chars":95},{"index":2,"role":"assistant","content":"DE-4471 is in transit and cleared the Strasbourg hub at 03:10. Estimated arrival in Lyon is Thursday 14:00.","kept":"verbatim","protected":false,"score":0.483684,"original_chars":107,"chars":107},{"index":4,"role":"assistant","content":"DE-4471 is still on schedule, no new scan since Strasbourg.","kept":"verbatim","protected":true,"protected_because":["recent"],"original_chars":59,"chars":59},{"index":5,"role":"user","content":"Good. Book the return leg for Friday.","kept":"verbatim","protected":true,"protected_because":["recent"],"original_chars":37,"chars":37}],"stages":[{"stage":"pin","order":1,"protected_messages":3,"protected_indices":[0,4,5],"rule":{"keep_roles":["system"],"keep_last_n":2,"explicit_pins":0}},{"stage":"dedupe","order":2,"removed_messages":1,"removed":[{"index":3,"duplicate_of":1,"similarity":1,"chars":95}],"rule":{"duplicate_threshold":0.9,"method":"Jaccard word overlap, same role only, earlier message wins"}},{"stage":"trim","order":3,"trimmed_messages":0,"trimmed":[],"rule":{"max_message_chars":120,"cut_at":"last sentence boundary before the limit, hard cut if none in the last 60 percent"}},{"stage":"drop","order":4,"dropped_messages":0,"dropped":[],"rule":{"weights":{"recency":0.5,"role":0.3,"topic_overlap":0.2},"order":"lowest score first, older first on a tie","protected_never_dropped":true}}],"loss":{"input_messages":6,"output_messages":5,"input_chars":466,"output_chars":371,"dropped_messages":1,"dropped_chars":95,"trimmed_messages":0,"truncated_chars":0,"verbatim_messages":5,"retained_char_ratio":0.7961},"budget":{"budget_chars":400,"output_chars":371,"budget_met":true,"shortfall_chars":0,"protected_chars":169,"protected_exceeds_budget":false},"scoring":{"weights":{"recency":0.5,"role":0.3,"topic_overlap":0.2},"role_weights":{"system":1,"user":1,"assistant":0.7,"tool":0.5},"topic_terms_used":["4471","lyon","shipment","thursday","hamburg","left","monday","morning","reach","should","strasbourg","where","always","answer","arrival","book","cleared","dispatcher","estimated","first","friday","good","logistics","return","scan"],"note":"Recency is the position in the history from 0 to 1. Topic overlap is the share of a message word set that appears in topic_terms_used, the 25 most frequent terms longer than three characters across the whole history."},"limits":"No language model. Nothing is summarised, paraphrased or rewritten: every character of every returned content appears verbatim in the input, and nothing is appended. Duplicate detection is word overlap, which measures shared vocabulary and not meaning — the same fact in different words is not recognised as a duplicate. Trimming cuts at a sentence boundary and can remove the point of a long message. Protected messages are never dropped, so a budget below protected_chars cannot be met and budget_met is then false."}},{"method":"POST","path":"/v1/state-machine-step","url":"https://agent.halowerk.com/v1/state-machine-step","tool":"state_machine_step","price_usdc":0.002,"price_model":"per_call","summary":"Apply one event to a state machine definition and get back the next state, the actions it triggers, whether a deadline was breached and which events the machine will accept next.","description":"Takes a machine definition, the current state, one event and an optional context, and computes a single step. Transitions may carry a guard, which is a declared comparison — field, operator, value — and never an expression: the field is a dotted path into context or payload, so a machine handed in by a stranger cannot execute anything on this server.","input_schema":{"type":"object","required":["machine","current_state","event"],"additionalProperties":false,"properties":{"machine":{"type":"object","required":["initial","states"],"additionalProperties":false,"description":"The automaton definition.","properties":{"initial":{"type":"string","minLength":1,"maxLength":64,"description":"Name of the initial state. Must be one of the defined states."},"states":{"type":"array","minItems":1,"maxItems":200,"description":"The states of the machine.","items":{"type":"object","required":["name"],"additionalProperties":false,"properties":{"name":{"type":"string","minLength":1,"maxLength":64,"description":"State name, unique within the machine."},"final":{"type":"boolean","default":false,"description":"If true no event is accepted in this state."},"timeout_s":{"type":"number","minimum":0,"maximum":31536000,"description":"Deadline for this state in seconds."},"timeout_target":{"type":"string","minLength":1,"maxLength":64,"description":"State to move to when the deadline is exceeded. Without it a breach is only reported."},"timeout_actions":{"type":"array","maxItems":20,"items":{"type":"string","minLength":1,"maxLength":64},"description":"Actions triggered by the deadline transition."},"on":{"type":"array","maxItems":50,"description":"Event-driven transitions out of this state, evaluated in order.","items":{"type":"object","required":["event","target"],"additionalProperties":false,"properties":{"event":{"type":"string","minLength":1,"maxLength":64,"description":"Event name this transition reacts to."},"target":{"type":"string","minLength":1,"maxLength":64,"description":"State to move to."},"actions":{"type":"array","maxItems":20,"items":{"type":"string","minLength":1,"maxLength":64},"description":"Actions triggered by this transition."},"guard":{"type":"object","required":["field","op"],"additionalProperties":false,"description":"Condition that must hold for this transition to be taken.","properties":{"field":{"type":"string","minLength":1,"maxLength":200,"description":"Dotted path starting with context. or payload., e.g. context.attempts."},"op":{"type":"string","enum":["eq","ne","gt","gte","lt","lte","in","not_in","exists","not_exists"],"description":"Comparison operator."},"value":{"description":"Right-hand operand. Not used by exists and not_exists; an array for in and not_in."}}}}}}}}}}},"current_state":{"type":"string","minLength":1,"maxLength":64,"description":"The state the machine is in right now."},"event":{"type":"object","required":["name"],"additionalProperties":false,"description":"The event to apply.","properties":{"name":{"type":"string","minLength":1,"maxLength":64,"description":"Event name."},"payload":{"type":"object","description":"Event data, addressable in guards as payload.<field>."}}},"context":{"type":"object","description":"Machine context, addressable in guards as context.<field>. Never modified."},"elapsed_in_state_s":{"type":"number","minimum":0,"maximum":31536000,"default":0,"description":"Seconds already spent in current_state. Supplied by you, so the result does not depend on this server clock."},"timeout_precedence":{"type":"string","enum":["timeout","event"],"default":"timeout","description":"Which side wins when the deadline is breached and an event transition also matches."}}},"needs_history":false,"payment_required":true,"serviceName":"state_machine_step","tags":["agent","state","workflow","automaton"],"example_request":{"machine":{"initial":"awaiting_quote","states":[{"name":"awaiting_quote","timeout_s":3600,"timeout_target":"expired","timeout_actions":["notify_requester"],"on":[{"event":"quote_received","target":"quote_accepted","actions":["book_slot"],"guard":{"field":"payload.amount_eur","op":"lte","value":500}},{"event":"quote_received","target":"needs_approval","actions":["request_approval"]},{"event":"cancel","target":"cancelled"}]},{"name":"quote_accepted","on":[{"event":"cancel","target":"cancelled"}]},{"name":"needs_approval","on":[{"event":"approved","target":"quote_accepted"}]},{"name":"cancelled","final":true},{"name":"expired","final":true}]},"current_state":"awaiting_quote","event":{"name":"quote_received","payload":{"amount_eur":420}},"context":{"attempts":1},"elapsed_in_state_s":120,"timeout_precedence":"timeout"},"requestExample":{"machine":{"initial":"awaiting_quote","states":[{"name":"awaiting_quote","timeout_s":3600,"timeout_target":"expired","timeout_actions":["notify_requester"],"on":[{"event":"quote_received","target":"quote_accepted","actions":["book_slot"],"guard":{"field":"payload.amount_eur","op":"lte","value":500}},{"event":"quote_received","target":"needs_approval","actions":["request_approval"]},{"event":"cancel","target":"cancelled"}]},{"name":"quote_accepted","on":[{"event":"cancel","target":"cancelled"}]},{"name":"needs_approval","on":[{"event":"approved","target":"quote_accepted"}]},{"name":"cancelled","final":true},{"name":"expired","final":true}]},"current_state":"awaiting_quote","event":{"name":"quote_received","payload":{"amount_eur":420}},"context":{"attempts":1},"elapsed_in_state_s":120,"timeout_precedence":"timeout"},"outputSchema":{"type":"object"},"outputExample":{"next_state":"quote_accepted","state_changed":true,"transition":{"taken":true,"via":"event","from":"awaiting_quote","to":"quote_accepted","event":"quote_received","actions":["book_slot"]},"actions":["book_slot"],"unhandled_event":false,"deadline":{"timeout_s":3600,"elapsed_in_state_s":120,"exceeded":false,"remaining_s":3480,"timeout_target":"expired","moves_machine":false},"guard_evaluations":[{"event":"quote_received","target":"quote_accepted","guard":{"field":"payload.amount_eur","op":"lte"},"result":true,"field_resolved":true}],"is_final":false,"allowed_events":{"in_current_state":["quote_received","cancel"],"in_next_state":["cancel"]},"machine_check":{"states":5,"transitions":5,"initial":"awaiting_quote","final_states":["cancelled","expired"],"unreachable_states":[]},"settings_used":{"timeout_precedence":"timeout","elapsed_in_state_s":120},"limits":"Zustandslos: weder Automat noch Zustand noch Verlauf werden gehalten, und genau ein Schritt wird gerechnet. Der Kontext wird nie veraendert — Aktionen werden benannt, nicht ausgefuehrt. Fristen werden allein aus elapsed_in_state_s gerechnet, nicht aus der Serveruhr. Waechter sind erklaerte Vergleiche, keine Ausdruecke: ein Waechter, dessen Feld sich nicht aufloesen laesst, ergibt false und meldet das unter skipped_because."}},{"method":"POST","path":"/v1/intent-clarify","url":"https://agent.halowerk.com/v1/intent-clarify","tool":"intent_clarify","price_usdc":0.005,"price_model":"per_call","summary":"Given several candidate intents and what tells them apart, get the single follow-up question that narrows the set fastest, with the expected and worst-case number of candidates left after each possible answer.","description":"Takes a list of candidate intents, each described by attributes, plus whatever is already known, and returns the one attribute worth asking about next. Candidates contradicted by the known values are ruled out first and listed with the attribute that excluded them; a candidate that simply does not declare a known attribute is kept, because silence is not a contradiction.","input_schema":{"type":"object","required":["candidates"],"additionalProperties":false,"properties":{"candidates":{"type":"array","minItems":2,"maxItems":50,"description":"The competing intents, two to fifty.","items":{"type":"object","required":["id","attributes"],"additionalProperties":false,"properties":{"id":{"type":"string","minLength":1,"maxLength":128,"description":"Identifier, unique within the call."},"label":{"type":"string","maxLength":300,"description":"Optional human-readable name, echoed unchanged."},"attributes":{"type":"object","description":"What distinguishes this candidate. Values must be scalar.","additionalProperties":{"type":["string","number","boolean","null"]}},"prior":{"type":"number","minimum":0,"maximum":1000,"default":1,"description":"Relative likelihood of this candidate before asking. Used to weight the expected outcome."}}}},"known":{"type":"object","description":"Attribute values already established, for example from earlier answers.","additionalProperties":{"type":["string","number","boolean","null"]}},"ask_about":{"type":"array","maxItems":50,"items":{"type":"string","minLength":1,"maxLength":128},"description":"Restrict the question to these attributes. Empty or absent means all of them."},"max_options":{"type":"integer","minimum":2,"maximum":10,"default":5,"description":"How many answer options the question may offer. Excess values are named under omitted_values, never dropped silently."},"attribute_prompts":{"type":"object","description":"Your own question wording per attribute. Used verbatim where given.","additionalProperties":{"type":"string","maxLength":300}}}},"needs_history":false,"payment_required":true,"serviceName":"intent_clarify","tags":["agent","intent","disambiguation","dialogue"],"example_request":{"candidates":[{"id":"book_flight","label":"Book a flight","attributes":{"object":"travel","action":"book","urgency":"high"},"prior":3},{"id":"book_hotel","label":"Book a hotel room","attributes":{"object":"lodging","action":"book","urgency":"high"},"prior":2},{"id":"cancel_flight","label":"Cancel a flight","attributes":{"object":"travel","action":"cancel","urgency":"high"},"prior":1},{"id":"flight_status","label":"Check flight status","attributes":{"object":"travel","action":"inspect","urgency":"low"},"prior":4}],"known":{"urgency":"high"},"max_options":5,"attribute_prompts":{"action":"What would you like to do?"}},"requestExample":{"candidates":[{"id":"book_flight","label":"Book a flight","attributes":{"object":"travel","action":"book","urgency":"high"},"prior":3},{"id":"book_hotel","label":"Book a hotel room","attributes":{"object":"lodging","action":"book","urgency":"high"},"prior":2},{"id":"cancel_flight","label":"Cancel a flight","attributes":{"object":"travel","action":"cancel","urgency":"high"},"prior":1},{"id":"flight_status","label":"Check flight status","attributes":{"object":"travel","action":"inspect","urgency":"low"},"prior":4}],"known":{"urgency":"high"},"max_options":5,"attribute_prompts":{"action":"What would you like to do?"}},"outputSchema":{"type":"object"},"outputExample":{"resolved":false,"remaining_candidates":["book_flight","book_hotel","cancel_flight"],"ruled_out":[{"id":"flight_status","label":"Check flight status","contradicts":{"attribute":"urgency","known_value":"high","candidate_value":"low"}}],"question":{"attribute":"object","prompt":"Which object applies?","prompt_source":"template","options":[{"value":"travel","keeps":["book_flight","cancel_flight"],"count":2,"prior_mass":4},{"value":"lodging","keeps":["book_hotel"],"count":1,"prior_mass":2}],"options_truncated":false,"expected_remaining_candidates":1.6667,"worst_case_remaining":2,"information_bits":0.848,"splits_cleanly":true},"alternatives":[{"attribute":"action","expected_remaining_candidates":1.8333,"worst_case_remaining":2,"information_bits":0.7105,"option_count":2,"splits_cleanly":true}],"unusable_attributes":[],"estimated_questions_remaining":2,"estimate_method":"Greedy worst case: take the best-ranked attribute, follow the branch with the most candidates, repeat. An upper bound for this strategy, not a proven minimum.","ranking_criteria":["expected_remaining_candidates asc","worst_case_remaining asc","option_count asc","attribute name asc"],"counts":{"candidates_in":4,"ruled_out":1,"remaining":3,"known_attributes_used":["urgency"]},"limits":"No language model and no natural-language understanding. Candidates, attributes and values are taken exactly as given and none are ever invented. A candidate that does not declare a known attribute is kept, because silence is not a contradiction; such candidates survive every branch of a question and are named under survive_every_answer. The question wording is a fixed template over the attribute name unless attribute_prompts supplies one. estimated_questions_remaining is a greedy worst-case upper bound, not a proven minimum. Stateless: no dialogue is remembered, so pass the accumulated answers back in known on the next call."}},{"method":"POST","path":"/v1/ephemeral-rag","url":"https://agent.halowerk.com/v1/ephemeral-rag","tool":"ephemeral_rag","price_usdc":0.005,"price_model":"per_call","summary":"Create, update, query, inspect or delete an isolated micro vector store whose documents and embeddings are automatically erased after 24 hours.","description":"Stores at most 20 short documents in an isolated SQLite row, embeds them with the local nomic-embed-text model, and performs cosine-similarity retrieval. Each store has a random identifier and a fixed 24-hour lifetime that is never extended by reads or writes. An in-process sweeper deletes expired rows every minute and each request also purges expiry. Input text is not written to request logs. This is retrieval infrastructure, not a durable database or an answer-generating model.","input_schema":{"type":"object","required":["action"],"additionalProperties":false,"properties":{"action":{"type":"string","enum":["create","upsert","query","status","delete"]},"store_id":{"type":"string","minLength":30,"maxLength":80},"documents":{"type":"array","minItems":1,"maxItems":20,"items":{"type":"object","required":["id","text"],"additionalProperties":false,"properties":{"id":{"type":"string","minLength":1,"maxLength":100},"text":{"type":"string","minLength":1,"maxLength":5000},"metadata":{"type":"object","maxProperties":20,"additionalProperties":{"type":["string","number","boolean","null"]}}}}},"query":{"type":"string","minLength":1,"maxLength":5000},"top_k":{"type":"integer","minimum":1,"maximum":10,"default":5}}},"needs_history":false,"payment_required":true,"serviceName":"ephemeral_rag","tags":["rag","vector","embeddings","ephemeral"],"example_request":{"action":"create","documents":[{"id":"intro","text":"HALOWERK sells machine-readable agent services."}]},"requestExample":{"action":"create","documents":[{"id":"intro","text":"HALOWERK sells machine-readable agent services."}]},"outputSchema":{"type":"object"}},{"method":"POST","path":"/v1/oss-tofu-encrypted-state-roundtrip","url":"https://agent.halowerk.com/v1/oss-tofu-encrypted-state-roundtrip","tool":"oss_tofu_encrypted_state_roundtrip","price_usdc":0.0035,"price_model":"per_call","summary":"Encrypt a state snapshot through the pinned OpenTofu mechanism and get proof that an authorized key recovers it exactly and a wrong key does not.","description":"Takes an OpenTofu state snapshot and a passphrase, encrypts the snapshot through the pinned OpenTofu state-encryption code, then proves the result three ways: the authorized key recovers the state with an identical semantic hash, a wrong key is rejected, and a tampered payload is rejected. What comes back is the encrypted artifact plus those proofs and the resource-instance count, never the plaintext.","input_schema":{"type":"object","properties":{"state_json":{"type":"string","minLength":1,"maxLength":2097152},"passphrase":{"type":"string","minLength":32,"maxLength":1024}},"required":["state_json","passphrase"],"additionalProperties":false},"needs_history":false,"payment_required":true,"serviceName":"oss_tofu_encrypted_state_roundtrip","tags":["oss","tofu","p022"],"example_request":{"state_json":"{\"version\":4,\"terraform_version\":\"1.12.6\",\"serial\":1,\"lineage\":\"00000000-0000-4000-8000-000000000001\",\"outputs\":{},\"resources\":[{\"mode\":\"managed\",\"type\":\"terraform_data\",\"name\":\"old\",\"provider\":\"provider[\\\"terraform.io/builtin/terraform\\\"]\",\"instances\":[{\"schema_version\":0,\"attributes\":{\"id\":\"00000000-0000-4000-8000-000000000002\",\"input\":{\"value\":\"alpha\",\"type\":\"string\"},\"output\":{\"value\":\"alpha\",\"type\":\"string\"},\"triggers_replace\":null},\"sensitive_attributes\":[]}]}],\"check_results\":null}","passphrase":"public-synthetic-fixture-passphrase-only-2026"},"requestExample":{"state_json":"{\"version\":4,\"terraform_version\":\"1.12.6\",\"serial\":1,\"lineage\":\"00000000-0000-4000-8000-000000000001\",\"outputs\":{},\"resources\":[{\"mode\":\"managed\",\"type\":\"terraform_data\",\"name\":\"old\",\"provider\":\"provider[\\\"terraform.io/builtin/terraform\\\"]\",\"instances\":[{\"schema_version\":0,\"attributes\":{\"id\":\"00000000-0000-4000-8000-000000000002\",\"input\":{\"value\":\"alpha\",\"type\":\"string\"},\"output\":{\"value\":\"alpha\",\"type\":\"string\"},\"triggers_replace\":null},\"sensitive_attributes\":[]}]}],\"check_results\":null}","passphrase":"public-synthetic-fixture-passphrase-only-2026"},"outputSchema":{"type":"object","properties":{"operation":{"const":"encrypted-state-roundtrip"},"result":{"type":"object","properties":{"encrypted_state":{"type":"object","properties":{"filename":{"const":"encrypted-state.json"},"media_type":{"const":"application/json"},"bytes":{"type":"integer","minimum":1,"maximum":16777216},"sha256":{"type":"string","pattern":"^[a-f0-9]{64}$"},"result_reference":{"type":"string","pattern":"^urn:halowerk:job-artifact:[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}:encrypted-state[.]json$"}},"required":["filename","media_type","bytes","sha256","result_reference"],"additionalProperties":false},"plaintext_semantic_sha256":{"type":"string","pattern":"^[a-f0-9]{64}$"},"recovered_semantic_sha256":{"type":"string","pattern":"^[a-f0-9]{64}$"},"wrong_key_rejected":{"const":true},"tamper_rejected":{"const":true},"resource_instances":{"type":"integer","minimum":0,"maximum":256},"method":{"const":"OpenTofu AES-GCM with PBKDF2"},"key_returned":{"const":false},"warnings":{"type":"array","items":{"type":"string","minLength":1,"maxLength":1024},"minItems":0,"maxItems":32}},"required":["encrypted_state","plaintext_semantic_sha256","recovered_semantic_sha256","wrong_key_rejected","tamper_rejected","resource_instances","method","key_returned","warnings"],"additionalProperties":false},"upstream":{"type":"object","properties":{"project":{"const":"OpenTofu"},"version":{"const":"1.12.6"},"source_commit":{"const":"b4305e5a5dd2fb79a27897ae30784a181d3a26cb"},"binary_sha256":{"const":"64445c0e89fe1066cfd6155c01f3119ffbafd5631d61061e6dc8d759edd37cd0"},"provider_bundle_sha256":{"const":"4f53cda18c2baa0c0354bb5f9a3ecbe5ed12ab4d8e11ba873c2f11161202b945"},"components":{"const":["encryption","aesgcm","pbkdf2"]},"input_semantic_sha256":{"type":"string","pattern":"^[a-f0-9]{64}$"}},"required":["project","version","source_commit","binary_sha256","provider_bundle_sha256","components","input_semantic_sha256"],"additionalProperties":false},"runtime_ms":{"type":"number","minimum":0,"maximum":90000}},"required":["operation","result","upstream","runtime_ms"],"additionalProperties":false}},{"method":"POST","path":"/v1/oss-openrewrite-java-package-relocation","url":"https://agent.halowerk.com/v1/oss-openrewrite-java-package-relocation","tool":"oss_openrewrite_java_package_relocation","price_usdc":0.004,"price_model":"per_call","summary":"Move a Java package across a source set using OpenRewrite's type-attributed refactoring, with before-and-after compilation as evidence it still builds.","description":"Relocates a Java package across a bounded set of source files using OpenRewrite, which works on a type-attributed syntax tree rather than on text. That is the difference that matters: a textual search and replace hits strings, comments and same-named symbols from other packages, while this changes only what actually refers to the package.","input_schema":{"type":"object","properties":{"files":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string","maxLength":256,"pattern":"^src/(?:[A-Za-z_][A-Za-z0-9_]*/)*(?:[A-Za-z_][A-Za-z0-9_]*|package-info)\\.java$"},"content":{"type":"string","minLength":1,"maxLength":16384}},"required":["path","content"],"additionalProperties":false},"minItems":1,"maxItems":32},"old_package":{"type":"string","maxLength":128,"pattern":"^[A-Za-z_][A-Za-z0-9_]*(\\.[A-Za-z_][A-Za-z0-9_]*)*$"},"new_package":{"type":"string","maxLength":128,"pattern":"^[A-Za-z_][A-Za-z0-9_]*(\\.[A-Za-z_][A-Za-z0-9_]*)*$"},"recursive":{"type":"boolean"}},"required":["files","old_package","new_package","recursive"],"additionalProperties":false},"needs_history":false,"payment_required":true,"serviceName":"oss_openrewrite_java_package_relocation","tags":["oss","openrewrite","p037"],"example_request":{"files":[{"path":"src/old/api/Counter.java","content":"package old.api;\npublic class Counter { public static int twice(int x) { return x * 2; } }\n"},{"path":"src/client/Use.java","content":"package client;\nimport old.api.Counter;\npublic class Use { public int value() { return Counter.twice(3); } public String label() { return \"old.api\"; } }\n"}],"old_package":"old.api","new_package":"newapi","recursive":true},"requestExample":{"files":[{"path":"src/old/api/Counter.java","content":"package old.api;\npublic class Counter { public static int twice(int x) { return x * 2; } }\n"},{"path":"src/client/Use.java","content":"package client;\nimport old.api.Counter;\npublic class Use { public int value() { return Counter.twice(3); } public String label() { return \"old.api\"; } }\n"}],"old_package":"old.api","new_package":"newapi","recursive":true},"outputSchema":{"type":"object","properties":{"operation":{"const":"java-package-relocation"},"result":{"type":"object","properties":{"status":{"enum":["changed","no_matches"]},"changed_file_count":{"type":"integer","minimum":0,"maximum":32},"files":{"type":"array","items":{"type":"object","properties":{"before_path":{"type":"string","maxLength":256,"pattern":"^src/(?:[A-Za-z_][A-Za-z0-9_]*/)*(?:[A-Za-z_][A-Za-z0-9_]*|package-info)\\.java$"},"after_path":{"type":"string","maxLength":256,"pattern":"^src/(?:[A-Za-z_][A-Za-z0-9_]*/)*(?:[A-Za-z_][A-Za-z0-9_]*|package-info)\\.java$"},"before_sha256":{"type":"string","pattern":"^[a-f0-9]{64}$"},"after_sha256":{"type":"string","pattern":"^[a-f0-9]{64}$"},"after_content":{"type":"string","minLength":1,"maxLength":32768}},"required":["before_path","after_path","before_sha256","after_sha256","after_content"],"additionalProperties":false},"minItems":0,"maxItems":32},"unchanged_files":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string","maxLength":256,"pattern":"^src/(?:[A-Za-z_][A-Za-z0-9_]*/)*(?:[A-Za-z_][A-Za-z0-9_]*|package-info)\\.java$"},"sha256":{"type":"string","pattern":"^[a-f0-9]{64}$"}},"required":["path","sha256"],"additionalProperties":false},"minItems":0,"maxItems":32},"unified_diff":{"type":"string","maxLength":1048576},"compilation":{"type":"object","properties":{"before_exit_code":{"const":0},"after_exit_code":{"const":0},"release":{"const":21},"annotation_processing":{"const":false},"user_program_executed":{"const":false},"compiler_bundle_sha256":{"const":"5ad8720a1793f2e6f8bf7b3d4c7d40a0c7c86922c46a08dafa2e8a9e63e891d0"},"before_class_count":{"type":"integer","minimum":0,"maximum":256},"after_class_count":{"type":"integer","minimum":0,"maximum":256}},"required":["before_exit_code","after_exit_code","release","annotation_processing","user_program_executed","compiler_bundle_sha256","before_class_count","after_class_count"],"additionalProperties":false},"native_validation":{"type":"object","properties":{"parse_errors":{"const":0},"missing_type_markers":{"const":0},"second_pass_changed_files":{"const":0},"recipe_runs":{"const":2}},"required":["parse_errors","missing_type_markers","second_pass_changed_files","recipe_runs"],"additionalProperties":false},"warnings":{"type":"array","items":{"type":"string","minLength":1,"maxLength":1024},"minItems":1,"maxItems":16}},"required":["status","changed_file_count","files","unchanged_files","unified_diff","compilation","native_validation","warnings"],"additionalProperties":false},"upstream":{"type":"object","properties":{"project":{"const":"OpenRewrite"},"version":{"const":"8.90.4"},"source_commit":{"const":"398a6349648ca802aa050bdb6fe45a99395dce47"},"runtime_bundle_sha256":{"const":"dd1543d7f77eb76c72a9fefa9136669c06e44f744067780fecc12b22ed4d2976"},"components":{"const":["recipe","run","result","source_set","java_parser","package_relocation","missing_types","package_tests"]},"canonical_request_sha256":{"type":"string","pattern":"^[a-f0-9]{64}$"}},"required":["project","version","source_commit","runtime_bundle_sha256","components","canonical_request_sha256"],"additionalProperties":false},"runtime_ms":{"type":"number","minimum":0,"maximum":60000}},"required":["operation","result","upstream","runtime_ms"],"additionalProperties":false}},{"method":"POST","path":"/v1/oss-openrefine-table-collision-review-plan","url":"https://agent.halowerk.com/v1/oss-openrefine-table-collision-review-plan","tool":"oss_openrefine_table_collision_review_plan","price_usdc":0.0035,"price_model":"per_call","summary":"Find duplicate keys in a table using native OpenRefine fingerprinting, and get a row-linked consolidation plan that separates safe merges from real conflicts.","description":"Clusters a key column with native OpenRefine fingerprinting and returns a consolidation plan tied to actual row ids. The plan distinguishes the two cases that matter: rows that repeat an identical value and can simply be merged, and rows that collide on the key but disagree in other fields — those are flagged as unresolved rather than silently collapsed, because merging them would destroy information. Excluded rows and singletons are reported too, so the plan accounts for every input row.","input_schema":{"type":"object","properties":{"table":{"type":"object","properties":{"columns":{"type":"array","items":{"type":"string","pattern":"^[A-Za-z][A-Za-z0-9_]{0,31}$"},"minItems":1,"maxItems":16},"rows":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","pattern":"^[A-Za-z][A-Za-z0-9_]{0,31}$"},"values":{"type":"array","items":{"anyOf":[{"type":"string","maxLength":4096},{"type":"null"}]},"minItems":1,"maxItems":16}},"required":["id","values"],"additionalProperties":false},"minItems":1,"maxItems":1000}},"required":["columns","rows"],"additionalProperties":false},"match_column":{"type":"string","pattern":"^[A-Za-z][A-Za-z0-9_]{0,31}$"}},"required":["table","match_column"],"additionalProperties":false},"needs_history":false,"payment_required":true,"serviceName":"oss_openrefine_table_collision_review_plan","tags":["oss","openrefine","p043"],"example_request":{"table":{"columns":["name","country","code"],"rows":[{"id":"r1","values":["Tom Cruise","US","A"]},{"id":"r2","values":["Cruise, Tom","US","A"]},{"id":"r3","values":["tom cruise","CA","A"]},{"id":"r4","values":["Gödel","AT","B"]},{"id":"r5","values":["Godel","AT","B"]},{"id":"r6","values":["Acme","US",null]},{"id":"r7","values":["Acme","US",""]},{"id":"r8","values":["---","US","C"]},{"id":"r9","values":[null,"US","D"]},{"id":"r10","values":["Unique","US","E"]}]},"match_column":"name"},"requestExample":{"table":{"columns":["name","country","code"],"rows":[{"id":"r1","values":["Tom Cruise","US","A"]},{"id":"r2","values":["Cruise, Tom","US","A"]},{"id":"r3","values":["tom cruise","CA","A"]},{"id":"r4","values":["Gödel","AT","B"]},{"id":"r5","values":["Godel","AT","B"]},{"id":"r6","values":["Acme","US",null]},{"id":"r7","values":["Acme","US",""]},{"id":"r8","values":["---","US","C"]},{"id":"r9","values":[null,"US","D"]},{"id":"r10","values":["Unique","US","E"]}]},"match_column":"name"},"outputSchema":{"type":"object","properties":{"operation":{"const":"table-collision-review-plan"},"result":{"type":"object","properties":{"plan":{"type":"object","properties":{"artifact_id":{"type":"string","minLength":1,"maxLength":128},"sha256":{"type":"string","pattern":"^[a-f0-9]{64}$"},"bytes":{"type":"integer","minimum":1,"maximum":8388608},"media_type":{"const":"application/json"}},"required":["artifact_id","sha256","bytes","media_type"],"additionalProperties":false},"source_table_sha256":{"type":"string","pattern":"^[a-f0-9]{64}$"},"native_projection_sha256":{"type":"string","pattern":"^[a-f0-9]{64}$"},"groups":{"type":"array","items":{"type":"object","properties":{"group_id":{"type":"string","pattern":"^[A-Za-z][A-Za-z0-9_]{0,31}$"},"row_ids":{"type":"array","items":{"type":"string","pattern":"^[A-Za-z][A-Za-z0-9_]{0,31}$"},"minItems":2,"maxItems":1000},"fingerprint":{"type":"string","minLength":1,"maxLength":4096},"preferred_value":{"type":"string","minLength":1,"maxLength":4096},"conflict_columns":{"type":"array","items":{"type":"string","pattern":"^[A-Za-z][A-Za-z0-9_]{0,31}$"},"minItems":0,"maxItems":15},"kind":{"enum":["native_fingerprint_collision","exact_value_repeat"]},"requires_review":{"const":true}},"required":["group_id","row_ids","fingerprint","preferred_value","conflict_columns","kind","requires_review"],"additionalProperties":false},"minItems":0,"maxItems":500},"excluded_rows":{"type":"array","items":{"type":"object","properties":{"row_id":{"type":"string","pattern":"^[A-Za-z][A-Za-z0-9_]{0,31}$"},"reason":{"enum":["null_match_value","empty_fingerprint"]}},"required":["row_id","reason"],"additionalProperties":false},"minItems":0,"maxItems":1000},"singleton_row_ids":{"type":"array","items":{"type":"string","pattern":"^[A-Za-z][A-Za-z0-9_]{0,31}$"},"minItems":0,"maxItems":1000},"native_distinct_value_cluster_count":{"type":"integer","minimum":0,"maximum":500},"source_rows":{"type":"integer","minimum":1,"maximum":1000},"source_unchanged":{"const":true},"automatic_merges_applied":{"const":0},"scope":{"const":"lexical_collision_candidates_not_confirmed_entity_identity"},"warnings":{"type":"array","items":{"type":"string","minLength":1,"maxLength":1024},"minItems":1,"maxItems":16}},"required":["plan","source_table_sha256","native_projection_sha256","groups","excluded_rows","singleton_row_ids","native_distinct_value_cluster_count","source_rows","source_unchanged","automatic_merges_applied","scope","warnings"],"additionalProperties":false},"upstream":{"type":"object","properties":{"project":{"const":"OpenRefine"},"version":{"const":"3.10-SNAPSHOT"},"source_commit":{"const":"1e6e28f4fc3724ff4bfd55de1bfe2ca1b6b41141"},"runtime_bundle_sha256":{"type":"string","pattern":"^[a-f0-9]{64}$"},"components":{"const":["FingerprintKeyer","BinningClusterer","Project","Engine"]},"canonical_request_sha256":{"type":"string","pattern":"^[a-f0-9]{64}$"},"java_locale":{"const":"ROOT"},"timezone":{"const":"UTC"}},"required":["project","version","source_commit","runtime_bundle_sha256","components","canonical_request_sha256","java_locale","timezone"],"additionalProperties":false},"runtime_ms":{"type":"number","minimum":0,"maximum":180000}},"required":["operation","result","upstream","runtime_ms"],"additionalProperties":false}},{"method":"POST","path":"/v1/oss-openrefine-verified-table-recipe-replay","url":"https://agent.halowerk.com/v1/oss-openrefine-verified-table-recipe-replay","tool":"oss_openrefine_verified_table_recipe_replay","price_usdc":0.0045,"price_model":"per_call","summary":"Run a table transformation recipe through native OpenRefine and get the result back with proof: the recipe is persisted, reopened and replayed from the original input.","description":"Executes a caller-directed sequence of table operations in native OpenRefine and returns the transformed table together with the exported recipe. What distinguishes it from simply transforming data is the evidence: the recipe is persisted, the project is reopened, and the whole thing is replayed from the original input, with hashes reported at each stage.","input_schema":{"type":"object","properties":{"table":{"type":"object","properties":{"columns":{"type":"array","items":{"type":"string","pattern":"^[A-Za-z][A-Za-z0-9_]{0,31}$"},"minItems":1,"maxItems":16},"rows":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","pattern":"^[A-Za-z][A-Za-z0-9_]{0,31}$"},"values":{"type":"array","items":{"anyOf":[{"type":"string","maxLength":4096},{"type":"null"}]},"minItems":1,"maxItems":16}},"required":["id","values"],"additionalProperties":false},"minItems":1,"maxItems":1000}},"required":["columns","rows"],"additionalProperties":false},"steps":{"type":"array","items":{"oneOf":[{"type":"object","properties":{"op":{"const":"normalize_text"},"column":{"type":"string","pattern":"^[A-Za-z][A-Za-z0-9_]{0,31}$"},"trim":{"type":"boolean"},"case":{"enum":["preserve","lower","upper"]}},"required":["op","column","trim","case"],"additionalProperties":false},{"type":"object","properties":{"op":{"const":"replace_values"},"column":{"type":"string","pattern":"^[A-Za-z][A-Za-z0-9_]{0,31}$"},"edits":{"type":"array","items":{"type":"object","properties":{"from":{"type":"array","items":{"type":"string","minLength":1,"maxLength":4096},"minItems":1,"maxItems":32},"to":{"type":"string","maxLength":4096}},"required":["from","to"],"additionalProperties":false},"minItems":1,"maxItems":32}},"required":["op","column","edits"],"additionalProperties":false},{"type":"object","properties":{"op":{"const":"add_text_column"},"name":{"type":"string","pattern":"^[A-Za-z][A-Za-z0-9_]{0,31}$"},"columns":{"type":"array","items":{"type":"string","pattern":"^[A-Za-z][A-Za-z0-9_]{0,31}$"},"minItems":1,"maxItems":8},"separator":{"type":"string","maxLength":64},"null_policy":{"enum":["empty","propagate"]}},"required":["op","name","columns","separator","null_policy"],"additionalProperties":false},{"type":"object","properties":{"op":{"const":"rename_column"},"column":{"type":"string","pattern":"^[A-Za-z][A-Za-z0-9_]{0,31}$"},"name":{"type":"string","pattern":"^[A-Za-z][A-Za-z0-9_]{0,31}$"}},"required":["op","column","name"],"additionalProperties":false},{"type":"object","properties":{"op":{"const":"remove_column"},"column":{"type":"string","pattern":"^[A-Za-z][A-Za-z0-9_]{0,31}$"}},"required":["op","column"],"additionalProperties":false},{"type":"object","properties":{"op":{"const":"reorder_columns"},"columns":{"type":"array","items":{"type":"string","pattern":"^[A-Za-z][A-Za-z0-9_]{0,31}$"},"minItems":1,"maxItems":16}},"required":["op","columns"],"additionalProperties":false}]},"minItems":1,"maxItems":16}},"required":["table","steps"],"additionalProperties":false},"needs_history":false,"payment_required":true,"serviceName":"oss_openrefine_verified_table_recipe_replay","tags":["oss","openrefine","p043"],"example_request":{"table":{"columns":["name","code","status","notes"],"rows":[{"id":"r1","values":[" Élodie "," X1 ","yes",null]},{"id":"r2","values":["ALICE","x2","Y",""]},{"id":"r3","values":[null,"001","no","keep"]}]},"steps":[{"op":"normalize_text","column":"name","trim":true,"case":"lower"},{"op":"normalize_text","column":"code","trim":true,"case":"preserve"},{"op":"replace_values","column":"status","edits":[{"from":["yes","Y"],"to":"active"},{"from":["no"],"to":"inactive"}]},{"op":"add_text_column","name":"label","columns":["name","code"],"separator":" / ","null_policy":"empty"},{"op":"rename_column","column":"code","name":"external_id"},{"op":"remove_column","column":"notes"}]},"requestExample":{"table":{"columns":["name","code","status","notes"],"rows":[{"id":"r1","values":[" Élodie "," X1 ","yes",null]},{"id":"r2","values":["ALICE","x2","Y",""]},{"id":"r3","values":[null,"001","no","keep"]}]},"steps":[{"op":"normalize_text","column":"name","trim":true,"case":"lower"},{"op":"normalize_text","column":"code","trim":true,"case":"preserve"},{"op":"replace_values","column":"status","edits":[{"from":["yes","Y"],"to":"active"},{"from":["no"],"to":"inactive"}]},{"op":"add_text_column","name":"label","columns":["name","code"],"separator":" / ","null_policy":"empty"},{"op":"rename_column","column":"code","name":"external_id"},{"op":"remove_column","column":"notes"}]},"outputSchema":{"type":"object","properties":{"operation":{"const":"verified-table-recipe-replay"},"result":{"type":"object","properties":{"table":{"type":"object","properties":{"artifact_id":{"type":"string","minLength":1,"maxLength":128},"sha256":{"type":"string","pattern":"^[a-f0-9]{64}$"},"bytes":{"type":"integer","minimum":1,"maximum":8388608},"media_type":{"const":"application/json"}},"required":["artifact_id","sha256","bytes","media_type"],"additionalProperties":false},"native_recipe":{"type":"object","properties":{"artifact_id":{"type":"string","minLength":1,"maxLength":128},"sha256":{"type":"string","pattern":"^[a-f0-9]{64}$"},"bytes":{"type":"integer","minimum":1,"maximum":8388608},"media_type":{"const":"application/json"}},"required":["artifact_id","sha256","bytes","media_type"],"additionalProperties":false},"provenance":{"type":"object","properties":{"artifact_id":{"type":"string","minLength":1,"maxLength":128},"sha256":{"type":"string","pattern":"^[a-f0-9]{64}$"},"bytes":{"type":"integer","minimum":1,"maximum":8388608},"media_type":{"const":"application/json"}},"required":["artifact_id","sha256","bytes","media_type"],"additionalProperties":false},"source_table_sha256":{"type":"string","pattern":"^[a-f0-9]{64}$"},"result_table_sha256":{"type":"string","pattern":"^[a-f0-9]{64}$"},"reopened_table_sha256":{"type":"string","pattern":"^[a-f0-9]{64}$"},"replayed_table_sha256":{"type":"string","pattern":"^[a-f0-9]{64}$"},"output_columns":{"type":"array","items":{"type":"string","pattern":"^[A-Za-z][A-Za-z0-9_]{0,31}$"},"minItems":1,"maxItems":16},"row_ids":{"type":"array","items":{"type":"string","pattern":"^[A-Za-z][A-Za-z0-9_]{0,31}$"},"minItems":1,"maxItems":1000},"step_count":{"type":"integer","minimum":1,"maximum":16},"step_results":{"type":"array","items":{"type":"object","properties":{"index":{"type":"integer","minimum":0,"maximum":15},"operation":{"enum":["normalize_text","replace_values","add_text_column","rename_column","remove_column","reorder_columns"]},"before_sha256":{"type":"string","pattern":"^[a-f0-9]{64}$"},"after_sha256":{"type":"string","pattern":"^[a-f0-9]{64}$"},"changed_cell_count":{"type":"integer","minimum":0,"maximum":16000},"outcome":{"enum":["changed","no_change"]}},"required":["index","operation","before_sha256","after_sha256","changed_cell_count","outcome"],"additionalProperties":false},"minItems":1,"maxItems":16},"native_history_verified":{"const":true},"persistence_verified":{"const":true},"original_input_replay_verified":{"const":true},"scope":{"const":"declared_native_recipe_and_exact_input_replay_not_generated_program_synthesis"},"warnings":{"type":"array","items":{"type":"string","minLength":1,"maxLength":1024},"minItems":1,"maxItems":16}},"required":["table","native_recipe","provenance","source_table_sha256","result_table_sha256","reopened_table_sha256","replayed_table_sha256","output_columns","row_ids","step_count","step_results","native_history_verified","persistence_verified","original_input_replay_verified","scope","warnings"],"additionalProperties":false},"upstream":{"type":"object","properties":{"project":{"const":"OpenRefine"},"version":{"const":"3.10-SNAPSHOT"},"source_commit":{"const":"1e6e28f4fc3724ff4bfd55de1bfe2ca1b6b41141"},"runtime_bundle_sha256":{"type":"string","pattern":"^[a-f0-9]{64}$"},"components":{"const":["Recipe","TextTransformOperation","MassEditOperation","ColumnAdditionOperation","ColumnRenameOperation","ColumnRemovalOperation","ColumnReorderOperation","History","ProcessManager","Project"]},"canonical_request_sha256":{"type":"string","pattern":"^[a-f0-9]{64}$"},"java_locale":{"const":"ROOT"},"timezone":{"const":"UTC"}},"required":["project","version","source_commit","runtime_bundle_sha256","components","canonical_request_sha256","java_locale","timezone"],"additionalProperties":false},"runtime_ms":{"type":"number","minimum":0,"maximum":300000}},"required":["operation","result","upstream","runtime_ms"],"additionalProperties":false}},{"method":"POST","path":"/v1/oss-openrefine-reference-catalog-reconciliation-review","url":"https://agent.halowerk.com/v1/oss-openrefine-reference-catalog-reconciliation-review","tool":"oss_openrefine_reference_catalog_reconciliation_review","price_usdc":0.004,"price_model":"per_call","summary":"Match table entries against your own reference catalog with native OpenRefine reconciliation, keeping ambiguous cases ambiguous instead of picking a winner.","description":"Reconciles a column of names against a reference catalog that you supply — your catalog, not a public knowledge base — using native OpenRefine reconciliation with a caller-set edit distance and an optional required type. The result separates rows with a single candidate, rows with several, and rows with none, and it leaves the ambiguous ones ambiguous: an automatic pick would be the cheapest possible way to introduce a wrong identity into a reference dataset.","input_schema":{"type":"object","properties":{"table":{"type":"object","properties":{"columns":{"type":"array","items":{"type":"string","pattern":"^[A-Za-z][A-Za-z0-9_]{0,31}$"},"minItems":1,"maxItems":16},"rows":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","pattern":"^[A-Za-z][A-Za-z0-9_]{0,31}$"},"values":{"type":"array","items":{"anyOf":[{"type":"string","maxLength":4096},{"type":"null"}]},"minItems":1,"maxItems":16}},"required":["id","values"],"additionalProperties":false},"minItems":1,"maxItems":200}},"required":["columns","rows"],"additionalProperties":false},"query_column":{"type":"string","pattern":"^[A-Za-z][A-Za-z0-9_]{0,31}$"},"catalog":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","pattern":"^[A-Za-z][A-Za-z0-9_]{0,31}$"},"name":{"type":"string","minLength":1,"maxLength":256},"type":{"type":"string","pattern":"^[A-Za-z][A-Za-z0-9_]{0,31}$"}},"required":["id","name","type"],"additionalProperties":false},"minItems":1,"maxItems":100},"required_type":{"type":"string","pattern":"^[A-Za-z][A-Za-z0-9_]{0,31}$"},"max_edit_distance":{"type":"integer","minimum":0,"maximum":8}},"required":["table","query_column","catalog","required_type","max_edit_distance"],"additionalProperties":false},"needs_history":false,"payment_required":true,"serviceName":"oss_openrefine_reference_catalog_reconciliation_review","tags":["oss","openrefine","p043"],"example_request":{"table":{"columns":["name","source_code"],"rows":[{"id":"row_a","values":["Aa","001"]},{"id":"row_b","values":["BB","002"]},{"id":"row_a_repeat","values":["Aa","003"]},{"id":"row_ambiguous","values":["Acme Ltd","004"]},{"id":"row_none","values":["ZZ","005"]},{"id":"row_null","values":[null,"006"]},{"id":"row_empty","values":["","007"]},{"id":"row_punctuation","values":["!!!","008"]},{"id":"row_accent","values":["Gödel","009"]}]},"query_column":"name","catalog":[{"id":"ref_a","name":"Aa","type":"org"},{"id":"ref_b","name":"BB","type":"org"},{"id":"ref_acme","name":"Acme Ltd","type":"org"},{"id":"ref_acme_reordered","name":"Ltd Acme","type":"org"},{"id":"ref_person","name":"Aa","type":"person"},{"id":"ref_godel","name":"Godel","type":"org"}],"required_type":"org","max_edit_distance":0},"requestExample":{"table":{"columns":["name","source_code"],"rows":[{"id":"row_a","values":["Aa","001"]},{"id":"row_b","values":["BB","002"]},{"id":"row_a_repeat","values":["Aa","003"]},{"id":"row_ambiguous","values":["Acme Ltd","004"]},{"id":"row_none","values":["ZZ","005"]},{"id":"row_null","values":[null,"006"]},{"id":"row_empty","values":["","007"]},{"id":"row_punctuation","values":["!!!","008"]},{"id":"row_accent","values":["Gödel","009"]}]},"query_column":"name","catalog":[{"id":"ref_a","name":"Aa","type":"org"},{"id":"ref_b","name":"BB","type":"org"},{"id":"ref_acme","name":"Acme Ltd","type":"org"},{"id":"ref_acme_reordered","name":"Ltd Acme","type":"org"},{"id":"ref_person","name":"Aa","type":"person"},{"id":"ref_godel","name":"Godel","type":"org"}],"required_type":"org","max_edit_distance":0},"outputSchema":{"type":"object","properties":{"operation":{"const":"reference-catalog-reconciliation-review"},"result":{"type":"object","properties":{"review":{"type":"object","properties":{"artifact_id":{"type":"string","minLength":1,"maxLength":128},"sha256":{"type":"string","pattern":"^[a-f0-9]{64}$"},"bytes":{"type":"integer","minimum":1,"maximum":8388608},"media_type":{"const":"application/json"}},"required":["artifact_id","sha256","bytes","media_type"],"additionalProperties":false},"source_table_sha256":{"type":"string","pattern":"^[a-f0-9]{64}$"},"catalog_sha256":{"type":"string","pattern":"^[a-f0-9]{64}$"},"native_reconciliation_sha256":{"type":"string","pattern":"^[a-f0-9]{64}$"},"reopened_reconciliation_sha256":{"type":"string","pattern":"^[a-f0-9]{64}$"},"rows":{"type":"array","items":{"type":"object","properties":{"row_id":{"type":"string","pattern":"^[A-Za-z][A-Za-z0-9_]{0,31}$"},"status":{"enum":["unique_candidate","ambiguous","no_candidate","excluded"]},"candidate_count":{"type":"integer","minimum":0,"maximum":100},"candidate_ids":{"type":"array","items":{"type":"string","pattern":"^[A-Za-z][A-Za-z0-9_]{0,31}$"},"minItems":0,"maxItems":100},"exclusion_reason":{"enum":[null,"null_query","empty_fingerprint"]}},"required":["row_id","status","candidate_count","candidate_ids","exclusion_reason"],"additionalProperties":false},"minItems":1,"maxItems":200},"unique_candidate_rows":{"type":"integer","minimum":0,"maximum":200},"ambiguous_rows":{"type":"integer","minimum":0,"maximum":200},"no_candidate_rows":{"type":"integer","minimum":0,"maximum":200},"excluded_rows":{"type":"integer","minimum":0,"maximum":200},"type_excluded_reference_ids":{"type":"array","items":{"type":"string","pattern":"^[A-Za-z][A-Za-z0-9_]{0,31}$"},"minItems":0,"maxItems":100},"source_unchanged":{"const":true},"native_auto_match_enabled":{"const":false},"identities_confirmed":{"const":0},"persistence_verified":{"const":true},"scope":{"const":"caller_catalog_lexical_candidates_require_review_not_confirmed_entity_identity"},"warnings":{"type":"array","items":{"type":"string","minLength":1,"maxLength":1024},"minItems":1,"maxItems":16}},"required":["review","source_table_sha256","catalog_sha256","native_reconciliation_sha256","reopened_reconciliation_sha256","rows","unique_candidate_rows","ambiguous_rows","no_candidate_rows","excluded_rows","type_excluded_reference_ids","source_unchanged","native_auto_match_enabled","identities_confirmed","persistence_verified","scope","warnings"],"additionalProperties":false},"upstream":{"type":"object","properties":{"project":{"const":"OpenRefine"},"version":{"const":"3.10-SNAPSHOT"},"source_commit":{"const":"1e6e28f4fc3724ff4bfd55de1bfe2ca1b6b41141"},"runtime_bundle_sha256":{"type":"string","pattern":"^[a-f0-9]{64}$"},"components":{"const":["FingerprintKeyer","ApacheLevenshteinDistance","StandardReconConfig","ReconOperation","Recon","ReconJob","Project","History"]},"canonical_request_sha256":{"type":"string","pattern":"^[a-f0-9]{64}$"},"java_locale":{"const":"ROOT"},"timezone":{"const":"UTC"}},"required":["project","version","source_commit","runtime_bundle_sha256","components","canonical_request_sha256","java_locale","timezone"],"additionalProperties":false},"runtime_ms":{"type":"number","minimum":0,"maximum":240000}},"required":["operation","result","upstream","runtime_ms"],"additionalProperties":false}},{"method":"POST","path":"/v1/oss-opendocman-document-authority-regression-rehearsal","url":"https://agent.halowerk.com/v1/oss-opendocman-document-authority-regression-rehearsal","tool":"oss_opendocman_document_authority_regression_rehearsal","price_usdc":0.004,"price_model":"per_call","summary":"Rehearse a document-rights change against the pinned OpenDocMan code and get every user-document decision that flips, before and after, named individually.","description":"Takes a before and an after picture of your OpenDocMan rights setup and asks the pinned native code what each one actually grants. Every user-document pair is evaluated in both states, and what comes back is which decisions changed, which of your declared expectations were violated in each state, and whether the seeded state survived untouched.","input_schema":{"type":"object","properties":{"before":{"type":"object","properties":{"root_user_id":{"type":"integer","minimum":1,"maximum":2147483647},"departments":{"type":"array","items":{"type":"integer","minimum":1,"maximum":2147483647},"minItems":1,"maxItems":8},"categories":{"type":"array","items":{"type":"integer","minimum":1,"maximum":2147483647},"minItems":0,"maxItems":8},"users":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer","minimum":1,"maximum":2147483647},"department_id":{"type":"integer","minimum":1,"maximum":2147483647},"admin":{"type":"boolean"}},"required":["id","department_id","admin"],"additionalProperties":false},"minItems":1,"maxItems":16},"documents":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer","minimum":1,"maximum":2147483647},"owner_id":{"type":"integer","minimum":1,"maximum":2147483647},"department_id":{"type":"integer","minimum":1,"maximum":2147483647},"category_id":{"type":"integer","minimum":0,"maximum":2147483647},"locked":{"type":"boolean"}},"required":["id","owner_id","department_id","category_id","locked"],"additionalProperties":false},"minItems":1,"maxItems":32},"reviewers":{"type":"array","items":{"type":"object","properties":{"user_id":{"type":"integer","minimum":1,"maximum":2147483647},"department_id":{"type":"integer","minimum":1,"maximum":2147483647}},"required":["user_id","department_id"],"additionalProperties":false},"minItems":0,"maxItems":128},"user_rights":{"type":"array","items":{"type":"object","properties":{"user_id":{"type":"integer","minimum":1,"maximum":2147483647},"document_id":{"type":"integer","minimum":1,"maximum":2147483647},"rights":{"type":"integer","minimum":-1,"maximum":4}},"required":["user_id","document_id","rights"],"additionalProperties":false},"minItems":0,"maxItems":512},"department_rights":{"type":"array","items":{"type":"object","properties":{"department_id":{"type":"integer","minimum":1,"maximum":2147483647},"document_id":{"type":"integer","minimum":1,"maximum":2147483647},"rights":{"type":"integer","minimum":-1,"maximum":4}},"required":["department_id","document_id","rights"],"additionalProperties":false},"minItems":0,"maxItems":256},"category_user_rights":{"type":"array","items":{"type":"object","properties":{"category_id":{"type":"integer","minimum":1,"maximum":2147483647},"user_id":{"type":"integer","minimum":1,"maximum":2147483647},"rights":{"type":"integer","minimum":-1,"maximum":4}},"required":["category_id","user_id","rights"],"additionalProperties":false},"minItems":0,"maxItems":128},"category_department_rights":{"type":"array","items":{"type":"object","properties":{"category_id":{"type":"integer","minimum":1,"maximum":2147483647},"department_id":{"type":"integer","minimum":1,"maximum":2147483647},"rights":{"type":"integer","minimum":-1,"maximum":4}},"required":["category_id","department_id","rights"],"additionalProperties":false},"minItems":0,"maxItems":64}},"required":["root_user_id","departments","categories","users","documents","reviewers","user_rights","department_rights","category_user_rights","category_department_rights"],"additionalProperties":false},"after":{"type":"object","properties":{"root_user_id":{"type":"integer","minimum":1,"maximum":2147483647},"departments":{"type":"array","items":{"type":"integer","minimum":1,"maximum":2147483647},"minItems":1,"maxItems":8},"categories":{"type":"array","items":{"type":"integer","minimum":1,"maximum":2147483647},"minItems":0,"maxItems":8},"users":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer","minimum":1,"maximum":2147483647},"department_id":{"type":"integer","minimum":1,"maximum":2147483647},"admin":{"type":"boolean"}},"required":["id","department_id","admin"],"additionalProperties":false},"minItems":1,"maxItems":16},"documents":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer","minimum":1,"maximum":2147483647},"owner_id":{"type":"integer","minimum":1,"maximum":2147483647},"department_id":{"type":"integer","minimum":1,"maximum":2147483647},"category_id":{"type":"integer","minimum":0,"maximum":2147483647},"locked":{"type":"boolean"}},"required":["id","owner_id","department_id","category_id","locked"],"additionalProperties":false},"minItems":1,"maxItems":32},"reviewers":{"type":"array","items":{"type":"object","properties":{"user_id":{"type":"integer","minimum":1,"maximum":2147483647},"department_id":{"type":"integer","minimum":1,"maximum":2147483647}},"required":["user_id","department_id"],"additionalProperties":false},"minItems":0,"maxItems":128},"user_rights":{"type":"array","items":{"type":"object","properties":{"user_id":{"type":"integer","minimum":1,"maximum":2147483647},"document_id":{"type":"integer","minimum":1,"maximum":2147483647},"rights":{"type":"integer","minimum":-1,"maximum":4}},"required":["user_id","document_id","rights"],"additionalProperties":false},"minItems":0,"maxItems":512},"department_rights":{"type":"array","items":{"type":"object","properties":{"department_id":{"type":"integer","minimum":1,"maximum":2147483647},"document_id":{"type":"integer","minimum":1,"maximum":2147483647},"rights":{"type":"integer","minimum":-1,"maximum":4}},"required":["department_id","document_id","rights"],"additionalProperties":false},"minItems":0,"maxItems":256},"category_user_rights":{"type":"array","items":{"type":"object","properties":{"category_id":{"type":"integer","minimum":1,"maximum":2147483647},"user_id":{"type":"integer","minimum":1,"maximum":2147483647},"rights":{"type":"integer","minimum":-1,"maximum":4}},"required":["category_id","user_id","rights"],"additionalProperties":false},"minItems":0,"maxItems":128},"category_department_rights":{"type":"array","items":{"type":"object","properties":{"category_id":{"type":"integer","minimum":1,"maximum":2147483647},"department_id":{"type":"integer","minimum":1,"maximum":2147483647},"rights":{"type":"integer","minimum":-1,"maximum":4}},"required":["category_id","department_id","rights"],"additionalProperties":false},"minItems":0,"maxItems":64}},"required":["root_user_id","departments","categories","users","documents","reviewers","user_rights","department_rights","category_user_rights","category_department_rights"],"additionalProperties":false},"expected_before":{"type":"array","items":{"type":"object","properties":{"user_id":{"type":"integer","minimum":1,"maximum":2147483647},"document_id":{"type":"integer","minimum":1,"maximum":2147483647},"rights":{"type":"integer","minimum":-1,"maximum":4}},"required":["user_id","document_id","rights"],"additionalProperties":false},"minItems":1,"maxItems":512},"expected_after":{"type":"array","items":{"type":"object","properties":{"user_id":{"type":"integer","minimum":1,"maximum":2147483647},"document_id":{"type":"integer","minimum":1,"maximum":2147483647},"rights":{"type":"integer","minimum":-1,"maximum":4}},"required":["user_id","document_id","rights"],"additionalProperties":false},"minItems":1,"maxItems":512}},"required":["before","after","expected_before","expected_after"],"additionalProperties":false},"needs_history":false,"payment_required":true,"serviceName":"oss_opendocman_document_authority_regression_rehearsal","tags":["oss","opendocman","p044"],"example_request":{"before":{"root_user_id":1,"departments":[1,2,3,4,5],"categories":[10],"users":[{"id":1,"department_id":1,"admin":false},{"id":2,"department_id":1,"admin":true},{"id":3,"department_id":1,"admin":false},{"id":4,"department_id":2,"admin":false},{"id":5,"department_id":1,"admin":false},{"id":6,"department_id":1,"admin":false},{"id":7,"department_id":2,"admin":false},{"id":8,"department_id":3,"admin":false},{"id":9,"department_id":4,"admin":false},{"id":10,"department_id":5,"admin":false}],"documents":[{"id":101,"owner_id":4,"department_id":2,"category_id":10,"locked":true},{"id":102,"owner_id":4,"department_id":1,"category_id":0,"locked":false},{"id":103,"owner_id":4,"department_id":1,"category_id":10,"locked":false}],"reviewers":[{"user_id":3,"department_id":2}],"user_rights":[{"user_id":4,"document_id":101,"rights":-1},{"user_id":5,"document_id":101,"rights":0},{"user_id":6,"document_id":101,"rights":-1},{"user_id":5,"document_id":103,"rights":3}],"department_rights":[{"department_id":1,"document_id":101,"rights":2},{"department_id":2,"document_id":101,"rights":0},{"department_id":3,"document_id":101,"rights":-1},{"department_id":5,"document_id":101,"rights":2}],"category_user_rights":[{"category_id":10,"user_id":7,"rights":1}],"category_department_rights":[{"category_id":10,"department_id":1,"rights":0},{"category_id":10,"department_id":2,"rights":3},{"category_id":10,"department_id":3,"rights":2}]},"after":{"root_user_id":1,"departments":[1,2,3,4,5],"categories":[10],"users":[{"id":1,"department_id":1,"admin":false},{"id":2,"department_id":1,"admin":true},{"id":3,"department_id":1,"admin":false},{"id":4,"department_id":2,"admin":false},{"id":5,"department_id":1,"admin":false},{"id":6,"department_id":1,"admin":false},{"id":7,"department_id":2,"admin":false},{"id":8,"department_id":3,"admin":false},{"id":9,"department_id":4,"admin":false},{"id":10,"department_id":5,"admin":false}],"documents":[{"id":101,"owner_id":4,"department_id":2,"category_id":10,"locked":false},{"id":102,"owner_id":4,"department_id":1,"category_id":0,"locked":false},{"id":103,"owner_id":4,"department_id":1,"category_id":10,"locked":false}],"reviewers":[{"user_id":3,"department_id":2},{"user_id":9,"department_id":1}],"user_rights":[{"user_id":4,"document_id":101,"rights":-1},{"user_id":6,"document_id":101,"rights":-1},{"user_id":5,"document_id":103,"rights":3}],"department_rights":[{"department_id":1,"document_id":101,"rights":2},{"department_id":2,"document_id":101,"rights":0},{"department_id":3,"document_id":101,"rights":-1},{"department_id":5,"document_id":101,"rights":2}],"category_user_rights":[],"category_department_rights":[{"category_id":10,"department_id":1,"rights":0},{"category_id":10,"department_id":2,"rights":3},{"category_id":10,"department_id":3,"rights":0}]},"expected_before":[{"user_id":1,"document_id":101,"rights":4},{"user_id":1,"document_id":102,"rights":4},{"user_id":1,"document_id":103,"rights":4},{"user_id":2,"document_id":101,"rights":4},{"user_id":2,"document_id":102,"rights":4},{"user_id":2,"document_id":103,"rights":4},{"user_id":3,"document_id":101,"rights":4},{"user_id":3,"document_id":102,"rights":0},{"user_id":3,"document_id":103,"rights":0},{"user_id":4,"document_id":101,"rights":3},{"user_id":4,"document_id":102,"rights":0},{"user_id":4,"document_id":103,"rights":3},{"user_id":5,"document_id":101,"rights":0},{"user_id":5,"document_id":102,"rights":0},{"user_id":5,"document_id":103,"rights":3},{"user_id":6,"document_id":101,"rights":-1},{"user_id":6,"document_id":102,"rights":0},{"user_id":6,"document_id":103,"rights":0},{"user_id":7,"document_id":101,"rights":1},{"user_id":7,"document_id":102,"rights":0},{"user_id":7,"document_id":103,"rights":1},{"user_id":8,"document_id":101,"rights":2},{"user_id":8,"document_id":102,"rights":0},{"user_id":8,"document_id":103,"rights":2},{"user_id":9,"document_id":101,"rights":0},{"user_id":9,"document_id":102,"rights":0},{"user_id":9,"document_id":103,"rights":0},{"user_id":10,"document_id":101,"rights":2},{"user_id":10,"document_id":102,"rights":0},{"user_id":10,"document_id":103,"rights":0}],"expected_after":[{"user_id":1,"document_id":101,"rights":4},{"user_id":1,"document_id":102,"rights":4},{"user_id":1,"document_id":103,"rights":4},{"user_id":2,"document_id":101,"rights":4},{"user_id":2,"document_id":102,"rights":4},{"user_id":2,"document_id":103,"rights":4},{"user_id":3,"document_id":101,"rights":4},{"user_id":3,"document_id":102,"rights":0},{"user_id":3,"document_id":103,"rights":0},{"user_id":4,"document_id":101,"rights":-1},{"user_id":4,"document_id":102,"rights":0},{"user_id":4,"document_id":103,"rights":3},{"user_id":5,"document_id":101,"rights":0},{"user_id":5,"document_id":102,"rights":0},{"user_id":5,"document_id":103,"rights":3},{"user_id":6,"document_id":101,"rights":-1},{"user_id":6,"document_id":102,"rights":0},{"user_id":6,"document_id":103,"rights":0},{"user_id":7,"document_id":101,"rights":1},{"user_id":7,"document_id":102,"rights":0},{"user_id":7,"document_id":103,"rights":3},{"user_id":8,"document_id":101,"rights":0},{"user_id":8,"document_id":102,"rights":0},{"user_id":8,"document_id":103,"rights":0},{"user_id":9,"document_id":101,"rights":0},{"user_id":9,"document_id":102,"rights":4},{"user_id":9,"document_id":103,"rights":4},{"user_id":10,"document_id":101,"rights":2},{"user_id":10,"document_id":102,"rights":0},{"user_id":10,"document_id":103,"rights":0}]},"requestExample":{"before":{"root_user_id":1,"departments":[1,2,3,4,5],"categories":[10],"users":[{"id":1,"department_id":1,"admin":false},{"id":2,"department_id":1,"admin":true},{"id":3,"department_id":1,"admin":false},{"id":4,"department_id":2,"admin":false},{"id":5,"department_id":1,"admin":false},{"id":6,"department_id":1,"admin":false},{"id":7,"department_id":2,"admin":false},{"id":8,"department_id":3,"admin":false},{"id":9,"department_id":4,"admin":false},{"id":10,"department_id":5,"admin":false}],"documents":[{"id":101,"owner_id":4,"department_id":2,"category_id":10,"locked":true},{"id":102,"owner_id":4,"department_id":1,"category_id":0,"locked":false},{"id":103,"owner_id":4,"department_id":1,"category_id":10,"locked":false}],"reviewers":[{"user_id":3,"department_id":2}],"user_rights":[{"user_id":4,"document_id":101,"rights":-1},{"user_id":5,"document_id":101,"rights":0},{"user_id":6,"document_id":101,"rights":-1},{"user_id":5,"document_id":103,"rights":3}],"department_rights":[{"department_id":1,"document_id":101,"rights":2},{"department_id":2,"document_id":101,"rights":0},{"department_id":3,"document_id":101,"rights":-1},{"department_id":5,"document_id":101,"rights":2}],"category_user_rights":[{"category_id":10,"user_id":7,"rights":1}],"category_department_rights":[{"category_id":10,"department_id":1,"rights":0},{"category_id":10,"department_id":2,"rights":3},{"category_id":10,"department_id":3,"rights":2}]},"after":{"root_user_id":1,"departments":[1,2,3,4,5],"categories":[10],"users":[{"id":1,"department_id":1,"admin":false},{"id":2,"department_id":1,"admin":true},{"id":3,"department_id":1,"admin":false},{"id":4,"department_id":2,"admin":false},{"id":5,"department_id":1,"admin":false},{"id":6,"department_id":1,"admin":false},{"id":7,"department_id":2,"admin":false},{"id":8,"department_id":3,"admin":false},{"id":9,"department_id":4,"admin":false},{"id":10,"department_id":5,"admin":false}],"documents":[{"id":101,"owner_id":4,"department_id":2,"category_id":10,"locked":false},{"id":102,"owner_id":4,"department_id":1,"category_id":0,"locked":false},{"id":103,"owner_id":4,"department_id":1,"category_id":10,"locked":false}],"reviewers":[{"user_id":3,"department_id":2},{"user_id":9,"department_id":1}],"user_rights":[{"user_id":4,"document_id":101,"rights":-1},{"user_id":6,"document_id":101,"rights":-1},{"user_id":5,"document_id":103,"rights":3}],"department_rights":[{"department_id":1,"document_id":101,"rights":2},{"department_id":2,"document_id":101,"rights":0},{"department_id":3,"document_id":101,"rights":-1},{"department_id":5,"document_id":101,"rights":2}],"category_user_rights":[],"category_department_rights":[{"category_id":10,"department_id":1,"rights":0},{"category_id":10,"department_id":2,"rights":3},{"category_id":10,"department_id":3,"rights":0}]},"expected_before":[{"user_id":1,"document_id":101,"rights":4},{"user_id":1,"document_id":102,"rights":4},{"user_id":1,"document_id":103,"rights":4},{"user_id":2,"document_id":101,"rights":4},{"user_id":2,"document_id":102,"rights":4},{"user_id":2,"document_id":103,"rights":4},{"user_id":3,"document_id":101,"rights":4},{"user_id":3,"document_id":102,"rights":0},{"user_id":3,"document_id":103,"rights":0},{"user_id":4,"document_id":101,"rights":3},{"user_id":4,"document_id":102,"rights":0},{"user_id":4,"document_id":103,"rights":3},{"user_id":5,"document_id":101,"rights":0},{"user_id":5,"document_id":102,"rights":0},{"user_id":5,"document_id":103,"rights":3},{"user_id":6,"document_id":101,"rights":-1},{"user_id":6,"document_id":102,"rights":0},{"user_id":6,"document_id":103,"rights":0},{"user_id":7,"document_id":101,"rights":1},{"user_id":7,"document_id":102,"rights":0},{"user_id":7,"document_id":103,"rights":1},{"user_id":8,"document_id":101,"rights":2},{"user_id":8,"document_id":102,"rights":0},{"user_id":8,"document_id":103,"rights":2},{"user_id":9,"document_id":101,"rights":0},{"user_id":9,"document_id":102,"rights":0},{"user_id":9,"document_id":103,"rights":0},{"user_id":10,"document_id":101,"rights":2},{"user_id":10,"document_id":102,"rights":0},{"user_id":10,"document_id":103,"rights":0}],"expected_after":[{"user_id":1,"document_id":101,"rights":4},{"user_id":1,"document_id":102,"rights":4},{"user_id":1,"document_id":103,"rights":4},{"user_id":2,"document_id":101,"rights":4},{"user_id":2,"document_id":102,"rights":4},{"user_id":2,"document_id":103,"rights":4},{"user_id":3,"document_id":101,"rights":4},{"user_id":3,"document_id":102,"rights":0},{"user_id":3,"document_id":103,"rights":0},{"user_id":4,"document_id":101,"rights":-1},{"user_id":4,"document_id":102,"rights":0},{"user_id":4,"document_id":103,"rights":3},{"user_id":5,"document_id":101,"rights":0},{"user_id":5,"document_id":102,"rights":0},{"user_id":5,"document_id":103,"rights":3},{"user_id":6,"document_id":101,"rights":-1},{"user_id":6,"document_id":102,"rights":0},{"user_id":6,"document_id":103,"rights":0},{"user_id":7,"document_id":101,"rights":1},{"user_id":7,"document_id":102,"rights":0},{"user_id":7,"document_id":103,"rights":3},{"user_id":8,"document_id":101,"rights":0},{"user_id":8,"document_id":102,"rights":0},{"user_id":8,"document_id":103,"rights":0},{"user_id":9,"document_id":101,"rights":0},{"user_id":9,"document_id":102,"rights":4},{"user_id":9,"document_id":103,"rights":4},{"user_id":10,"document_id":101,"rights":2},{"user_id":10,"document_id":102,"rights":0},{"user_id":10,"document_id":103,"rights":0}]},"outputSchema":{"type":"object","properties":{"operation":{"const":"document-authority-regression-rehearsal"},"result":{"type":"object","properties":{"review":{"type":"object","properties":{"artifact_id":{"type":"string","minLength":1,"maxLength":128},"sha256":{"type":"string","pattern":"^[0-9a-f]{64}$"},"bytes":{"type":"integer","minimum":1,"maximum":2097152},"media_type":{"const":"application/json"}},"required":["artifact_id","sha256","bytes","media_type"],"additionalProperties":false},"before_state_sha256":{"type":"string","pattern":"^[0-9a-f]{64}$"},"after_state_sha256":{"type":"string","pattern":"^[0-9a-f]{64}$"},"users":{"type":"integer","minimum":1,"maximum":16},"documents":{"type":"integer","minimum":1,"maximum":32},"evaluated_pairs_per_state":{"type":"integer","minimum":1,"maximum":512},"changed_pairs":{"type":"integer","minimum":0,"maximum":512},"before_policy_violations":{"type":"integer","minimum":0,"maximum":512},"after_policy_violations":{"type":"integer","minimum":0,"maximum":512},"policy_expectations_met":{"type":"boolean"},"seed_state_unchanged":{"const":true},"native_authority_complete":{"const":true},"scope":{"const":"native_getAuthority_model_only_not_controller_or_download_access"},"warnings":{"type":"array","items":{"type":"string","minLength":1,"maxLength":1024},"minItems":1,"maxItems":16}},"required":["review","before_state_sha256","after_state_sha256","users","documents","evaluated_pairs_per_state","changed_pairs","before_policy_violations","after_policy_violations","policy_expectations_met","seed_state_unchanged","native_authority_complete","scope","warnings"],"additionalProperties":false},"upstream":{"type":"object","properties":{"project":{"const":"OpenDocMan"},"version":{"const":"2.10.0-release"},"source_commit":{"const":"641f0a6f8eeba902e309978ec04291c44d3cd1c5"},"runtime_bundle_sha256":{"type":"string","pattern":"^[0-9a-f]{64}$"},"schema_sha256":{"type":"string","pattern":"^[0-9a-f]{64}$"},"components":{"const":["UserPermission::getAuthority","User_Perms::getPermission","Dept_Perms::getPermission","CategoryPerms::getPermission","User::isAdmin","User::isReviewerForFile","FileData::loadData"]},"canonical_request_sha256":{"type":"string","pattern":"^[0-9a-f]{64}$"},"php_version":{"type":"string","minLength":1,"maxLength":64},"pdo_driver":{"const":"mysql"},"database_version":{"type":"string","minLength":1,"maxLength":128}},"required":["project","version","source_commit","runtime_bundle_sha256","schema_sha256","components","canonical_request_sha256","php_version","pdo_driver","database_version"],"additionalProperties":false},"runtime_ms":{"type":"number","minimum":0,"maximum":120000}},"required":["operation","result","upstream","runtime_ms"],"additionalProperties":false}},{"method":"POST","path":"/v1/oss-opencart-checkout-rule-regression-review","url":"https://agent.halowerk.com/v1/oss-opencart-checkout-rule-regression-review","tool":"oss_opencart_checkout_rule_regression_review","price_usdc":0.005,"price_model":"per_call","summary":"Replay supplied checkout scenarios through the pinned OpenCart code and report every total, coupon, shipping and tax result that misses its expectation.","description":"Runs your simple-product checkout cases against the pinned OpenCart source in a private, non-root database that exists only for the length of the request. For each case it reports the totals the native code actually produces, which expectations were missed, and where a cart path diverged, rather than a single pass or fail.","input_schema":{"type":"object","properties":{"products":{"type":"array","items":{"type":"object","properties":{"product_id":{"type":"integer","minimum":1,"maximum":2147483647},"price":{"type":"string","pattern":"^(?:0|[1-9][0-9]{0,4})(?:\\.[0-9]{1,4})?$","maxLength":10},"stock":{"type":"integer","minimum":0,"maximum":100000},"minimum_quantity":{"type":"integer","minimum":1,"maximum":100},"enabled":{"type":"boolean"},"shipping":{"type":"boolean"},"tax_class_id":{"type":"integer","minimum":0,"maximum":8}},"required":["product_id","price","stock","minimum_quantity","enabled","shipping","tax_class_id"],"additionalProperties":false},"minItems":1,"maxItems":16},"discounts":{"type":"array","items":{"type":"object","properties":{"product_id":{"type":"integer","minimum":1,"maximum":2147483647},"customer_group_id":{"type":"integer","minimum":1,"maximum":16},"quantity":{"type":"integer","minimum":1,"maximum":100},"priority":{"type":"integer","minimum":0,"maximum":100},"type":{"enum":["F","P","S"]},"value":{"type":"string","pattern":"^(?:0|[1-9][0-9]{0,4})(?:\\.[0-9]{1,4})?$","maxLength":10}},"required":["product_id","customer_group_id","quantity","priority","type","value"],"additionalProperties":false},"minItems":0,"maxItems":64},"tax_classes":{"type":"array","items":{"type":"object","properties":{"tax_class_id":{"type":"integer","minimum":1,"maximum":8},"percentage_rate":{"type":"string","pattern":"^(?:0|[1-9][0-9]{0,4})(?:\\.[0-9]{1,4})?$","maxLength":10},"fixed_amount":{"type":"string","pattern":"^(?:0|[1-9][0-9]{0,4})(?:\\.[0-9]{1,4})?$","maxLength":10}},"required":["tax_class_id","percentage_rate","fixed_amount"],"additionalProperties":false},"minItems":0,"maxItems":8},"flat_shipping":{"type":"object","properties":{"cost":{"type":"string","pattern":"^(?:0|[1-9][0-9]{0,4})(?:\\.[0-9]{1,4})?$","maxLength":10},"tax_class_id":{"type":"integer","minimum":0,"maximum":8}},"required":["cost","tax_class_id"],"additionalProperties":false},"cases":{"type":"array","items":{"type":"object","properties":{"case_id":{"type":"string","pattern":"^[a-zA-Z0-9_-]{1,32}$","maxLength":32},"customer_id":{"type":"integer","minimum":0,"maximum":2147483647},"customer_group_id":{"type":"integer","minimum":1,"maximum":16},"lines":{"type":"array","items":{"type":"object","properties":{"product_id":{"type":"integer","minimum":1,"maximum":2147483647},"quantity":{"type":"integer","minimum":1,"maximum":100}},"required":["product_id","quantity"],"additionalProperties":false},"minItems":1,"maxItems":16},"coupon":{"type":"object","properties":{"enabled":{"type":"boolean"},"type":{"enum":["F","P"]},"value":{"type":"string","pattern":"^(?:0|[1-9][0-9]{0,4})(?:\\.[0-9]{1,4})?$","maxLength":10},"product_ids":{"type":"array","items":{"type":"integer","minimum":1,"maximum":2147483647},"minItems":0,"maxItems":16},"free_shipping":{"type":"boolean"},"requires_login":{"type":"boolean"},"minimum_subtotal":{"type":"string","pattern":"^(?:0|[1-9][0-9]{0,4})(?:\\.[0-9]{1,4})?$","maxLength":10},"total_use_limit":{"type":"integer","minimum":0,"maximum":10000},"customer_use_limit":{"type":"integer","minimum":0,"maximum":10000},"prior_total_uses":{"type":"integer","minimum":0,"maximum":64},"prior_customer_uses":{"type":"integer","minimum":0,"maximum":64}},"required":["enabled","type","value","product_ids","free_shipping","requires_login","minimum_subtotal","total_use_limit","customer_use_limit","prior_total_uses","prior_customer_uses"],"additionalProperties":false},"expected":{"type":"object","properties":{"total":{"type":"string","pattern":"^(?:0|[1-9][0-9]{0,8})(?:\\.[0-9]{1,8})?$","maxLength":18},"coupon_eligible":{"type":"boolean"},"cart_paths_equivalent":{"type":"boolean"}},"required":["total","coupon_eligible","cart_paths_equivalent"],"additionalProperties":false}},"required":["case_id","customer_id","customer_group_id","lines","coupon","expected"],"additionalProperties":false},"minItems":1,"maxItems":16}},"required":["products","discounts","tax_classes","flat_shipping","cases"],"additionalProperties":false},"needs_history":false,"payment_required":true,"serviceName":"oss_opencart_checkout_rule_regression_review","tags":["oss","opencart","p045"],"example_request":{"products":[{"product_id":101,"price":"10.0000","stock":100,"minimum_quantity":1,"enabled":true,"shipping":true,"tax_class_id":1},{"product_id":102,"price":"5.0000","stock":100,"minimum_quantity":1,"enabled":true,"shipping":true,"tax_class_id":1},{"product_id":103,"price":"100.0000","stock":100,"minimum_quantity":1,"enabled":false,"shipping":true,"tax_class_id":1}],"discounts":[{"product_id":101,"customer_group_id":2,"quantity":2,"priority":1,"type":"P","value":"10.0000"}],"tax_classes":[{"tax_class_id":1,"percentage_rate":"10.0000","fixed_amount":"0.5000"}],"flat_shipping":{"cost":"4.0000","tax_class_id":1},"cases":[{"case_id":"baseline","customer_id":0,"customer_group_id":1,"lines":[{"product_id":101,"quantity":2},{"product_id":102,"quantity":3}],"coupon":{"enabled":false,"type":"F","value":"7.0000","product_ids":[],"free_shipping":false,"requires_login":false,"minimum_subtotal":"0.0000","total_use_limit":0,"customer_use_limit":0,"prior_total_uses":0,"prior_customer_uses":0},"expected":{"total":"44.40000000","coupon_eligible":false,"cart_paths_equivalent":false}},{"case_id":"customer_use_rejected","customer_id":7,"customer_group_id":1,"lines":[{"product_id":101,"quantity":2},{"product_id":102,"quantity":3}],"coupon":{"enabled":true,"type":"F","value":"7.0000","product_ids":[],"free_shipping":false,"requires_login":false,"minimum_subtotal":"0.0000","total_use_limit":0,"customer_use_limit":1,"prior_total_uses":1,"prior_customer_uses":1},"expected":{"total":"44.40000000","coupon_eligible":false,"cart_paths_equivalent":false}},{"case_id":"disabled_product_removed","customer_id":0,"customer_group_id":1,"lines":[{"product_id":101,"quantity":2},{"product_id":102,"quantity":3},{"product_id":103,"quantity":1}],"coupon":{"enabled":false,"type":"F","value":"7.0000","product_ids":[],"free_shipping":false,"requires_login":false,"minimum_subtotal":"0.0000","total_use_limit":0,"customer_use_limit":0,"prior_total_uses":0,"prior_customer_uses":0},"expected":{"total":"44.40000000","coupon_eligible":false,"cart_paths_equivalent":false}},{"case_id":"eligible_product_cap","customer_id":0,"customer_group_id":1,"lines":[{"product_id":101,"quantity":2},{"product_id":102,"quantity":3}],"coupon":{"enabled":true,"type":"F","value":"100.0000","product_ids":[102],"free_shipping":false,"requires_login":false,"minimum_subtotal":"0.0000","total_use_limit":0,"customer_use_limit":0,"prior_total_uses":0,"prior_customer_uses":0},"expected":{"total":"27.90000000","coupon_eligible":true,"cart_paths_equivalent":false}},{"case_id":"fixed_free_shipping","customer_id":0,"customer_group_id":1,"lines":[{"product_id":101,"quantity":2},{"product_id":102,"quantity":3}],"coupon":{"enabled":true,"type":"F","value":"7.0000","product_ids":[],"free_shipping":true,"requires_login":false,"minimum_subtotal":"0.0000","total_use_limit":0,"customer_use_limit":0,"prior_total_uses":0,"prior_customer_uses":0},"expected":{"total":"32.30000000","coupon_eligible":true,"cart_paths_equivalent":false}},{"case_id":"global_use_rejected","customer_id":0,"customer_group_id":1,"lines":[{"product_id":101,"quantity":2},{"product_id":102,"quantity":3}],"coupon":{"enabled":true,"type":"F","value":"7.0000","product_ids":[],"free_shipping":false,"requires_login":false,"minimum_subtotal":"0.0000","total_use_limit":1,"customer_use_limit":0,"prior_total_uses":1,"prior_customer_uses":0},"expected":{"total":"44.40000000","coupon_eligible":false,"cart_paths_equivalent":false}},{"case_id":"group_discount","customer_id":0,"customer_group_id":2,"lines":[{"product_id":101,"quantity":2},{"product_id":102,"quantity":3}],"coupon":{"enabled":false,"type":"F","value":"7.0000","product_ids":[],"free_shipping":false,"requires_login":false,"minimum_subtotal":"0.0000","total_use_limit":0,"customer_use_limit":0,"prior_total_uses":0,"prior_customer_uses":0},"expected":{"total":"42.20000000","coupon_eligible":false,"cart_paths_equivalent":false}},{"case_id":"logged_coupon_rejected","customer_id":0,"customer_group_id":1,"lines":[{"product_id":101,"quantity":2},{"product_id":102,"quantity":3}],"coupon":{"enabled":true,"type":"F","value":"7.0000","product_ids":[],"free_shipping":false,"requires_login":true,"minimum_subtotal":"0.0000","total_use_limit":0,"customer_use_limit":0,"prior_total_uses":0,"prior_customer_uses":0},"expected":{"total":"44.40000000","coupon_eligible":false,"cart_paths_equivalent":false}},{"case_id":"minimum_rejected","customer_id":0,"customer_group_id":1,"lines":[{"product_id":101,"quantity":2},{"product_id":102,"quantity":3}],"coupon":{"enabled":true,"type":"F","value":"7.0000","product_ids":[],"free_shipping":false,"requires_login":false,"minimum_subtotal":"40.0000","total_use_limit":0,"customer_use_limit":0,"prior_total_uses":0,"prior_customer_uses":0},"expected":{"total":"44.40000000","coupon_eligible":false,"cart_paths_equivalent":false}},{"case_id":"percentage","customer_id":0,"customer_group_id":1,"lines":[{"product_id":101,"quantity":2},{"product_id":102,"quantity":3}],"coupon":{"enabled":true,"type":"P","value":"20.0000","product_ids":[],"free_shipping":false,"requires_login":false,"minimum_subtotal":"0.0000","total_use_limit":0,"customer_use_limit":0,"prior_total_uses":0,"prior_customer_uses":0},"expected":{"total":"36.70000000","coupon_eligible":true,"cart_paths_equivalent":false}}]},"requestExample":{"products":[{"product_id":101,"price":"10.0000","stock":100,"minimum_quantity":1,"enabled":true,"shipping":true,"tax_class_id":1},{"product_id":102,"price":"5.0000","stock":100,"minimum_quantity":1,"enabled":true,"shipping":true,"tax_class_id":1},{"product_id":103,"price":"100.0000","stock":100,"minimum_quantity":1,"enabled":false,"shipping":true,"tax_class_id":1}],"discounts":[{"product_id":101,"customer_group_id":2,"quantity":2,"priority":1,"type":"P","value":"10.0000"}],"tax_classes":[{"tax_class_id":1,"percentage_rate":"10.0000","fixed_amount":"0.5000"}],"flat_shipping":{"cost":"4.0000","tax_class_id":1},"cases":[{"case_id":"baseline","customer_id":0,"customer_group_id":1,"lines":[{"product_id":101,"quantity":2},{"product_id":102,"quantity":3}],"coupon":{"enabled":false,"type":"F","value":"7.0000","product_ids":[],"free_shipping":false,"requires_login":false,"minimum_subtotal":"0.0000","total_use_limit":0,"customer_use_limit":0,"prior_total_uses":0,"prior_customer_uses":0},"expected":{"total":"44.40000000","coupon_eligible":false,"cart_paths_equivalent":false}},{"case_id":"customer_use_rejected","customer_id":7,"customer_group_id":1,"lines":[{"product_id":101,"quantity":2},{"product_id":102,"quantity":3}],"coupon":{"enabled":true,"type":"F","value":"7.0000","product_ids":[],"free_shipping":false,"requires_login":false,"minimum_subtotal":"0.0000","total_use_limit":0,"customer_use_limit":1,"prior_total_uses":1,"prior_customer_uses":1},"expected":{"total":"44.40000000","coupon_eligible":false,"cart_paths_equivalent":false}},{"case_id":"disabled_product_removed","customer_id":0,"customer_group_id":1,"lines":[{"product_id":101,"quantity":2},{"product_id":102,"quantity":3},{"product_id":103,"quantity":1}],"coupon":{"enabled":false,"type":"F","value":"7.0000","product_ids":[],"free_shipping":false,"requires_login":false,"minimum_subtotal":"0.0000","total_use_limit":0,"customer_use_limit":0,"prior_total_uses":0,"prior_customer_uses":0},"expected":{"total":"44.40000000","coupon_eligible":false,"cart_paths_equivalent":false}},{"case_id":"eligible_product_cap","customer_id":0,"customer_group_id":1,"lines":[{"product_id":101,"quantity":2},{"product_id":102,"quantity":3}],"coupon":{"enabled":true,"type":"F","value":"100.0000","product_ids":[102],"free_shipping":false,"requires_login":false,"minimum_subtotal":"0.0000","total_use_limit":0,"customer_use_limit":0,"prior_total_uses":0,"prior_customer_uses":0},"expected":{"total":"27.90000000","coupon_eligible":true,"cart_paths_equivalent":false}},{"case_id":"fixed_free_shipping","customer_id":0,"customer_group_id":1,"lines":[{"product_id":101,"quantity":2},{"product_id":102,"quantity":3}],"coupon":{"enabled":true,"type":"F","value":"7.0000","product_ids":[],"free_shipping":true,"requires_login":false,"minimum_subtotal":"0.0000","total_use_limit":0,"customer_use_limit":0,"prior_total_uses":0,"prior_customer_uses":0},"expected":{"total":"32.30000000","coupon_eligible":true,"cart_paths_equivalent":false}},{"case_id":"global_use_rejected","customer_id":0,"customer_group_id":1,"lines":[{"product_id":101,"quantity":2},{"product_id":102,"quantity":3}],"coupon":{"enabled":true,"type":"F","value":"7.0000","product_ids":[],"free_shipping":false,"requires_login":false,"minimum_subtotal":"0.0000","total_use_limit":1,"customer_use_limit":0,"prior_total_uses":1,"prior_customer_uses":0},"expected":{"total":"44.40000000","coupon_eligible":false,"cart_paths_equivalent":false}},{"case_id":"group_discount","customer_id":0,"customer_group_id":2,"lines":[{"product_id":101,"quantity":2},{"product_id":102,"quantity":3}],"coupon":{"enabled":false,"type":"F","value":"7.0000","product_ids":[],"free_shipping":false,"requires_login":false,"minimum_subtotal":"0.0000","total_use_limit":0,"customer_use_limit":0,"prior_total_uses":0,"prior_customer_uses":0},"expected":{"total":"42.20000000","coupon_eligible":false,"cart_paths_equivalent":false}},{"case_id":"logged_coupon_rejected","customer_id":0,"customer_group_id":1,"lines":[{"product_id":101,"quantity":2},{"product_id":102,"quantity":3}],"coupon":{"enabled":true,"type":"F","value":"7.0000","product_ids":[],"free_shipping":false,"requires_login":true,"minimum_subtotal":"0.0000","total_use_limit":0,"customer_use_limit":0,"prior_total_uses":0,"prior_customer_uses":0},"expected":{"total":"44.40000000","coupon_eligible":false,"cart_paths_equivalent":false}},{"case_id":"minimum_rejected","customer_id":0,"customer_group_id":1,"lines":[{"product_id":101,"quantity":2},{"product_id":102,"quantity":3}],"coupon":{"enabled":true,"type":"F","value":"7.0000","product_ids":[],"free_shipping":false,"requires_login":false,"minimum_subtotal":"40.0000","total_use_limit":0,"customer_use_limit":0,"prior_total_uses":0,"prior_customer_uses":0},"expected":{"total":"44.40000000","coupon_eligible":false,"cart_paths_equivalent":false}},{"case_id":"percentage","customer_id":0,"customer_group_id":1,"lines":[{"product_id":101,"quantity":2},{"product_id":102,"quantity":3}],"coupon":{"enabled":true,"type":"P","value":"20.0000","product_ids":[],"free_shipping":false,"requires_login":false,"minimum_subtotal":"0.0000","total_use_limit":0,"customer_use_limit":0,"prior_total_uses":0,"prior_customer_uses":0},"expected":{"total":"36.70000000","coupon_eligible":true,"cart_paths_equivalent":false}}]},"outputSchema":{"type":"object","properties":{"operation":{"const":"checkout-rule-regression-review"},"result":{"type":"object","properties":{"review":{"type":"object","properties":{"artifact_id":{"type":"string","minLength":1,"maxLength":128},"sha256":{"type":"string","pattern":"^[a-f0-9]{64}$"},"bytes":{"type":"integer","minimum":1,"maximum":4194304},"media_type":{"const":"application/json"}},"required":["artifact_id","sha256","bytes","media_type"],"additionalProperties":false},"cases":{"type":"integer","minimum":1,"maximum":16},"product_evaluations":{"type":"integer","minimum":0,"maximum":256},"violated_expectations":{"type":"integer","minimum":0,"maximum":48},"cart_path_discrepancies":{"type":"integer","minimum":0,"maximum":16},"policy_expectations_met":{"type":"boolean"},"seed_state_unchanged":{"const":true},"native_checkout_complete":{"const":true},"scope":{"const":"pinned_simple_product_checkout_rules_not_live_store_or_tax_law"},"warnings":{"type":"array","items":{"type":"string","minLength":1,"maxLength":1024},"minItems":1,"maxItems":16}},"required":["review","cases","product_evaluations","violated_expectations","cart_path_discrepancies","policy_expectations_met","seed_state_unchanged","native_checkout_complete","scope","warnings"],"additionalProperties":false},"upstream":{"type":"object","properties":{"project":{"const":"OpenCart"},"version":{"const":"5.0.0.0 Alpha"},"source_commit":{"const":"8cc9431ad4d7403bbd12171ea34b29ae99bc682a"},"runtime_bundle_sha256":{"type":"string","pattern":"^[a-f0-9]{64}$"},"schema_sha256":{"type":"string","pattern":"^[a-f0-9]{64}$"},"components":{"const":["Cart::getProducts","Cart::getTaxes","Cart::getTotal","Tax::getRates","Marketing\\Coupon::getCoupon","Shipping\\Flat::getQuote","Checkout\\Cart::getTotals"]},"canonical_request_sha256":{"type":"string","pattern":"^[a-f0-9]{64}$"},"php_version":{"const":"8.4.25"},"pdo_driver":{"const":"mysql"},"database_version":{"type":"string","minLength":1,"maxLength":128}},"required":["project","version","source_commit","runtime_bundle_sha256","schema_sha256","components","canonical_request_sha256","php_version","pdo_driver","database_version"],"additionalProperties":false},"runtime_ms":{"type":"number","minimum":0,"maximum":120000}},"required":["operation","result","upstream","runtime_ms"],"additionalProperties":false}},{"method":"POST","path":"/v1/oss-opencart-catalog-import-rehearsal","url":"https://agent.halowerk.com/v1/oss-opencart-catalog-import-rehearsal","tool":"oss_opencart_catalog_import_rehearsal","price_usdc":0.005,"price_model":"per_call","summary":"Rehearse a staged product-catalog import against the pinned OpenCart code and get variant, option and localized-cart integrity reported stage by stage.","description":"Walks a staged product-catalog import through the pinned OpenCart source in a private, non-root database and reports what the native code makes of it at each stage: how many masters and variants survive, whether option values stay attached to the right products, and how the resulting catalog behaves in a localized cart. The point is to find the damage before the import touches a live shop, where a broken option mapping shows up as a customer ordering a variant that does not exist.","input_schema":{"type":"object","properties":{"locales":{"type":"array","items":{"type":"string","pattern":"^[a-z]{2}-[a-z]{2}$","minLength":5,"maxLength":5},"minItems":1,"maxItems":4},"taxonomy":{"type":"array","items":{"type":"object","properties":{"ref":{"type":"string","pattern":"^[a-z][a-z0-9_-]{0,31}$","minLength":1,"maxLength":32},"type":{"enum":["select","radio"]},"names":{"type":"array","items":{"type":"object","properties":{"locale":{"type":"string","pattern":"^[a-z]{2}-[a-z]{2}$","minLength":5,"maxLength":5},"name":{"type":"string","minLength":1,"maxLength":128,"pattern":"^[^\\x00-\\x08\\x0b\\x0c\\x0e-\\x1f\\x7f\\ud800-\\udfff]*$"}},"required":["locale","name"],"additionalProperties":false},"minItems":1,"maxItems":4},"values":{"type":"array","items":{"type":"object","properties":{"ref":{"type":"string","pattern":"^[a-z][a-z0-9_-]{0,31}$","minLength":1,"maxLength":32},"names":{"type":"array","items":{"type":"object","properties":{"locale":{"type":"string","pattern":"^[a-z]{2}-[a-z]{2}$","minLength":5,"maxLength":5},"name":{"type":"string","minLength":1,"maxLength":128,"pattern":"^[^\\x00-\\x08\\x0b\\x0c\\x0e-\\x1f\\x7f\\ud800-\\udfff]*$"}},"required":["locale","name"],"additionalProperties":false},"minItems":1,"maxItems":4}},"required":["ref","names"],"additionalProperties":false},"minItems":1,"maxItems":8}},"required":["ref","type","names","values"],"additionalProperties":false},"minItems":0,"maxItems":8},"stages":{"type":"array","items":{"type":"object","properties":{"ref":{"type":"string","pattern":"^[a-z][a-z0-9_-]{0,31}$","minLength":1,"maxLength":32},"masters":{"type":"array","items":{"type":"object","properties":{"ref":{"type":"string","pattern":"^[a-z][a-z0-9_-]{0,31}$","minLength":1,"maxLength":32},"sku":{"type":"string","minLength":1,"maxLength":64,"pattern":"^[^\\x00-\\x08\\x0b\\x0c\\x0e-\\x1f\\x7f\\ud800-\\udfff]*$"},"quantity":{"type":"integer","minimum":0,"maximum":100000},"price":{"type":"string","pattern":"^(?:0|[1-9][0-9]{0,4})(?:\\.[0-9]{1,4})?$","maxLength":10},"weight":{"type":"string","pattern":"^(?:0|[1-9][0-9]{0,4})(?:\\.[0-9]{1,4})?$","maxLength":10},"points":{"type":"integer","minimum":0,"maximum":1000},"minimum":{"type":"integer","minimum":1,"maximum":100},"subtract":{"type":"boolean"},"shipping":{"type":"boolean"},"enabled":{"type":"boolean"},"descriptions":{"type":"array","items":{"type":"object","properties":{"locale":{"type":"string","pattern":"^[a-z]{2}-[a-z]{2}$","minLength":5,"maxLength":5},"name":{"type":"string","minLength":1,"maxLength":255,"pattern":"^[^\\x00-\\x08\\x0b\\x0c\\x0e-\\x1f\\x7f\\ud800-\\udfff]*$"},"description":{"type":"string","minLength":0,"maxLength":2048,"pattern":"^[^\\x00-\\x08\\x0b\\x0c\\x0e-\\x1f\\x7f\\ud800-\\udfff]*$"},"meta_title":{"type":"string","minLength":0,"maxLength":255,"pattern":"^[^\\x00-\\x08\\x0b\\x0c\\x0e-\\x1f\\x7f\\ud800-\\udfff]*$"},"meta_description":{"type":"string","minLength":0,"maxLength":255,"pattern":"^[^\\x00-\\x08\\x0b\\x0c\\x0e-\\x1f\\x7f\\ud800-\\udfff]*$"},"meta_keyword":{"type":"string","minLength":0,"maxLength":255,"pattern":"^[^\\x00-\\x08\\x0b\\x0c\\x0e-\\x1f\\x7f\\ud800-\\udfff]*$"}},"required":["locale","name","description","meta_title","meta_description","meta_keyword"],"additionalProperties":false},"minItems":1,"maxItems":4},"options":{"type":"array","items":{"type":"object","properties":{"ref":{"type":"string","pattern":"^[a-z][a-z0-9_-]{0,31}$","minLength":1,"maxLength":32},"required":{"type":"boolean"},"values":{"type":"array","items":{"type":"object","properties":{"ref":{"type":"string","pattern":"^[a-z][a-z0-9_-]{0,31}$","minLength":1,"maxLength":32},"quantity":{"type":"integer","minimum":0,"maximum":100000},"subtract":{"type":"boolean"},"price":{"type":"string","pattern":"^(?:0|[1-9][0-9]{0,4})(?:\\.[0-9]{1,4})?$","maxLength":10},"points":{"type":"integer","minimum":0,"maximum":1000},"weight":{"type":"string","pattern":"^(?:0|[1-9][0-9]{0,4})(?:\\.[0-9]{1,4})?$","maxLength":10}},"required":["ref","quantity","subtract","price","points","weight"],"additionalProperties":false},"minItems":1,"maxItems":8}},"required":["ref","required","values"],"additionalProperties":false},"minItems":0,"maxItems":4}},"required":["ref","sku","quantity","price","weight","points","minimum","subtract","shipping","enabled","descriptions","options"],"additionalProperties":false},"minItems":0,"maxItems":8},"variants":{"type":"array","items":{"type":"object","properties":{"ref":{"type":"string","pattern":"^[a-z][a-z0-9_-]{0,31}$","minLength":1,"maxLength":32},"master":{"type":"string","pattern":"^[a-z][a-z0-9_-]{0,31}$","minLength":1,"maxLength":32},"sku":{"type":"string","minLength":1,"maxLength":64,"pattern":"^[^\\x00-\\x08\\x0b\\x0c\\x0e-\\x1f\\x7f\\ud800-\\udfff]*$"},"quantity":{"type":"integer","minimum":0,"maximum":100000},"selection":{"type":"array","items":{"type":"object","properties":{"option":{"type":"string","pattern":"^[a-z][a-z0-9_-]{0,31}$","minLength":1,"maxLength":32},"value":{"type":"string","pattern":"^[a-z][a-z0-9_-]{0,31}$","minLength":1,"maxLength":32}},"required":["option","value"],"additionalProperties":false},"minItems":1,"maxItems":4},"overrides":{"type":"object","properties":{"price":{"type":"string","pattern":"^(?:0|[1-9][0-9]{0,4})(?:\\.[0-9]{1,4})?$","maxLength":10},"weight":{"type":"string","pattern":"^(?:0|[1-9][0-9]{0,4})(?:\\.[0-9]{1,4})?$","maxLength":10},"points":{"type":"integer","minimum":0,"maximum":1000},"minimum":{"type":"integer","minimum":1,"maximum":100},"subtract":{"type":"boolean"},"shipping":{"type":"boolean"},"enabled":{"type":"boolean"},"descriptions":{"type":"array","items":{"type":"object","properties":{"locale":{"type":"string","pattern":"^[a-z]{2}-[a-z]{2}$","minLength":5,"maxLength":5},"name":{"type":"string","minLength":1,"maxLength":255,"pattern":"^[^\\x00-\\x08\\x0b\\x0c\\x0e-\\x1f\\x7f\\ud800-\\udfff]*$"},"description":{"type":"string","minLength":0,"maxLength":2048,"pattern":"^[^\\x00-\\x08\\x0b\\x0c\\x0e-\\x1f\\x7f\\ud800-\\udfff]*$"},"meta_title":{"type":"string","minLength":0,"maxLength":255,"pattern":"^[^\\x00-\\x08\\x0b\\x0c\\x0e-\\x1f\\x7f\\ud800-\\udfff]*$"},"meta_description":{"type":"string","minLength":0,"maxLength":255,"pattern":"^[^\\x00-\\x08\\x0b\\x0c\\x0e-\\x1f\\x7f\\ud800-\\udfff]*$"},"meta_keyword":{"type":"string","minLength":0,"maxLength":255,"pattern":"^[^\\x00-\\x08\\x0b\\x0c\\x0e-\\x1f\\x7f\\ud800-\\udfff]*$"}},"required":["locale"],"additionalProperties":false},"minItems":0,"maxItems":4}},"required":[],"additionalProperties":false}},"required":["ref","master","sku","quantity","selection","overrides"],"additionalProperties":false},"minItems":0,"maxItems":16}},"required":["ref","masters","variants"],"additionalProperties":false},"minItems":1,"maxItems":4}},"required":["locales","taxonomy","stages"],"additionalProperties":false},"needs_history":false,"payment_required":true,"serviceName":"oss_opencart_catalog_import_rehearsal","tags":["oss","opencart","p045"],"example_request":{"locales":["de-de","en-gb"],"taxonomy":[{"ref":"colour","type":"select","names":[{"locale":"de-de","name":"Farbe 🎨"},{"locale":"en-gb","name":"Colour"}],"values":[{"ref":"blue","names":[{"locale":"de-de","name":"Blau"},{"locale":"en-gb","name":"Blue"}]},{"ref":"green","names":[{"locale":"de-de","name":"Grün"},{"locale":"en-gb","name":"Green"}]},{"ref":"red","names":[{"locale":"de-de","name":"Rot"},{"locale":"en-gb","name":"Red"}]}]},{"ref":"size","type":"radio","names":[{"locale":"de-de","name":"Größe"},{"locale":"en-gb","name":"Size"}],"values":[{"ref":"large","names":[{"locale":"de-de","name":"Groß"},{"locale":"en-gb","name":"Large"}]},{"ref":"medium","names":[{"locale":"de-de","name":"Mittel"},{"locale":"en-gb","name":"Medium"}]}]}],"stages":[{"ref":"initial","masters":[{"ref":"book","sku":"book","quantity":20,"price":"5.0000","weight":"1.0000","points":0,"minimum":1,"subtract":true,"shipping":false,"enabled":true,"descriptions":[{"locale":"de-de","name":"book Name","description":"Native import: book Name\nO'Reilly & <b>UTF-8</b>","meta_title":"book Name","meta_description":"Synthetic fixture","meta_keyword":""},{"locale":"en-gb","name":"book name","description":"Native import: book name\nO'Reilly & <b>UTF-8</b>","meta_title":"book name","meta_description":"Synthetic fixture","meta_keyword":""}],"options":[]},{"ref":"shirt","sku":"shirt-master","quantity":20,"price":"10.0000","weight":"1.0000","points":4,"minimum":1,"subtract":true,"shipping":true,"enabled":true,"descriptions":[{"locale":"de-de","name":"shirt Name","description":"Native import: shirt Name\nO'Reilly & <b>UTF-8</b>","meta_title":"shirt Name","meta_description":"Synthetic fixture","meta_keyword":""},{"locale":"en-gb","name":"shirt name","description":"Native import: shirt name\nO'Reilly & <b>UTF-8</b>","meta_title":"shirt name","meta_description":"Synthetic fixture","meta_keyword":""}],"options":[{"ref":"colour","required":true,"values":[{"ref":"blue","quantity":9,"subtract":true,"price":"3.0000","points":2,"weight":"0.2500"},{"ref":"red","quantity":1,"subtract":true,"price":"2.0000","points":2,"weight":"0.2500"}]},{"ref":"size","required":true,"values":[{"ref":"large","quantity":9,"subtract":true,"price":"1.0000","points":2,"weight":"0.2500"},{"ref":"medium","quantity":9,"subtract":true,"price":"0.0000","points":2,"weight":"0.2500"}]}]}],"variants":[{"ref":"variant-a","master":"shirt","sku":"shirt-red-m","quantity":3,"selection":[{"option":"colour","value":"red"},{"option":"size","value":"medium"}],"overrides":{"descriptions":[{"locale":"de-de","name":"Rotes Sondermodell"}]}},{"ref":"variant-b","master":"shirt","sku":"shirt-blue-l","quantity":7,"selection":[{"option":"colour","value":"blue"},{"option":"size","value":"large"}],"overrides":{"price":"17.0000","minimum":3,"points":0,"descriptions":[]}}]},{"ref":"updated","masters":[{"ref":"book","sku":"book","quantity":20,"price":"5.0000","weight":"1.0000","points":0,"minimum":1,"subtract":true,"shipping":false,"enabled":true,"descriptions":[{"locale":"de-de","name":"book Name","description":"Native import: book Name\nO'Reilly & <b>UTF-8</b>","meta_title":"book Name","meta_description":"Synthetic fixture","meta_keyword":""},{"locale":"en-gb","name":"book name","description":"Native import: book name\nO'Reilly & <b>UTF-8</b>","meta_title":"book name","meta_description":"Synthetic fixture","meta_keyword":""}],"options":[]},{"ref":"shirt","sku":"shirt-master","quantity":20,"price":"12.0000","weight":"1.0000","points":4,"minimum":1,"subtract":true,"shipping":true,"enabled":true,"descriptions":[{"locale":"de-de","name":"Aktualisiertes Shirt","description":"Native import: Aktualisiertes Shirt\nO'Reilly & <b>UTF-8</b>","meta_title":"Aktualisiertes Shirt","meta_description":"Synthetic fixture","meta_keyword":""},{"locale":"en-gb","name":"Updated shirt","description":"Native import: Updated shirt\nO'Reilly & <b>UTF-8</b>","meta_title":"Updated shirt","meta_description":"Synthetic fixture","meta_keyword":""}],"options":[{"ref":"colour","required":true,"values":[{"ref":"blue","quantity":9,"subtract":true,"price":"4.0000","points":2,"weight":"0.2500"},{"ref":"green","quantity":9,"subtract":true,"price":"1.0000","points":2,"weight":"0.2500"}]},{"ref":"size","required":true,"values":[{"ref":"large","quantity":9,"subtract":true,"price":"1.0000","points":2,"weight":"0.2500"},{"ref":"medium","quantity":9,"subtract":true,"price":"0.0000","points":2,"weight":"0.2500"}]}]}],"variants":[{"ref":"variant-a","master":"shirt","sku":"shirt-red-m","quantity":3,"selection":[{"option":"colour","value":"green"},{"option":"size","value":"medium"}],"overrides":{"descriptions":[{"locale":"de-de","name":"Grünes Sondermodell"}]}},{"ref":"variant-b","master":"shirt","sku":"shirt-blue-l","quantity":1,"selection":[{"option":"colour","value":"blue"},{"option":"size","value":"large"}],"overrides":{"descriptions":[]}}]},{"ref":"retired","masters":[{"ref":"shirt","sku":"shirt-master","quantity":20,"price":"12.0000","weight":"1.0000","points":4,"minimum":1,"subtract":true,"shipping":true,"enabled":false,"descriptions":[{"locale":"de-de","name":"Aktualisiertes Shirt","description":"Native import: Aktualisiertes Shirt\nO'Reilly & <b>UTF-8</b>","meta_title":"Aktualisiertes Shirt","meta_description":"Synthetic fixture","meta_keyword":""},{"locale":"en-gb","name":"Updated shirt","description":"Native import: Updated shirt\nO'Reilly & <b>UTF-8</b>","meta_title":"Updated shirt","meta_description":"Synthetic fixture","meta_keyword":""}],"options":[{"ref":"colour","required":true,"values":[{"ref":"blue","quantity":9,"subtract":true,"price":"4.0000","points":2,"weight":"0.2500"},{"ref":"green","quantity":9,"subtract":true,"price":"1.0000","points":2,"weight":"0.2500"}]}]}],"variants":[{"ref":"variant-a","master":"shirt","sku":"shirt-red-m","quantity":3,"selection":[{"option":"colour","value":"green"}],"overrides":{"descriptions":[{"locale":"de-de","name":"Grünes Sondermodell"}],"enabled":true,"price":"21.0000"}}]}]},"requestExample":{"locales":["de-de","en-gb"],"taxonomy":[{"ref":"colour","type":"select","names":[{"locale":"de-de","name":"Farbe 🎨"},{"locale":"en-gb","name":"Colour"}],"values":[{"ref":"blue","names":[{"locale":"de-de","name":"Blau"},{"locale":"en-gb","name":"Blue"}]},{"ref":"green","names":[{"locale":"de-de","name":"Grün"},{"locale":"en-gb","name":"Green"}]},{"ref":"red","names":[{"locale":"de-de","name":"Rot"},{"locale":"en-gb","name":"Red"}]}]},{"ref":"size","type":"radio","names":[{"locale":"de-de","name":"Größe"},{"locale":"en-gb","name":"Size"}],"values":[{"ref":"large","names":[{"locale":"de-de","name":"Groß"},{"locale":"en-gb","name":"Large"}]},{"ref":"medium","names":[{"locale":"de-de","name":"Mittel"},{"locale":"en-gb","name":"Medium"}]}]}],"stages":[{"ref":"initial","masters":[{"ref":"book","sku":"book","quantity":20,"price":"5.0000","weight":"1.0000","points":0,"minimum":1,"subtract":true,"shipping":false,"enabled":true,"descriptions":[{"locale":"de-de","name":"book Name","description":"Native import: book Name\nO'Reilly & <b>UTF-8</b>","meta_title":"book Name","meta_description":"Synthetic fixture","meta_keyword":""},{"locale":"en-gb","name":"book name","description":"Native import: book name\nO'Reilly & <b>UTF-8</b>","meta_title":"book name","meta_description":"Synthetic fixture","meta_keyword":""}],"options":[]},{"ref":"shirt","sku":"shirt-master","quantity":20,"price":"10.0000","weight":"1.0000","points":4,"minimum":1,"subtract":true,"shipping":true,"enabled":true,"descriptions":[{"locale":"de-de","name":"shirt Name","description":"Native import: shirt Name\nO'Reilly & <b>UTF-8</b>","meta_title":"shirt Name","meta_description":"Synthetic fixture","meta_keyword":""},{"locale":"en-gb","name":"shirt name","description":"Native import: shirt name\nO'Reilly & <b>UTF-8</b>","meta_title":"shirt name","meta_description":"Synthetic fixture","meta_keyword":""}],"options":[{"ref":"colour","required":true,"values":[{"ref":"blue","quantity":9,"subtract":true,"price":"3.0000","points":2,"weight":"0.2500"},{"ref":"red","quantity":1,"subtract":true,"price":"2.0000","points":2,"weight":"0.2500"}]},{"ref":"size","required":true,"values":[{"ref":"large","quantity":9,"subtract":true,"price":"1.0000","points":2,"weight":"0.2500"},{"ref":"medium","quantity":9,"subtract":true,"price":"0.0000","points":2,"weight":"0.2500"}]}]}],"variants":[{"ref":"variant-a","master":"shirt","sku":"shirt-red-m","quantity":3,"selection":[{"option":"colour","value":"red"},{"option":"size","value":"medium"}],"overrides":{"descriptions":[{"locale":"de-de","name":"Rotes Sondermodell"}]}},{"ref":"variant-b","master":"shirt","sku":"shirt-blue-l","quantity":7,"selection":[{"option":"colour","value":"blue"},{"option":"size","value":"large"}],"overrides":{"price":"17.0000","minimum":3,"points":0,"descriptions":[]}}]},{"ref":"updated","masters":[{"ref":"book","sku":"book","quantity":20,"price":"5.0000","weight":"1.0000","points":0,"minimum":1,"subtract":true,"shipping":false,"enabled":true,"descriptions":[{"locale":"de-de","name":"book Name","description":"Native import: book Name\nO'Reilly & <b>UTF-8</b>","meta_title":"book Name","meta_description":"Synthetic fixture","meta_keyword":""},{"locale":"en-gb","name":"book name","description":"Native import: book name\nO'Reilly & <b>UTF-8</b>","meta_title":"book name","meta_description":"Synthetic fixture","meta_keyword":""}],"options":[]},{"ref":"shirt","sku":"shirt-master","quantity":20,"price":"12.0000","weight":"1.0000","points":4,"minimum":1,"subtract":true,"shipping":true,"enabled":true,"descriptions":[{"locale":"de-de","name":"Aktualisiertes Shirt","description":"Native import: Aktualisiertes Shirt\nO'Reilly & <b>UTF-8</b>","meta_title":"Aktualisiertes Shirt","meta_description":"Synthetic fixture","meta_keyword":""},{"locale":"en-gb","name":"Updated shirt","description":"Native import: Updated shirt\nO'Reilly & <b>UTF-8</b>","meta_title":"Updated shirt","meta_description":"Synthetic fixture","meta_keyword":""}],"options":[{"ref":"colour","required":true,"values":[{"ref":"blue","quantity":9,"subtract":true,"price":"4.0000","points":2,"weight":"0.2500"},{"ref":"green","quantity":9,"subtract":true,"price":"1.0000","points":2,"weight":"0.2500"}]},{"ref":"size","required":true,"values":[{"ref":"large","quantity":9,"subtract":true,"price":"1.0000","points":2,"weight":"0.2500"},{"ref":"medium","quantity":9,"subtract":true,"price":"0.0000","points":2,"weight":"0.2500"}]}]}],"variants":[{"ref":"variant-a","master":"shirt","sku":"shirt-red-m","quantity":3,"selection":[{"option":"colour","value":"green"},{"option":"size","value":"medium"}],"overrides":{"descriptions":[{"locale":"de-de","name":"Grünes Sondermodell"}]}},{"ref":"variant-b","master":"shirt","sku":"shirt-blue-l","quantity":1,"selection":[{"option":"colour","value":"blue"},{"option":"size","value":"large"}],"overrides":{"descriptions":[]}}]},{"ref":"retired","masters":[{"ref":"shirt","sku":"shirt-master","quantity":20,"price":"12.0000","weight":"1.0000","points":4,"minimum":1,"subtract":true,"shipping":true,"enabled":false,"descriptions":[{"locale":"de-de","name":"Aktualisiertes Shirt","description":"Native import: Aktualisiertes Shirt\nO'Reilly & <b>UTF-8</b>","meta_title":"Aktualisiertes Shirt","meta_description":"Synthetic fixture","meta_keyword":""},{"locale":"en-gb","name":"Updated shirt","description":"Native import: Updated shirt\nO'Reilly & <b>UTF-8</b>","meta_title":"Updated shirt","meta_description":"Synthetic fixture","meta_keyword":""}],"options":[{"ref":"colour","required":true,"values":[{"ref":"blue","quantity":9,"subtract":true,"price":"4.0000","points":2,"weight":"0.2500"},{"ref":"green","quantity":9,"subtract":true,"price":"1.0000","points":2,"weight":"0.2500"}]}]}],"variants":[{"ref":"variant-a","master":"shirt","sku":"shirt-red-m","quantity":3,"selection":[{"option":"colour","value":"green"}],"overrides":{"descriptions":[{"locale":"de-de","name":"Grünes Sondermodell"}],"enabled":true,"price":"21.0000"}}]}]},"outputSchema":{"type":"object","properties":{"operation":{"const":"catalog-import-rehearsal"},"result":{"type":"object","properties":{"review":{"type":"object","properties":{"artifact_id":{"type":"string","minLength":1,"maxLength":128},"sha256":{"type":"string","pattern":"^[a-f0-9]{64}$"},"bytes":{"type":"integer","minimum":1,"maximum":12582912},"media_type":{"const":"application/json"}},"required":["artifact_id","sha256","bytes","media_type"],"additionalProperties":false},"stages":{"type":"integer","minimum":1,"maximum":4},"final_products":{"type":"integer","minimum":0,"maximum":24},"final_variants":{"type":"integer","minimum":0,"maximum":16},"localized_cart_evaluations":{"type":"integer","minimum":0,"maximum":384},"catalog_integrity_verified":{"const":true},"native_import_complete":{"const":true},"scope":{"const":"isolated_typed_catalog_import_with_declared_language_id_patch"},"warnings":{"type":"array","items":{"type":"string","minLength":1,"maxLength":1024},"minItems":1,"maxItems":16}},"required":["review","stages","final_products","final_variants","localized_cart_evaluations","catalog_integrity_verified","native_import_complete","scope","warnings"],"additionalProperties":false},"upstream":{"type":"object","properties":{"project":{"const":"OpenCart"},"version":{"const":"5.0.0.0 Alpha"},"source_commit":{"const":"8cc9431ad4d7403bbd12171ea34b29ae99bc682a"},"runtime_bundle_sha256":{"type":"string","pattern":"^[a-f0-9]{64}$"},"schema_sha256":{"type":"string","pattern":"^[a-f0-9]{64}$"},"components":{"const":["Admin\\Product::addProduct","Admin\\Product::editProduct","Admin\\Product::deleteProduct","Admin\\Product::addVariant (language-ID patch)","Admin\\Product::editVariant","Admin\\Product::editVariants","Admin\\Option::addOption","Admin\\Option::addValue","Catalog\\Cart::getProducts"]},"canonical_request_sha256":{"type":"string","pattern":"^[a-f0-9]{64}$"},"php_version":{"const":"8.4.25"},"pdo_driver":{"const":"mysql"},"database_version":{"type":"string","minLength":1,"maxLength":128},"patched_product_sha256":{"const":"99febcf9d6af1742b1d27a53d085f9170b925ffd9e13562578ad0f7738900c02"}},"required":["project","version","source_commit","runtime_bundle_sha256","schema_sha256","components","canonical_request_sha256","php_version","pdo_driver","database_version","patched_product_sha256"],"additionalProperties":false},"runtime_ms":{"type":"number","minimum":0,"maximum":120000}},"required":["operation","result","upstream","runtime_ms"],"additionalProperties":false}},{"method":"POST","path":"/v1/oss-opencart-order-export-reconciliation","url":"https://agent.halowerk.com/v1/oss-opencart-order-export-reconciliation","tool":"oss_opencart_order_export_reconciliation","price_usdc":0.005,"price_model":"per_call","summary":"Reconcile a supplied order export against a native OpenCart ledger and get every mismatched row, currency and arithmetic violation named individually.","description":"Rebuilds the orders you supply inside a private, non-root OpenCart database and checks your export against what the native code computes. Each export row is matched to a ledger order, and every difference is named: a total that does not add up under the stated arithmetic policy, a currency conversion applied at the wrong point, a localized status that maps to nothing.","input_schema":{"type":"object","properties":{"currencies":{"type":"array","items":{"type":"object","properties":{"currency_id":{"type":"integer","minimum":1,"maximum":2147483647},"code":{"type":"string","minLength":3,"maxLength":3,"pattern":"^[A-Z]{3}$"},"decimal_place":{"type":"integer","minimum":0,"maximum":3}},"required":["currency_id","code","decimal_place"],"additionalProperties":false},"minItems":1,"maxItems":8},"languages":{"type":"array","items":{"type":"object","properties":{"language_id":{"type":"integer","minimum":1,"maximum":2147483647},"code":{"type":"string","minLength":5,"maxLength":5,"pattern":"^[a-z]{2}-[a-z]{2}$"}},"required":["language_id","code"],"additionalProperties":false},"minItems":1,"maxItems":4},"statuses":{"type":"array","items":{"type":"object","properties":{"order_status_id":{"type":"integer","minimum":1,"maximum":2147483647},"language_id":{"type":"integer","minimum":1,"maximum":2147483647},"name":{"type":"string","minLength":1,"maxLength":32,"pattern":"^[^\\x00-\\x08\\x0b\\x0c\\x0e-\\x1f\\x7f\\ud800-\\udfff]*$"}},"required":["order_status_id","language_id","name"],"additionalProperties":false},"minItems":0,"maxItems":64},"ledger":{"type":"object","properties":{"orders":{"type":"array","items":{"type":"object","properties":{"order_id":{"type":"integer","minimum":1,"maximum":2147483647},"store_id":{"type":"integer","minimum":0,"maximum":2147483647},"customer_id":{"type":"integer","minimum":0,"maximum":2147483647},"customer_group_id":{"type":"integer","minimum":0,"maximum":2147483647},"language_id":{"type":"integer","minimum":1,"maximum":2147483647},"language_code":{"type":"string","minLength":5,"maxLength":5,"pattern":"^[a-z]{2}-[a-z]{2}$"},"currency_id":{"type":"integer","minimum":1,"maximum":2147483647},"currency_code":{"type":"string","minLength":3,"maxLength":3,"pattern":"^[A-Z]{3}$"},"currency_value":{"type":"string","minLength":1,"maxLength":20,"pattern":"^(?:0|[1-9][0-9]{0,3})(?:\\.[0-9]{1,8})?$"},"total":{"type":"string","minLength":1,"maxLength":24,"pattern":"^-?(?:0|[1-9][0-9]{0,6})(?:\\.[0-9]{1,4})?$"},"order_status_id":{"type":"integer","minimum":0,"maximum":2147483647},"transaction_id":{"type":"string","minLength":0,"maxLength":100,"pattern":"^[^\\x00-\\x08\\x0b\\x0c\\x0e-\\x1f\\x7f\\ud800-\\udfff]*$"},"comment":{"type":"string","minLength":0,"maxLength":2048,"pattern":"^[^\\x00-\\x08\\x0b\\x0c\\x0e-\\x1f\\x7f\\ud800-\\udfff]*$"}},"required":["order_id","store_id","customer_id","customer_group_id","language_id","language_code","currency_id","currency_code","currency_value","total","order_status_id","transaction_id","comment"],"additionalProperties":false},"minItems":0,"maxItems":16},"products":{"type":"array","items":{"type":"object","properties":{"order_product_id":{"type":"integer","minimum":1,"maximum":2147483647},"order_id":{"type":"integer","minimum":1,"maximum":2147483647},"product_id":{"type":"integer","minimum":0,"maximum":2147483647},"master_id":{"type":"integer","minimum":0,"maximum":2147483647},"name":{"type":"string","minLength":0,"maxLength":255,"pattern":"^[^\\x00-\\x08\\x0b\\x0c\\x0e-\\x1f\\x7f\\ud800-\\udfff]*$"},"model":{"type":"string","minLength":0,"maxLength":64,"pattern":"^[^\\x00-\\x08\\x0b\\x0c\\x0e-\\x1f\\x7f\\ud800-\\udfff]*$"},"quantity":{"type":"integer","minimum":0,"maximum":10000},"price":{"type":"string","minLength":1,"maxLength":24,"pattern":"^-?(?:0|[1-9][0-9]{0,6})(?:\\.[0-9]{1,4})?$"},"total":{"type":"string","minLength":1,"maxLength":24,"pattern":"^-?(?:0|[1-9][0-9]{0,6})(?:\\.[0-9]{1,4})?$"},"tax":{"type":"string","minLength":1,"maxLength":24,"pattern":"^-?(?:0|[1-9][0-9]{0,6})(?:\\.[0-9]{1,4})?$"},"reward":{"type":"integer","minimum":0,"maximum":1000000}},"required":["order_product_id","order_id","product_id","master_id","name","model","quantity","price","total","tax","reward"],"additionalProperties":false},"minItems":0,"maxItems":128},"options":{"type":"array","items":{"type":"object","properties":{"order_option_id":{"type":"integer","minimum":1,"maximum":2147483647},"order_id":{"type":"integer","minimum":1,"maximum":2147483647},"order_product_id":{"type":"integer","minimum":1,"maximum":2147483647},"product_option_id":{"type":"integer","minimum":0,"maximum":2147483647},"product_option_value_id":{"type":"integer","minimum":0,"maximum":2147483647},"name":{"type":"string","minLength":0,"maxLength":255,"pattern":"^[^\\x00-\\x08\\x0b\\x0c\\x0e-\\x1f\\x7f\\ud800-\\udfff]*$"},"value":{"type":"string","minLength":0,"maxLength":2048,"pattern":"^[^\\x00-\\x08\\x0b\\x0c\\x0e-\\x1f\\x7f\\ud800-\\udfff]*$"},"type":{"type":"string","minLength":1,"maxLength":32,"pattern":"^[^\\x00-\\x08\\x0b\\x0c\\x0e-\\x1f\\x7f\\ud800-\\udfff]*$"}},"required":["order_option_id","order_id","order_product_id","product_option_id","product_option_value_id","name","value","type"],"additionalProperties":false},"minItems":0,"maxItems":256},"totals":{"type":"array","items":{"type":"object","properties":{"order_total_id":{"type":"integer","minimum":1,"maximum":2147483647},"order_id":{"type":"integer","minimum":1,"maximum":2147483647},"extension":{"type":"string","minLength":0,"maxLength":255,"pattern":"^[^\\x00-\\x08\\x0b\\x0c\\x0e-\\x1f\\x7f\\ud800-\\udfff]*$"},"code":{"type":"string","minLength":1,"maxLength":32,"pattern":"^[^\\x00-\\x08\\x0b\\x0c\\x0e-\\x1f\\x7f\\ud800-\\udfff]*$"},"title":{"type":"string","minLength":0,"maxLength":255,"pattern":"^[^\\x00-\\x08\\x0b\\x0c\\x0e-\\x1f\\x7f\\ud800-\\udfff]*$"},"value":{"type":"string","minLength":1,"maxLength":24,"pattern":"^-?(?:0|[1-9][0-9]{0,6})(?:\\.[0-9]{1,4})?$"},"sort_order":{"type":"integer","minimum":-1000,"maximum":1000}},"required":["order_total_id","order_id","extension","code","title","value","sort_order"],"additionalProperties":false},"minItems":0,"maxItems":256}},"required":["orders","products","options","totals"],"additionalProperties":false},"export":{"type":"object","properties":{"orders":{"type":"array","items":{"type":"object","properties":{"order_id":{"type":"integer","minimum":1,"maximum":2147483647},"store_id":{"type":"integer","minimum":0,"maximum":2147483647},"customer_id":{"type":"integer","minimum":0,"maximum":2147483647},"customer_group_id":{"type":"integer","minimum":0,"maximum":2147483647},"language_id":{"type":"integer","minimum":1,"maximum":2147483647},"language_code":{"type":"string","minLength":5,"maxLength":5,"pattern":"^[a-z]{2}-[a-z]{2}$"},"currency_id":{"type":"integer","minimum":1,"maximum":2147483647},"currency_code":{"type":"string","minLength":3,"maxLength":3,"pattern":"^[A-Z]{3}$"},"currency_value":{"type":"string","minLength":1,"maxLength":20,"pattern":"^(?:0|[1-9][0-9]{0,3})(?:\\.[0-9]{1,8})?$"},"total":{"type":"string","minLength":1,"maxLength":28,"pattern":"^-?(?:0|[1-9][0-9]{0,12})(?:\\.[0-9]{1,4})?$"},"order_status_id":{"type":"integer","minimum":0,"maximum":2147483647},"transaction_id":{"type":"string","minLength":0,"maxLength":100,"pattern":"^[^\\x00-\\x08\\x0b\\x0c\\x0e-\\x1f\\x7f\\ud800-\\udfff]*$"},"comment":{"type":"string","minLength":0,"maxLength":2048,"pattern":"^[^\\x00-\\x08\\x0b\\x0c\\x0e-\\x1f\\x7f\\ud800-\\udfff]*$"},"order_status":{"anyOf":[{"type":"string","minLength":0,"maxLength":32,"pattern":"^[^\\x00-\\x08\\x0b\\x0c\\x0e-\\x1f\\x7f\\ud800-\\udfff]*$"},{"type":"null"}]}},"required":["order_id","store_id","customer_id","customer_group_id","language_id","language_code","currency_id","currency_code","currency_value","total","order_status_id","transaction_id","comment","order_status"],"additionalProperties":false},"minItems":0,"maxItems":32},"products":{"type":"array","items":{"type":"object","properties":{"order_product_id":{"type":"integer","minimum":1,"maximum":2147483647},"order_id":{"type":"integer","minimum":1,"maximum":2147483647},"product_id":{"type":"integer","minimum":0,"maximum":2147483647},"master_id":{"type":"integer","minimum":0,"maximum":2147483647},"name":{"type":"string","minLength":0,"maxLength":255,"pattern":"^[^\\x00-\\x08\\x0b\\x0c\\x0e-\\x1f\\x7f\\ud800-\\udfff]*$"},"model":{"type":"string","minLength":0,"maxLength":64,"pattern":"^[^\\x00-\\x08\\x0b\\x0c\\x0e-\\x1f\\x7f\\ud800-\\udfff]*$"},"quantity":{"type":"integer","minimum":0,"maximum":10000},"price":{"type":"string","minLength":1,"maxLength":28,"pattern":"^-?(?:0|[1-9][0-9]{0,12})(?:\\.[0-9]{1,4})?$"},"total":{"type":"string","minLength":1,"maxLength":28,"pattern":"^-?(?:0|[1-9][0-9]{0,12})(?:\\.[0-9]{1,4})?$"},"tax":{"type":"string","minLength":1,"maxLength":28,"pattern":"^-?(?:0|[1-9][0-9]{0,12})(?:\\.[0-9]{1,4})?$"},"reward":{"type":"integer","minimum":0,"maximum":1000000}},"required":["order_product_id","order_id","product_id","master_id","name","model","quantity","price","total","tax","reward"],"additionalProperties":false},"minItems":0,"maxItems":256},"options":{"type":"array","items":{"type":"object","properties":{"order_option_id":{"type":"integer","minimum":1,"maximum":2147483647},"order_id":{"type":"integer","minimum":1,"maximum":2147483647},"order_product_id":{"type":"integer","minimum":1,"maximum":2147483647},"product_option_id":{"type":"integer","minimum":0,"maximum":2147483647},"product_option_value_id":{"type":"integer","minimum":0,"maximum":2147483647},"name":{"type":"string","minLength":0,"maxLength":255,"pattern":"^[^\\x00-\\x08\\x0b\\x0c\\x0e-\\x1f\\x7f\\ud800-\\udfff]*$"},"value":{"type":"string","minLength":0,"maxLength":2048,"pattern":"^[^\\x00-\\x08\\x0b\\x0c\\x0e-\\x1f\\x7f\\ud800-\\udfff]*$"},"type":{"type":"string","minLength":1,"maxLength":32,"pattern":"^[^\\x00-\\x08\\x0b\\x0c\\x0e-\\x1f\\x7f\\ud800-\\udfff]*$"}},"required":["order_option_id","order_id","order_product_id","product_option_id","product_option_value_id","name","value","type"],"additionalProperties":false},"minItems":0,"maxItems":512},"totals":{"type":"array","items":{"type":"object","properties":{"order_total_id":{"type":"integer","minimum":1,"maximum":2147483647},"order_id":{"type":"integer","minimum":1,"maximum":2147483647},"extension":{"type":"string","minLength":0,"maxLength":255,"pattern":"^[^\\x00-\\x08\\x0b\\x0c\\x0e-\\x1f\\x7f\\ud800-\\udfff]*$"},"code":{"type":"string","minLength":1,"maxLength":32,"pattern":"^[^\\x00-\\x08\\x0b\\x0c\\x0e-\\x1f\\x7f\\ud800-\\udfff]*$"},"title":{"type":"string","minLength":0,"maxLength":255,"pattern":"^[^\\x00-\\x08\\x0b\\x0c\\x0e-\\x1f\\x7f\\ud800-\\udfff]*$"},"value":{"type":"string","minLength":1,"maxLength":28,"pattern":"^-?(?:0|[1-9][0-9]{0,12})(?:\\.[0-9]{1,4})?$"},"sort_order":{"type":"integer","minimum":-1000,"maximum":1000}},"required":["order_total_id","order_id","extension","code","title","value","sort_order"],"additionalProperties":false},"minItems":0,"maxItems":512}},"required":["orders","products","options","totals"],"additionalProperties":false},"amount_mode":{"enum":["stored_decimal","native_formatted"]},"policies":{"type":"array","items":{"type":"object","properties":{"order_id":{"type":"integer","minimum":1,"maximum":2147483647},"require_line_arithmetic":{"type":"boolean"},"subtotal_id":{"anyOf":[{"type":"integer","minimum":1,"maximum":2147483647},{"type":"null"}]},"grand_total_id":{"anyOf":[{"type":"integer","minimum":1,"maximum":2147483647},{"type":"null"}]},"component_ids":{"type":"array","items":{"type":"integer","minimum":1,"maximum":2147483647},"minItems":0,"maxItems":256}},"required":["order_id","require_line_arithmetic","subtotal_id","grand_total_id","component_ids"],"additionalProperties":false},"minItems":0,"maxItems":16}},"required":["currencies","languages","statuses","ledger","export","amount_mode","policies"],"additionalProperties":false},"needs_history":false,"payment_required":true,"serviceName":"oss_opencart_order_export_reconciliation","tags":["oss","opencart","p045"],"example_request":{"currencies":[{"currency_id":1,"code":"USD","decimal_place":2},{"currency_id":2,"code":"EUR","decimal_place":2},{"currency_id":3,"code":"CHF","decimal_place":2},{"currency_id":4,"code":"JPY","decimal_place":0},{"currency_id":5,"code":"KWD","decimal_place":3}],"languages":[{"language_id":1,"code":"en-gb"},{"language_id":2,"code":"de-de"},{"language_id":3,"code":"fr-fr"}],"statuses":[{"order_status_id":2,"language_id":1,"name":"Recorded"},{"order_status_id":2,"language_id":2,"name":"Erfasst"},{"order_status_id":3,"language_id":1,"name":"Adjusted"},{"order_status_id":3,"language_id":2,"name":"Angepasst"}],"ledger":{"orders":[{"order_id":101,"store_id":0,"customer_id":1101,"customer_group_id":1,"language_id":1,"language_code":"en-gb","currency_id":1,"currency_code":"USD","currency_value":"1.00000000","total":"40.2961","order_status_id":2,"transaction_id":"opaque-'101-reference","comment":"Snapshot O'Reilly & Grüße 🎯"},{"order_id":303,"store_id":0,"customer_id":1303,"customer_group_id":1,"language_id":2,"language_code":"de-de","currency_id":2,"currency_code":"EUR","currency_value":"0.91234567","total":"99.9999","order_status_id":3,"transaction_id":"opaque-'303-reference","comment":"Snapshot O'Reilly & Grüße 🎯"}],"products":[{"order_product_id":2001,"order_id":101,"product_id":501,"master_id":500,"name":"Variant snapshot","model":"SKU-ONE","quantity":3,"price":"12.3456","total":"37.0368","tax":"0.1234","reward":6},{"order_product_id":2005,"order_id":101,"product_id":502,"master_id":0,"name":"Tiny decimal snapshot","model":"SKU-TINY","quantity":2,"price":"0.0001","total":"0.0002","tax":"0.0000","reward":0}],"options":[{"order_option_id":5011,"order_id":101,"order_product_id":2001,"product_option_id":41,"product_option_value_id":91,"name":"Colour snapshot","value":"Red O'Reilly","type":"select"},{"order_option_id":5033,"order_id":101,"order_product_id":2001,"product_option_id":42,"product_option_value_id":0,"name":"Engraving snapshot","value":"Grüße 🎯\nLine 2","type":"text"}],"totals":[{"order_total_id":4010,"order_id":101,"extension":"opencart","code":"tax","title":"First tax","value":"0.2702","sort_order":30},{"order_total_id":4011,"order_id":101,"extension":"opencart","code":"tax","title":"Second tax","value":"0.1000","sort_order":30},{"order_total_id":4020,"order_id":101,"extension":"opencart","code":"shipping","title":"Shipping","value":"4.0000","sort_order":20},{"order_total_id":4030,"order_id":101,"extension":"opencart","code":"coupon","title":"Discount","value":"-1.1111","sort_order":40},{"order_total_id":4050,"order_id":101,"extension":"opencart","code":"sub_total","title":"Subtotal","value":"37.0370","sort_order":10},{"order_total_id":4090,"order_id":101,"extension":"opencart","code":"total","title":"Grand total","value":"40.2961","sort_order":100},{"order_total_id":7010,"order_id":303,"extension":"opencart","code":"sub_total","title":"Subtotal","value":"19.0000","sort_order":10},{"order_total_id":7020,"order_id":303,"extension":"opencart","code":"tax","title":"Tax","value":"3.6100","sort_order":20},{"order_total_id":7090,"order_id":303,"extension":"opencart","code":"total","title":"Grand total","value":"22.6100","sort_order":100}]},"export":{"orders":[{"order_id":101,"store_id":0,"customer_id":1101,"customer_group_id":1,"language_id":1,"language_code":"en-gb","currency_id":1,"currency_code":"USD","currency_value":"1.00000000","total":"40.2961","order_status_id":2,"transaction_id":"opaque-'101-reference","comment":"Snapshot O'Reilly & Grüße 🎯","order_status":"Recorded"},{"order_id":303,"store_id":0,"customer_id":1303,"customer_group_id":1,"language_id":2,"language_code":"de-de","currency_id":2,"currency_code":"EUR","currency_value":"0.91234567","total":"99.9999","order_status_id":3,"transaction_id":"opaque-'303-reference","comment":"Snapshot O'Reilly & Grüße 🎯","order_status":"Angepasst"}],"products":[{"order_product_id":2001,"order_id":101,"product_id":501,"master_id":500,"name":"Variant snapshot","model":"SKU-ONE","quantity":3,"price":"12.3456","total":"37.0368","tax":"0.1234","reward":6},{"order_product_id":2005,"order_id":101,"product_id":502,"master_id":0,"name":"Tiny decimal snapshot","model":"SKU-TINY","quantity":2,"price":"0.0001","total":"0.0002","tax":"0.0000","reward":0}],"options":[{"order_option_id":5011,"order_id":101,"order_product_id":2001,"product_option_id":41,"product_option_value_id":91,"name":"Colour snapshot","value":"Red O'Reilly","type":"select"},{"order_option_id":5033,"order_id":101,"order_product_id":2001,"product_option_id":42,"product_option_value_id":0,"name":"Engraving snapshot","value":"Grüße 🎯\nLine 2","type":"text"}],"totals":[{"order_total_id":4010,"order_id":101,"extension":"opencart","code":"tax","title":"First tax","value":"0.2702","sort_order":30},{"order_total_id":4011,"order_id":101,"extension":"opencart","code":"tax","title":"Second tax","value":"0.1000","sort_order":30},{"order_total_id":4020,"order_id":101,"extension":"opencart","code":"shipping","title":"Shipping","value":"4.0000","sort_order":20},{"order_total_id":4030,"order_id":101,"extension":"opencart","code":"coupon","title":"Discount","value":"-1.1111","sort_order":40},{"order_total_id":4050,"order_id":101,"extension":"opencart","code":"sub_total","title":"Subtotal","value":"37.0370","sort_order":10},{"order_total_id":4090,"order_id":101,"extension":"opencart","code":"total","title":"Grand total","value":"40.2961","sort_order":100},{"order_total_id":7010,"order_id":303,"extension":"opencart","code":"sub_total","title":"Subtotal","value":"19.0000","sort_order":10},{"order_total_id":7020,"order_id":303,"extension":"opencart","code":"tax","title":"Tax","value":"3.6100","sort_order":20},{"order_total_id":7090,"order_id":303,"extension":"opencart","code":"total","title":"Grand total","value":"22.6100","sort_order":100}]},"amount_mode":"stored_decimal","policies":[{"order_id":101,"require_line_arithmetic":true,"subtotal_id":4050,"grand_total_id":4090,"component_ids":[4010,4011,4020,4030,4050]},{"order_id":303,"require_line_arithmetic":true,"subtotal_id":7010,"grand_total_id":7090,"component_ids":[7010,7020]}]},"requestExample":{"currencies":[{"currency_id":1,"code":"USD","decimal_place":2},{"currency_id":2,"code":"EUR","decimal_place":2},{"currency_id":3,"code":"CHF","decimal_place":2},{"currency_id":4,"code":"JPY","decimal_place":0},{"currency_id":5,"code":"KWD","decimal_place":3}],"languages":[{"language_id":1,"code":"en-gb"},{"language_id":2,"code":"de-de"},{"language_id":3,"code":"fr-fr"}],"statuses":[{"order_status_id":2,"language_id":1,"name":"Recorded"},{"order_status_id":2,"language_id":2,"name":"Erfasst"},{"order_status_id":3,"language_id":1,"name":"Adjusted"},{"order_status_id":3,"language_id":2,"name":"Angepasst"}],"ledger":{"orders":[{"order_id":101,"store_id":0,"customer_id":1101,"customer_group_id":1,"language_id":1,"language_code":"en-gb","currency_id":1,"currency_code":"USD","currency_value":"1.00000000","total":"40.2961","order_status_id":2,"transaction_id":"opaque-'101-reference","comment":"Snapshot O'Reilly & Grüße 🎯"},{"order_id":303,"store_id":0,"customer_id":1303,"customer_group_id":1,"language_id":2,"language_code":"de-de","currency_id":2,"currency_code":"EUR","currency_value":"0.91234567","total":"99.9999","order_status_id":3,"transaction_id":"opaque-'303-reference","comment":"Snapshot O'Reilly & Grüße 🎯"}],"products":[{"order_product_id":2001,"order_id":101,"product_id":501,"master_id":500,"name":"Variant snapshot","model":"SKU-ONE","quantity":3,"price":"12.3456","total":"37.0368","tax":"0.1234","reward":6},{"order_product_id":2005,"order_id":101,"product_id":502,"master_id":0,"name":"Tiny decimal snapshot","model":"SKU-TINY","quantity":2,"price":"0.0001","total":"0.0002","tax":"0.0000","reward":0}],"options":[{"order_option_id":5011,"order_id":101,"order_product_id":2001,"product_option_id":41,"product_option_value_id":91,"name":"Colour snapshot","value":"Red O'Reilly","type":"select"},{"order_option_id":5033,"order_id":101,"order_product_id":2001,"product_option_id":42,"product_option_value_id":0,"name":"Engraving snapshot","value":"Grüße 🎯\nLine 2","type":"text"}],"totals":[{"order_total_id":4010,"order_id":101,"extension":"opencart","code":"tax","title":"First tax","value":"0.2702","sort_order":30},{"order_total_id":4011,"order_id":101,"extension":"opencart","code":"tax","title":"Second tax","value":"0.1000","sort_order":30},{"order_total_id":4020,"order_id":101,"extension":"opencart","code":"shipping","title":"Shipping","value":"4.0000","sort_order":20},{"order_total_id":4030,"order_id":101,"extension":"opencart","code":"coupon","title":"Discount","value":"-1.1111","sort_order":40},{"order_total_id":4050,"order_id":101,"extension":"opencart","code":"sub_total","title":"Subtotal","value":"37.0370","sort_order":10},{"order_total_id":4090,"order_id":101,"extension":"opencart","code":"total","title":"Grand total","value":"40.2961","sort_order":100},{"order_total_id":7010,"order_id":303,"extension":"opencart","code":"sub_total","title":"Subtotal","value":"19.0000","sort_order":10},{"order_total_id":7020,"order_id":303,"extension":"opencart","code":"tax","title":"Tax","value":"3.6100","sort_order":20},{"order_total_id":7090,"order_id":303,"extension":"opencart","code":"total","title":"Grand total","value":"22.6100","sort_order":100}]},"export":{"orders":[{"order_id":101,"store_id":0,"customer_id":1101,"customer_group_id":1,"language_id":1,"language_code":"en-gb","currency_id":1,"currency_code":"USD","currency_value":"1.00000000","total":"40.2961","order_status_id":2,"transaction_id":"opaque-'101-reference","comment":"Snapshot O'Reilly & Grüße 🎯","order_status":"Recorded"},{"order_id":303,"store_id":0,"customer_id":1303,"customer_group_id":1,"language_id":2,"language_code":"de-de","currency_id":2,"currency_code":"EUR","currency_value":"0.91234567","total":"99.9999","order_status_id":3,"transaction_id":"opaque-'303-reference","comment":"Snapshot O'Reilly & Grüße 🎯","order_status":"Angepasst"}],"products":[{"order_product_id":2001,"order_id":101,"product_id":501,"master_id":500,"name":"Variant snapshot","model":"SKU-ONE","quantity":3,"price":"12.3456","total":"37.0368","tax":"0.1234","reward":6},{"order_product_id":2005,"order_id":101,"product_id":502,"master_id":0,"name":"Tiny decimal snapshot","model":"SKU-TINY","quantity":2,"price":"0.0001","total":"0.0002","tax":"0.0000","reward":0}],"options":[{"order_option_id":5011,"order_id":101,"order_product_id":2001,"product_option_id":41,"product_option_value_id":91,"name":"Colour snapshot","value":"Red O'Reilly","type":"select"},{"order_option_id":5033,"order_id":101,"order_product_id":2001,"product_option_id":42,"product_option_value_id":0,"name":"Engraving snapshot","value":"Grüße 🎯\nLine 2","type":"text"}],"totals":[{"order_total_id":4010,"order_id":101,"extension":"opencart","code":"tax","title":"First tax","value":"0.2702","sort_order":30},{"order_total_id":4011,"order_id":101,"extension":"opencart","code":"tax","title":"Second tax","value":"0.1000","sort_order":30},{"order_total_id":4020,"order_id":101,"extension":"opencart","code":"shipping","title":"Shipping","value":"4.0000","sort_order":20},{"order_total_id":4030,"order_id":101,"extension":"opencart","code":"coupon","title":"Discount","value":"-1.1111","sort_order":40},{"order_total_id":4050,"order_id":101,"extension":"opencart","code":"sub_total","title":"Subtotal","value":"37.0370","sort_order":10},{"order_total_id":4090,"order_id":101,"extension":"opencart","code":"total","title":"Grand total","value":"40.2961","sort_order":100},{"order_total_id":7010,"order_id":303,"extension":"opencart","code":"sub_total","title":"Subtotal","value":"19.0000","sort_order":10},{"order_total_id":7020,"order_id":303,"extension":"opencart","code":"tax","title":"Tax","value":"3.6100","sort_order":20},{"order_total_id":7090,"order_id":303,"extension":"opencart","code":"total","title":"Grand total","value":"22.6100","sort_order":100}]},"amount_mode":"stored_decimal","policies":[{"order_id":101,"require_line_arithmetic":true,"subtotal_id":4050,"grand_total_id":4090,"component_ids":[4010,4011,4020,4030,4050]},{"order_id":303,"require_line_arithmetic":true,"subtotal_id":7010,"grand_total_id":7090,"component_ids":[7010,7020]}]},"outputSchema":{"type":"object","properties":{"operation":{"const":"order-export-reconciliation"},"result":{"type":"object","properties":{"review":{"type":"object","properties":{"artifact_id":{"type":"string","minLength":1,"maxLength":128},"sha256":{"type":"string","pattern":"^[a-f0-9]{64}$"},"bytes":{"type":"integer","minimum":1,"maximum":12582912},"media_type":{"const":"application/json"}},"required":["artifact_id","sha256","bytes","media_type"],"additionalProperties":false},"orders":{"type":"integer","minimum":0,"maximum":16},"export_matches":{"type":"boolean"},"arithmetic_expectations_met":{"type":"boolean"},"discrepancy_count":{"type":"integer","minimum":0,"maximum":32768},"arithmetic_violation_count":{"type":"integer","minimum":0,"maximum":256},"native_ledger_verified":{"const":true},"scope":{"const":"isolated_native_financial_order_export_reconciliation"},"warnings":{"type":"array","items":{"type":"string","minLength":1,"maxLength":1024},"minItems":1,"maxItems":16}},"required":["review","orders","export_matches","arithmetic_expectations_met","discrepancy_count","arithmetic_violation_count","native_ledger_verified","scope","warnings"],"additionalProperties":false},"upstream":{"type":"object","properties":{"project":{"const":"OpenCart"},"version":{"const":"5.0.0.0 Alpha"},"source_commit":{"const":"8cc9431ad4d7403bbd12171ea34b29ae99bc682a"},"runtime_bundle_sha256":{"type":"string","pattern":"^[a-f0-9]{64}$"},"schema_sha256":{"type":"string","pattern":"^[a-f0-9]{64}$"},"components":{"const":["Catalog\\Order::addOrder","Catalog\\Order::addProduct","Catalog\\Order::addOption","Catalog\\Order::addTotal","Catalog\\Order::editOrderStatusId","Catalog\\Order::editTransactionId","Catalog\\Order::getOrder","Catalog\\Order::getOptions","Cart\\Currency::format"]},"canonical_request_sha256":{"type":"string","pattern":"^[a-f0-9]{64}$"},"php_version":{"const":"8.4.25"},"pdo_driver":{"const":"mysql"},"database_version":{"type":"string","minLength":1,"maxLength":128}},"required":["project","version","source_commit","runtime_bundle_sha256","schema_sha256","components","canonical_request_sha256","php_version","pdo_driver","database_version"],"additionalProperties":false},"runtime_ms":{"type":"number","minimum":0,"maximum":120000}},"required":["operation","result","upstream","runtime_ms"],"additionalProperties":false}},{"method":"POST","path":"/v1/oss-openolat-grading-discrepancy-review","url":"https://agent.halowerk.com/v1/oss-openolat-grading-discrepancy-review","tool":"oss_openolat_grading_discrepancy_review","price_usdc":0.0045,"price_model":"per_call","summary":"Check recorded assessment results against the grading scale that was supposed to produce them, and get every mismatch named with the score, the band and both grades.","description":"Replays a grading scale through the native OpenOLAT implementation and compares, for each assessment, the grade that was recorded against the grade the scale actually yields. Every discrepancy comes back with the score, the band it falls into, the expected value and the recorded one, so a wrong entry can be corrected at the row instead of being argued about in the aggregate.","input_schema":{"type":"object","properties":{"scale_id":{"type":"string","pattern":"^[A-Za-z][A-Za-z0-9_-]{0,31}$"},"minimum_score":{"type":"string","pattern":"^-?(0|[1-9][0-9]{0,6})(\\.[0-9]{1,6})?$"},"maximum_score":{"type":"string","pattern":"^-?(0|[1-9][0-9]{0,6})(\\.[0-9]{1,6})?$"},"native_scale":{"oneOf":[{"type":"object","properties":{"type":{"const":"numeric"},"lowest_grade":{"type":"string","pattern":"^-?(0|[1-9][0-9]{0,6})(\\.[0-9]{1,6})?$"},"best_grade":{"type":"string","pattern":"^-?(0|[1-9][0-9]{0,6})(\\.[0-9]{1,6})?$"},"resolution":{"enum":["whole","half","quarter","tenth"]},"rounding":{"enum":["nearest","up","down"]},"cut_value":{"anyOf":[{"type":"string","pattern":"^-?(0|[1-9][0-9]{0,6})(\\.[0-9]{1,6})?$"},{"type":"null"}]},"breakpoints":{"type":"array","items":{"type":"object","properties":{"grade":{"type":"string","pattern":"^-?(0|[1-9][0-9]{0,6})(\\.[0-9]{1,6})?$"},"score":{"type":"string","pattern":"^-?(0|[1-9][0-9]{0,6})(\\.[0-9]{1,6})?$"}},"required":["grade","score"],"additionalProperties":false},"minItems":0,"maxItems":8}},"required":["type","lowest_grade","best_grade","resolution","rounding","cut_value","breakpoints"],"additionalProperties":false},{"type":"object","properties":{"type":{"const":"text"},"has_passed":{"type":"boolean"},"classes":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","pattern":"^[A-Za-z][A-Za-z0-9_-]{0,31}$"},"label":{"type":"string","minLength":1,"maxLength":128},"lower_score":{"type":"string","pattern":"^-?(0|[1-9][0-9]{0,6})(\\.[0-9]{1,6})?$"},"passed":{"type":"boolean"}},"required":["id","label","lower_score","passed"],"additionalProperties":false},"minItems":2,"maxItems":64}},"required":["type","has_passed","classes"],"additionalProperties":false}]},"rubric":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","pattern":"^[A-Za-z][A-Za-z0-9_-]{0,31}$"},"lower":{"type":"string","pattern":"^-?(0|[1-9][0-9]{0,6})(\\.[0-9]{1,6})?$"},"upper":{"type":"string","pattern":"^-?(0|[1-9][0-9]{0,6})(\\.[0-9]{1,6})?$"},"lower_inclusive":{"type":"boolean"},"upper_inclusive":{"type":"boolean"},"grade":{"type":"string","minLength":1,"maxLength":128},"passed":{"type":["boolean","null"]}},"required":["id","lower","upper","lower_inclusive","upper_inclusive","grade","passed"],"additionalProperties":false},"minItems":1,"maxItems":64},"assessments":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","pattern":"^[A-Za-z][A-Za-z0-9_-]{0,31}$"},"score":{"type":"string","pattern":"^-?(0|[1-9][0-9]{0,6})(\\.[0-9]{1,6})?$"},"recorded_grade":{"anyOf":[{"type":"string","minLength":1,"maxLength":128},{"type":"null"}]},"recorded_passed":{"type":["boolean","null"]}},"required":["id","score","recorded_grade","recorded_passed"],"additionalProperties":false},"minItems":1,"maxItems":1000}},"required":["scale_id","minimum_score","maximum_score","native_scale","rubric","assessments"],"additionalProperties":false},"needs_history":false,"payment_required":true,"serviceName":"oss_openolat_grading_discrepancy_review","tags":["oss","openolat","p046"],"example_request":{"scale_id":"six_point","minimum_score":"0","maximum_score":"100","native_scale":{"type":"numeric","lowest_grade":"1","best_grade":"6","resolution":"whole","rounding":"nearest","cut_value":"4","breakpoints":[]},"rubric":[{"id":"g1","lower":"0","upper":"10","lower_inclusive":true,"upper_inclusive":false,"grade":"1","passed":false},{"id":"g2","lower":"10","upper":"30","lower_inclusive":true,"upper_inclusive":false,"grade":"2","passed":false},{"id":"g3","lower":"30","upper":"50","lower_inclusive":true,"upper_inclusive":false,"grade":"3","passed":false},{"id":"g4","lower":"50","upper":"70","lower_inclusive":true,"upper_inclusive":false,"grade":"4","passed":true},{"id":"g5","lower":"70","upper":"90","lower_inclusive":true,"upper_inclusive":false,"grade":"5","passed":true},{"id":"g6","lower":"90","upper":"100","lower_inclusive":true,"upper_inclusive":true,"grade":"6","passed":true}],"assessments":[{"id":"boundary","score":"89.999999","recorded_grade":"5","recorded_passed":true},{"id":"ordinary","score":"55","recorded_grade":"4","recorded_passed":true}]},"requestExample":{"scale_id":"six_point","minimum_score":"0","maximum_score":"100","native_scale":{"type":"numeric","lowest_grade":"1","best_grade":"6","resolution":"whole","rounding":"nearest","cut_value":"4","breakpoints":[]},"rubric":[{"id":"g1","lower":"0","upper":"10","lower_inclusive":true,"upper_inclusive":false,"grade":"1","passed":false},{"id":"g2","lower":"10","upper":"30","lower_inclusive":true,"upper_inclusive":false,"grade":"2","passed":false},{"id":"g3","lower":"30","upper":"50","lower_inclusive":true,"upper_inclusive":false,"grade":"3","passed":false},{"id":"g4","lower":"50","upper":"70","lower_inclusive":true,"upper_inclusive":false,"grade":"4","passed":true},{"id":"g5","lower":"70","upper":"90","lower_inclusive":true,"upper_inclusive":false,"grade":"5","passed":true},{"id":"g6","lower":"90","upper":"100","lower_inclusive":true,"upper_inclusive":true,"grade":"6","passed":true}],"assessments":[{"id":"boundary","score":"89.999999","recorded_grade":"5","recorded_passed":true},{"id":"ordinary","score":"55","recorded_grade":"4","recorded_passed":true}]},"outputSchema":{"type":"object","properties":{"operation":{"const":"grading-discrepancy-review"},"result":{"type":"object","properties":{"ranges":{"type":"array","items":{"type":"object","properties":{"position":{"type":"integer","minimum":1,"maximum":64},"grade":{"type":"string","minLength":1,"maxLength":128},"class_id":{"anyOf":[{"type":"string","pattern":"^[A-Za-z][A-Za-z0-9_-]{0,31}$"},{"type":"null"}]},"lower":{"type":"string","pattern":"^-?[0-9]+(\\.[0-9]+)?$","maxLength":128},"upper":{"type":"string","pattern":"^-?[0-9]+(\\.[0-9]+)?$","maxLength":128},"lower_inclusive":{"type":"boolean"},"upper_inclusive":{"type":"boolean"},"representative_score":{"type":"string","pattern":"^-?[0-9]+(\\.[0-9]+)?$","maxLength":128},"passed":{"type":["boolean","null"]}},"required":["position","grade","class_id","lower","upper","lower_inclusive","upper_inclusive","representative_score","passed"],"additionalProperties":false},"minItems":2,"maxItems":64},"assessments":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","pattern":"^[A-Za-z][A-Za-z0-9_-]{0,31}$"},"supplied_score":{"type":"string","pattern":"^-?(0|[1-9][0-9]{0,6})(\\.[0-9]{1,6})?$"},"native_float32_exact":{"type":"string","pattern":"^-?[0-9]+(\\.[0-9]+)?$","maxLength":128},"float32_changed_score":{"type":"boolean"},"outside_scale":{"type":"boolean"},"native_position":{"type":"integer","minimum":1,"maximum":64},"native_grade":{"type":"string","minLength":1,"maxLength":128},"native_passed":{"type":["boolean","null"]},"rubric_band_id":{"anyOf":[{"type":"string","pattern":"^[A-Za-z][A-Za-z0-9_-]{0,31}$"},{"type":"null"}]},"rubric_grade":{"anyOf":[{"type":"string","minLength":1,"maxLength":128},{"type":"null"}]},"rubric_passed":{"type":["boolean","null"]},"recorded_grade":{"anyOf":[{"type":"string","minLength":1,"maxLength":128},{"type":"null"}]},"recorded_passed":{"type":["boolean","null"]},"findings":{"type":"array","items":{"enum":["outside_scale","float32_precision_change","rubric_unmatched","rubric_grade_mismatch","rubric_pass_mismatch","recorded_grade_mismatch","recorded_pass_mismatch"]},"minItems":0,"maxItems":7}},"required":["id","supplied_score","native_float32_exact","float32_changed_score","outside_scale","native_position","native_grade","native_passed","rubric_band_id","rubric_grade","rubric_passed","recorded_grade","recorded_passed","findings"],"additionalProperties":false},"minItems":1,"maxItems":1000},"mismatch_count":{"type":"integer","minimum":0,"maximum":1000},"all_rubric_and_recorded_values_match":{"type":"boolean"},"source_unchanged":{"const":true},"scope":{"const":"supplied_scores_and_rubric_not_exam_scoring_or_live_learner_verification"},"artifact":{"type":"object","properties":{"artifact_id":{"type":"string","minLength":1,"maxLength":128},"sha256":{"type":"string","pattern":"^[a-f0-9]{64}$"},"bytes":{"type":"integer","minimum":1,"maximum":4194304},"media_type":{"const":"application/json"}},"required":["artifact_id","sha256","bytes","media_type"],"additionalProperties":false}},"required":["ranges","assessments","mismatch_count","all_rubric_and_recorded_values_match","source_unchanged","scope","artifact"],"additionalProperties":false},"upstream":{"type":"object","properties":{"project":{"const":"OpenOlat"},"version":{"const":"21.1-SNAPSHOT"},"source_commit":{"const":"8842b7ce370737b5431c595f0be98322680c308b"},"runtime_bundle_sha256":{"type":"string","pattern":"^[a-f0-9]{64}$"},"canonical_request_sha256":{"type":"string","pattern":"^[a-f0-9]{64}$"},"locale":{"const":"en"},"timezone":{"const":"UTC"}},"required":["project","version","source_commit","runtime_bundle_sha256","canonical_request_sha256","locale","timezone"],"additionalProperties":false},"runtime_ms":{"type":"number","minimum":0,"maximum":90000}},"required":["operation","result","upstream","runtime_ms"],"additionalProperties":false}},{"method":"POST","path":"/v1/oss-openolat-question-bank-answer-fixture-review","url":"https://agent.halowerk.com/v1/oss-openolat-question-bank-answer-fixture-review","tool":"oss_openolat_question_bank_answer_fixture_review","price_usdc":0.005,"price_model":"per_call","summary":"Run a QTI question bank against known answer fixtures in the native OpenOLAT engine, and get every item whose actual score differs from what was expected.","description":"Executes a question-bank assessment against answer fixtures you supply — an answer plus the score it should produce — using the native OpenOLAT QTI engine rather than a reimplementation of the scoring rules. Each fixture comes back with expected and actual score, and the discrepancy count says at a glance whether the bank behaves as its author believed. This is the regression test for a question bank before it goes in front of learners, where a mis-scoring item is expensive and hard to undo.","input_schema":{"type":"object","properties":{"bank_id":{"type":"string","pattern":"^[A-Za-z_][A-Za-z0-9_.-]{0,63}$"},"maximum_score":{"type":"string","pattern":"^-?(0|[1-9][0-9]{0,6})(\\.[0-9]{1,9})?$"},"cut_value":{"anyOf":[{"type":"string","pattern":"^-?(0|[1-9][0-9]{0,6})(\\.[0-9]{1,9})?$"},{"type":"null"}]},"score_tolerance":{"type":"string","pattern":"^-?(0|[1-9][0-9]{0,6})(\\.[0-9]{1,9})?$"},"items":{"type":"array","items":{"type":"object","properties":{"item_id":{"type":"string","pattern":"^[A-Za-z_][A-Za-z0-9_.-]{0,63}$"},"xml":{"type":"string","minLength":1,"maxLength":131072}},"required":["item_id","xml"],"additionalProperties":false},"minItems":1,"maxItems":16},"assets":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","pattern":"^[A-Za-z0-9][A-Za-z0-9_./-]{0,127}$"},"media_type":{"enum":["image/png","image/jpeg","image/gif","image/webp"]},"content_base64":{"type":"string","minLength":4,"maxLength":174764}},"required":["name","media_type","content_base64"],"additionalProperties":false},"minItems":0,"maxItems":32},"fixtures":{"type":"array","items":{"type":"object","properties":{"fixture_id":{"type":"string","pattern":"^[A-Za-z_][A-Za-z0-9_.-]{0,63}$"},"events":{"type":"array","items":{"type":"object","properties":{"item_id":{"type":"string","pattern":"^[A-Za-z_][A-Za-z0-9_.-]{0,63}$"},"responses":{"type":"array","items":{"type":"object","properties":{"response_id":{"type":"string","pattern":"^[A-Za-z_][A-Za-z0-9_.-]{0,63}$"},"values":{"type":"array","items":{"type":"string","minLength":0,"maxLength":4096},"minItems":0,"maxItems":64}},"required":["response_id","values"],"additionalProperties":false},"minItems":0,"maxItems":32},"persist_and_reopen":{"type":"boolean"}},"required":["item_id","responses","persist_and_reopen"],"additionalProperties":false},"minItems":0,"maxItems":64},"expected":{"type":"object","properties":{"test_score":{"anyOf":[{"type":"string","pattern":"^-?(0|[1-9][0-9]{0,6})(\\.[0-9]{1,9})?$"},{"type":"null"}]},"passed":{"type":["boolean","null"]},"items":{"type":"array","items":{"type":"object","properties":{"item_id":{"type":"string","pattern":"^[A-Za-z_][A-Za-z0-9_.-]{0,63}$"},"score":{"anyOf":[{"type":"string","pattern":"^-?(0|[1-9][0-9]{0,6})(\\.[0-9]{1,9})?$"},{"type":"null"}]},"attempts":{"type":"integer","minimum":0,"maximum":64},"response_valid":{"type":"boolean"},"unbound_response_ids":{"type":"array","items":{"type":"string","pattern":"^[A-Za-z_][A-Za-z0-9_.-]{0,63}$"},"minItems":0,"maxItems":32,"uniqueItems":true},"invalid_response_ids":{"type":"array","items":{"type":"string","pattern":"^[A-Za-z_][A-Za-z0-9_.-]{0,63}$"},"minItems":0,"maxItems":32,"uniqueItems":true}},"required":["item_id","score","attempts","response_valid","unbound_response_ids","invalid_response_ids"],"additionalProperties":false},"minItems":1,"maxItems":16}},"required":["test_score","passed","items"],"additionalProperties":false}},"required":["fixture_id","events","expected"],"additionalProperties":false},"minItems":1,"maxItems":16}},"required":["bank_id","maximum_score","cut_value","score_tolerance","items","assets","fixtures"],"additionalProperties":false},"needs_history":false,"payment_required":true,"serviceName":"oss_openolat_question_bank_answer_fixture_review","tags":["oss","openolat","p046"],"example_request":{"bank_id":"supplied_bank","maximum_score":"8","cut_value":"6","score_tolerance":"0","items":[{"item_id":"single","xml":"<?xml version=\"1.0\" encoding=\"UTF-8\"?><assessmentItem xmlns=\"http://www.imsglobal.org/xsd/imsqti_v2p1\" identifier=\"single\" title=\"single\" adaptive=\"false\" timeDependent=\"false\"><responseDeclaration identifier=\"RESPONSE\" cardinality=\"single\" baseType=\"identifier\"><correctResponse><value>A</value></correctResponse></responseDeclaration><outcomeDeclaration identifier=\"SCORE\" cardinality=\"single\" baseType=\"float\"><defaultValue><value>0</value></defaultValue></outcomeDeclaration><itemBody><p><img src=\"media/diagram.png\" alt=\"Synthetic one-pixel fixture\"/></p><choiceInteraction responseIdentifier=\"RESPONSE\" shuffle=\"false\" maxChoices=\"1\"><simpleChoice identifier=\"A\">Alpha</simpleChoice><simpleChoice identifier=\"B\">Beta</simpleChoice><simpleChoice identifier=\"C\">Gamma</simpleChoice></choiceInteraction></itemBody><responseProcessing template=\"http://www.imsglobal.org/question/qti_v2p1/rptemplates/match_correct\"/></assessmentItem>"},{"item_id":"multiple","xml":"<?xml version=\"1.0\" encoding=\"UTF-8\"?><assessmentItem xmlns=\"http://www.imsglobal.org/xsd/imsqti_v2p1\" identifier=\"multiple\" title=\"multiple\" adaptive=\"false\" timeDependent=\"false\"><responseDeclaration identifier=\"RESPONSE\" cardinality=\"multiple\" baseType=\"identifier\"><correctResponse><value>A</value><value>B</value></correctResponse><mapping defaultValue=\"-2\" lowerBound=\"0\" upperBound=\"3\"><mapEntry mapKey=\"A\" mappedValue=\"2\"/><mapEntry mapKey=\"B\" mappedValue=\"1\"/><mapEntry mapKey=\"C\" mappedValue=\"-1\"/></mapping></responseDeclaration><outcomeDeclaration identifier=\"SCORE\" cardinality=\"single\" baseType=\"float\"><defaultValue><value>0</value></defaultValue></outcomeDeclaration><itemBody><choiceInteraction responseIdentifier=\"RESPONSE\" shuffle=\"false\" maxChoices=\"3\"><simpleChoice identifier=\"A\">Alpha</simpleChoice><simpleChoice identifier=\"B\">Beta</simpleChoice><simpleChoice identifier=\"C\">Gamma</simpleChoice></choiceInteraction></itemBody><responseProcessing template=\"http://www.imsglobal.org/question/qti_v2p1/rptemplates/map_response\"/></assessmentItem>"},{"item_id":"numeric","xml":"<?xml version=\"1.0\" encoding=\"UTF-8\"?><assessmentItem xmlns=\"http://www.imsglobal.org/xsd/imsqti_v2p1\" identifier=\"numeric\" title=\"numeric\" adaptive=\"false\" timeDependent=\"false\"><responseDeclaration identifier=\"RESPONSE\" cardinality=\"single\" baseType=\"float\"><correctResponse><value>42</value></correctResponse></responseDeclaration><outcomeDeclaration identifier=\"SCORE\" cardinality=\"single\" baseType=\"float\"><defaultValue><value>0</value></defaultValue></outcomeDeclaration><itemBody><p>Answer: <textEntryInteraction responseIdentifier=\"RESPONSE\"/></p></itemBody><responseProcessing template=\"http://www.imsglobal.org/question/qti_v2p1/rptemplates/match_correct\"/></assessmentItem>"},{"item_id":"text","xml":"<?xml version=\"1.0\" encoding=\"UTF-8\"?><assessmentItem xmlns=\"http://www.imsglobal.org/xsd/imsqti_v2p1\" identifier=\"text\" title=\"text\" adaptive=\"false\" timeDependent=\"false\"><responseDeclaration identifier=\"RESPONSE\" cardinality=\"single\" baseType=\"string\"><correctResponse><value>Grüße</value></correctResponse></responseDeclaration><outcomeDeclaration identifier=\"SCORE\" cardinality=\"single\" baseType=\"float\"><defaultValue><value>0</value></defaultValue></outcomeDeclaration><itemBody><p>Answer: <textEntryInteraction responseIdentifier=\"RESPONSE\"/></p></itemBody><responseProcessing><responseCondition><responseIf><stringMatch caseSensitive=\"false\" substring=\"false\"><variable identifier=\"RESPONSE\"/><baseValue baseType=\"string\">Grüße</baseValue></stringMatch><setOutcomeValue identifier=\"SCORE\"><baseValue baseType=\"float\">2</baseValue></setOutcomeValue></responseIf><responseElse><setOutcomeValue identifier=\"SCORE\"><baseValue baseType=\"float\">0</baseValue></setOutcomeValue></responseElse></responseCondition></responseProcessing></assessmentItem>"},{"item_id":"ordered","xml":"<?xml version=\"1.0\" encoding=\"UTF-8\"?><assessmentItem xmlns=\"http://www.imsglobal.org/xsd/imsqti_v2p1\" identifier=\"ordered\" title=\"ordered\" adaptive=\"false\" timeDependent=\"false\"><responseDeclaration identifier=\"RESPONSE\" cardinality=\"ordered\" baseType=\"identifier\"><correctResponse><value>A</value><value>B</value><value>C</value></correctResponse></responseDeclaration><outcomeDeclaration identifier=\"SCORE\" cardinality=\"single\" baseType=\"float\"><defaultValue><value>0</value></defaultValue></outcomeDeclaration><itemBody><orderInteraction responseIdentifier=\"RESPONSE\" shuffle=\"false\"><simpleChoice identifier=\"A\">Alpha</simpleChoice><simpleChoice identifier=\"B\">Beta</simpleChoice><simpleChoice identifier=\"C\">Gamma</simpleChoice></orderInteraction></itemBody><responseProcessing template=\"http://www.imsglobal.org/question/qti_v2p1/rptemplates/match_correct\"/></assessmentItem>"}],"assets":[{"name":"media/diagram.png","media_type":"image/png","content_base64":"iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAIAAACQd1PeAAAADElEQVR4nGP4//8/AAX+Av4N70a4AAAAAElFTkSuQmCC"}],"fixtures":[{"fixture_id":"correct","events":[{"item_id":"single","responses":[{"response_id":"RESPONSE","values":["A"]}],"persist_and_reopen":false},{"item_id":"multiple","responses":[{"response_id":"RESPONSE","values":["A","B"]}],"persist_and_reopen":true},{"item_id":"numeric","responses":[{"response_id":"RESPONSE","values":["42.0"]}],"persist_and_reopen":false},{"item_id":"text","responses":[{"response_id":"RESPONSE","values":["GRÜßE"]}],"persist_and_reopen":false},{"item_id":"ordered","responses":[{"response_id":"RESPONSE","values":["A","B","C"]}],"persist_and_reopen":false}],"expected":{"test_score":"8","passed":true,"items":[{"item_id":"single","score":"1","attempts":1,"response_valid":true,"unbound_response_ids":[],"invalid_response_ids":[]},{"item_id":"multiple","score":"3","attempts":1,"response_valid":true,"unbound_response_ids":[],"invalid_response_ids":[]},{"item_id":"numeric","score":"1","attempts":1,"response_valid":true,"unbound_response_ids":[],"invalid_response_ids":[]},{"item_id":"text","score":"2","attempts":1,"response_valid":true,"unbound_response_ids":[],"invalid_response_ids":[]},{"item_id":"ordered","score":"1","attempts":1,"response_valid":true,"unbound_response_ids":[],"invalid_response_ids":[]}]}},{"fixture_id":"expected_discrepancies","events":[{"item_id":"single","responses":[{"response_id":"RESPONSE","values":["A"]}],"persist_and_reopen":false},{"item_id":"multiple","responses":[{"response_id":"RESPONSE","values":["A","C"]}],"persist_and_reopen":true},{"item_id":"numeric","responses":[{"response_id":"RESPONSE","values":["41"]}],"persist_and_reopen":false},{"item_id":"text","responses":[{"response_id":"RESPONSE","values":["grüße"]}],"persist_and_reopen":false},{"item_id":"ordered","responses":[{"response_id":"RESPONSE","values":["C","B","A"]}],"persist_and_reopen":false}],"expected":{"test_score":"5","passed":true,"items":[{"item_id":"single","score":"1","attempts":1,"response_valid":true,"unbound_response_ids":[],"invalid_response_ids":[]},{"item_id":"multiple","score":"1","attempts":1,"response_valid":true,"unbound_response_ids":[],"invalid_response_ids":[]},{"item_id":"numeric","score":"1","attempts":1,"response_valid":true,"unbound_response_ids":[],"invalid_response_ids":[]},{"item_id":"text","score":"2","attempts":1,"response_valid":true,"unbound_response_ids":[],"invalid_response_ids":[]},{"item_id":"ordered","score":"0","attempts":1,"response_valid":true,"unbound_response_ids":[],"invalid_response_ids":[]}]}}]},"requestExample":{"bank_id":"supplied_bank","maximum_score":"8","cut_value":"6","score_tolerance":"0","items":[{"item_id":"single","xml":"<?xml version=\"1.0\" encoding=\"UTF-8\"?><assessmentItem xmlns=\"http://www.imsglobal.org/xsd/imsqti_v2p1\" identifier=\"single\" title=\"single\" adaptive=\"false\" timeDependent=\"false\"><responseDeclaration identifier=\"RESPONSE\" cardinality=\"single\" baseType=\"identifier\"><correctResponse><value>A</value></correctResponse></responseDeclaration><outcomeDeclaration identifier=\"SCORE\" cardinality=\"single\" baseType=\"float\"><defaultValue><value>0</value></defaultValue></outcomeDeclaration><itemBody><p><img src=\"media/diagram.png\" alt=\"Synthetic one-pixel fixture\"/></p><choiceInteraction responseIdentifier=\"RESPONSE\" shuffle=\"false\" maxChoices=\"1\"><simpleChoice identifier=\"A\">Alpha</simpleChoice><simpleChoice identifier=\"B\">Beta</simpleChoice><simpleChoice identifier=\"C\">Gamma</simpleChoice></choiceInteraction></itemBody><responseProcessing template=\"http://www.imsglobal.org/question/qti_v2p1/rptemplates/match_correct\"/></assessmentItem>"},{"item_id":"multiple","xml":"<?xml version=\"1.0\" encoding=\"UTF-8\"?><assessmentItem xmlns=\"http://www.imsglobal.org/xsd/imsqti_v2p1\" identifier=\"multiple\" title=\"multiple\" adaptive=\"false\" timeDependent=\"false\"><responseDeclaration identifier=\"RESPONSE\" cardinality=\"multiple\" baseType=\"identifier\"><correctResponse><value>A</value><value>B</value></correctResponse><mapping defaultValue=\"-2\" lowerBound=\"0\" upperBound=\"3\"><mapEntry mapKey=\"A\" mappedValue=\"2\"/><mapEntry mapKey=\"B\" mappedValue=\"1\"/><mapEntry mapKey=\"C\" mappedValue=\"-1\"/></mapping></responseDeclaration><outcomeDeclaration identifier=\"SCORE\" cardinality=\"single\" baseType=\"float\"><defaultValue><value>0</value></defaultValue></outcomeDeclaration><itemBody><choiceInteraction responseIdentifier=\"RESPONSE\" shuffle=\"false\" maxChoices=\"3\"><simpleChoice identifier=\"A\">Alpha</simpleChoice><simpleChoice identifier=\"B\">Beta</simpleChoice><simpleChoice identifier=\"C\">Gamma</simpleChoice></choiceInteraction></itemBody><responseProcessing template=\"http://www.imsglobal.org/question/qti_v2p1/rptemplates/map_response\"/></assessmentItem>"},{"item_id":"numeric","xml":"<?xml version=\"1.0\" encoding=\"UTF-8\"?><assessmentItem xmlns=\"http://www.imsglobal.org/xsd/imsqti_v2p1\" identifier=\"numeric\" title=\"numeric\" adaptive=\"false\" timeDependent=\"false\"><responseDeclaration identifier=\"RESPONSE\" cardinality=\"single\" baseType=\"float\"><correctResponse><value>42</value></correctResponse></responseDeclaration><outcomeDeclaration identifier=\"SCORE\" cardinality=\"single\" baseType=\"float\"><defaultValue><value>0</value></defaultValue></outcomeDeclaration><itemBody><p>Answer: <textEntryInteraction responseIdentifier=\"RESPONSE\"/></p></itemBody><responseProcessing template=\"http://www.imsglobal.org/question/qti_v2p1/rptemplates/match_correct\"/></assessmentItem>"},{"item_id":"text","xml":"<?xml version=\"1.0\" encoding=\"UTF-8\"?><assessmentItem xmlns=\"http://www.imsglobal.org/xsd/imsqti_v2p1\" identifier=\"text\" title=\"text\" adaptive=\"false\" timeDependent=\"false\"><responseDeclaration identifier=\"RESPONSE\" cardinality=\"single\" baseType=\"string\"><correctResponse><value>Grüße</value></correctResponse></responseDeclaration><outcomeDeclaration identifier=\"SCORE\" cardinality=\"single\" baseType=\"float\"><defaultValue><value>0</value></defaultValue></outcomeDeclaration><itemBody><p>Answer: <textEntryInteraction responseIdentifier=\"RESPONSE\"/></p></itemBody><responseProcessing><responseCondition><responseIf><stringMatch caseSensitive=\"false\" substring=\"false\"><variable identifier=\"RESPONSE\"/><baseValue baseType=\"string\">Grüße</baseValue></stringMatch><setOutcomeValue identifier=\"SCORE\"><baseValue baseType=\"float\">2</baseValue></setOutcomeValue></responseIf><responseElse><setOutcomeValue identifier=\"SCORE\"><baseValue baseType=\"float\">0</baseValue></setOutcomeValue></responseElse></responseCondition></responseProcessing></assessmentItem>"},{"item_id":"ordered","xml":"<?xml version=\"1.0\" encoding=\"UTF-8\"?><assessmentItem xmlns=\"http://www.imsglobal.org/xsd/imsqti_v2p1\" identifier=\"ordered\" title=\"ordered\" adaptive=\"false\" timeDependent=\"false\"><responseDeclaration identifier=\"RESPONSE\" cardinality=\"ordered\" baseType=\"identifier\"><correctResponse><value>A</value><value>B</value><value>C</value></correctResponse></responseDeclaration><outcomeDeclaration identifier=\"SCORE\" cardinality=\"single\" baseType=\"float\"><defaultValue><value>0</value></defaultValue></outcomeDeclaration><itemBody><orderInteraction responseIdentifier=\"RESPONSE\" shuffle=\"false\"><simpleChoice identifier=\"A\">Alpha</simpleChoice><simpleChoice identifier=\"B\">Beta</simpleChoice><simpleChoice identifier=\"C\">Gamma</simpleChoice></orderInteraction></itemBody><responseProcessing template=\"http://www.imsglobal.org/question/qti_v2p1/rptemplates/match_correct\"/></assessmentItem>"}],"assets":[{"name":"media/diagram.png","media_type":"image/png","content_base64":"iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAIAAACQd1PeAAAADElEQVR4nGP4//8/AAX+Av4N70a4AAAAAElFTkSuQmCC"}],"fixtures":[{"fixture_id":"correct","events":[{"item_id":"single","responses":[{"response_id":"RESPONSE","values":["A"]}],"persist_and_reopen":false},{"item_id":"multiple","responses":[{"response_id":"RESPONSE","values":["A","B"]}],"persist_and_reopen":true},{"item_id":"numeric","responses":[{"response_id":"RESPONSE","values":["42.0"]}],"persist_and_reopen":false},{"item_id":"text","responses":[{"response_id":"RESPONSE","values":["GRÜßE"]}],"persist_and_reopen":false},{"item_id":"ordered","responses":[{"response_id":"RESPONSE","values":["A","B","C"]}],"persist_and_reopen":false}],"expected":{"test_score":"8","passed":true,"items":[{"item_id":"single","score":"1","attempts":1,"response_valid":true,"unbound_response_ids":[],"invalid_response_ids":[]},{"item_id":"multiple","score":"3","attempts":1,"response_valid":true,"unbound_response_ids":[],"invalid_response_ids":[]},{"item_id":"numeric","score":"1","attempts":1,"response_valid":true,"unbound_response_ids":[],"invalid_response_ids":[]},{"item_id":"text","score":"2","attempts":1,"response_valid":true,"unbound_response_ids":[],"invalid_response_ids":[]},{"item_id":"ordered","score":"1","attempts":1,"response_valid":true,"unbound_response_ids":[],"invalid_response_ids":[]}]}},{"fixture_id":"expected_discrepancies","events":[{"item_id":"single","responses":[{"response_id":"RESPONSE","values":["A"]}],"persist_and_reopen":false},{"item_id":"multiple","responses":[{"response_id":"RESPONSE","values":["A","C"]}],"persist_and_reopen":true},{"item_id":"numeric","responses":[{"response_id":"RESPONSE","values":["41"]}],"persist_and_reopen":false},{"item_id":"text","responses":[{"response_id":"RESPONSE","values":["grüße"]}],"persist_and_reopen":false},{"item_id":"ordered","responses":[{"response_id":"RESPONSE","values":["C","B","A"]}],"persist_and_reopen":false}],"expected":{"test_score":"5","passed":true,"items":[{"item_id":"single","score":"1","attempts":1,"response_valid":true,"unbound_response_ids":[],"invalid_response_ids":[]},{"item_id":"multiple","score":"1","attempts":1,"response_valid":true,"unbound_response_ids":[],"invalid_response_ids":[]},{"item_id":"numeric","score":"1","attempts":1,"response_valid":true,"unbound_response_ids":[],"invalid_response_ids":[]},{"item_id":"text","score":"2","attempts":1,"response_valid":true,"unbound_response_ids":[],"invalid_response_ids":[]},{"item_id":"ordered","score":"0","attempts":1,"response_valid":true,"unbound_response_ids":[],"invalid_response_ids":[]}]}}]},"outputSchema":{"type":"object","properties":{"operation":{"const":"question-bank-answer-fixture-review"},"result":{"type":"object","properties":{"review":{"type":"object","properties":{"artifact_id":{"type":"string","minLength":1,"maxLength":128},"sha256":{"type":"string","pattern":"^[a-f0-9]{64}$"},"bytes":{"type":"integer","minimum":1,"maximum":33554432},"media_type":{"const":"application/json"}},"required":["artifact_id","sha256","bytes","media_type"],"additionalProperties":false},"fixtures":{"type":"array","items":{"type":"object","properties":{"fixture_id":{"type":"string","pattern":"^[A-Za-z_][A-Za-z0-9_.-]{0,63}$"},"all_expectations_match":{"type":"boolean"},"discrepancy_count":{"type":"integer","minimum":0,"maximum":82},"item_count":{"type":"integer","minimum":1,"maximum":16},"response_events":{"type":"integer","minimum":0,"maximum":64},"persisted_reopenings":{"type":"integer","minimum":0,"maximum":64}},"required":["fixture_id","all_expectations_match","discrepancy_count","item_count","response_events","persisted_reopenings"],"additionalProperties":false},"minItems":1,"maxItems":16},"all_expectations_match":{"type":"boolean"},"discrepancy_count":{"type":"integer","minimum":0,"maximum":1312},"native_execution_verified":{"const":true},"source_unchanged":{"const":true},"scope":{"const":"supplied_qti_bank_and_answer_fixtures_not_live_learner_or_question_bank_administration"}},"required":["review","fixtures","all_expectations_match","discrepancy_count","native_execution_verified","source_unchanged","scope"],"additionalProperties":false},"upstream":{"type":"object","properties":{"project":{"const":"OpenOlat"},"version":{"const":"21.1-SNAPSHOT"},"source_commit":{"const":"8842b7ce370737b5431c595f0be98322680c308b"},"qtiworks_version":{"const":"1.0.37"},"runtime_bundle_sha256":{"type":"string","pattern":"^[a-f0-9]{64}$"},"canonical_request_sha256":{"type":"string","pattern":"^[a-f0-9]{64}$"},"locale":{"const":"en"},"timezone":{"const":"UTC"}},"required":["project","version","source_commit","qtiworks_version","runtime_bundle_sha256","canonical_request_sha256","locale","timezone"],"additionalProperties":false},"runtime_ms":{"type":"number","minimum":0,"maximum":180000}},"required":["operation","result","upstream","runtime_ms"],"additionalProperties":false}},{"method":"POST","path":"/v1/oss-openolat-learning-path-prerequisite-rehearsal","url":"https://agent.halowerk.com/v1/oss-openolat-learning-path-prerequisite-rehearsal","tool":"oss_openolat_learning_path_prerequisite_rehearsal","price_usdc":0.005,"price_model":"per_call","summary":"Rehearse a learning-path prerequisite policy against the pinned OpenOlat code and get each learner's real sequence decisions against your expectations.","description":"The paid HTTP request is accepted asynchronously with HTTP 202 and an unguessable result URL; poll that URL about every 20 seconds for the result, normally available after about 130 seconds. Settlement happens only after a successful native run while the authorization is still valid. The run passes a course structure and a set of learners through the pinned OpenOlat learning-path implementation and reports, per learner, which nodes the original code actually unlocks and in what order.","input_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","$defs":{"page":{"type":"object","properties":{"key":{"type":"string","pattern":"^[a-z][a-z0-9_]{0,31}$"},"kind":{"const":"page"},"title":{"type":"string","minLength":1,"maxLength":120},"obligation":{"enum":["mandatory","optional","excluded"]},"trigger":{"enum":["visit","confirm"]},"start_offset_minutes":{"type":"integer","minimum":-525600,"maximum":525600,"not":{"minimum":-59,"maximum":59}},"end_offset_minutes":{"type":"integer","minimum":-525600,"maximum":525600,"not":{"minimum":-59,"maximum":59}}},"required":["key","kind","title"],"additionalProperties":false},"section":{"type":"object","properties":{"key":{"type":"string","pattern":"^[a-z][a-z0-9_]{0,31}$"},"kind":{"const":"section"},"title":{"type":"string","minLength":1,"maxLength":120},"sequence":{"enum":["sequential","free"]},"children":{"type":"array","minItems":1,"maxItems":32,"items":{"$ref":"#/$defs/node"}}},"required":["key","kind","title","sequence","children"],"additionalProperties":false},"node":{"oneOf":[{"$ref":"#/$defs/page"},{"$ref":"#/$defs/section"}]}},"type":"object","properties":{"course":{"type":"object","properties":{"title":{"type":"string","minLength":1,"maxLength":120},"sequence":{"enum":["sequential","free"]},"children":{"type":"array","minItems":1,"maxItems":32,"items":{"$ref":"#/$defs/node"}}},"required":["title","sequence","children"],"additionalProperties":false},"learners":{"type":"array","minItems":1,"maxItems":8,"items":{"type":"object","properties":{"key":{"type":"string","pattern":"^[a-z][a-z0-9_]{0,31}$"},"membership":{"enum":["participant","coach","owner","none"]},"actions":{"type":"array","maxItems":64,"items":{"type":"object","properties":{"node":{"type":"string","pattern":"^[a-z][a-z0-9_]{0,31}$"},"action":{"enum":["visit","confirm"]}},"required":["node","action"],"additionalProperties":false}}},"required":["key","membership","actions"],"additionalProperties":false}},"expectations":{"type":"object","properties":{"learners":{"type":"object","minProperties":1,"maxProperties":8,"propertyNames":{"type":"string","pattern":"^[a-z][a-z0-9_]{0,31}$"},"additionalProperties":{"type":"object","properties":{"course_access":{"enum":["granted","denied"]},"security":{"type":"object","properties":{"can_launch":{"type":"boolean"},"participant":{"type":"boolean"},"coach":{"type":"boolean"},"owner":{"type":"boolean"},"entry_admin":{"type":"boolean"},"read_only":{"type":"boolean"}},"required":[],"additionalProperties":false,"minProperties":1},"initial":{"type":"object","minProperties":1,"maxProperties":65,"propertyNames":{"type":"string","pattern":"^[a-z][a-z0-9_]{0,31}$"},"additionalProperties":{"type":"object","properties":{"status":{"anyOf":[{"enum":["notReady","notStarted","inProgress","inReview","done"]},{"type":"null"}]},"fully_assessed":{"anyOf":[{"enum":["true","false"]},{"type":"null"}]},"obligation":{"anyOf":[{"enum":["mandatory","optional","excluded"]},{"type":"null"}]},"visible":{"type":"boolean"},"accessible":{"type":"boolean"}},"required":[],"additionalProperties":false,"minProperties":1}},"steps":{"type":"array","maxItems":64,"items":{"type":"object","properties":{"applied":{"type":"boolean"},"reason":{"type":"string","maxLength":64},"visible_before":{"type":"boolean"},"accessible_before":{"type":"boolean"},"after":{"type":"object","minProperties":1,"maxProperties":65,"propertyNames":{"type":"string","pattern":"^[a-z][a-z0-9_]{0,31}$"},"additionalProperties":{"type":"object","properties":{"status":{"anyOf":[{"enum":["notReady","notStarted","inProgress","inReview","done"]},{"type":"null"}]},"fully_assessed":{"anyOf":[{"enum":["true","false"]},{"type":"null"}]},"obligation":{"anyOf":[{"enum":["mandatory","optional","excluded"]},{"type":"null"}]},"visible":{"type":"boolean"},"accessible":{"type":"boolean"}},"required":[],"additionalProperties":false,"minProperties":1}}},"required":[],"additionalProperties":false}}},"required":[],"additionalProperties":false}}},"required":["learners"],"additionalProperties":false}},"required":["course","learners"],"additionalProperties":false},"needs_history":false,"payment_required":true,"serviceName":"oss_openolat_learning_path_prerequisite_rehearsal","tags":["oss","openolat","p046"],"example_request":{"course":{"children":[{"key":"intro","kind":"page","obligation":"mandatory","title":"intro","trigger":"visit"},{"key":"reading","kind":"page","obligation":"mandatory","title":"reading","trigger":"confirm"},{"key":"bonus","kind":"page","obligation":"optional","title":"bonus","trigger":"visit"},{"key":"final","kind":"page","obligation":"mandatory","title":"final","trigger":"visit"}],"sequence":"sequential","title":"Roles and triggers"},"expectations":{"learners":{"coach":{"course_access":"granted","security":{"can_launch":true,"coach":true,"participant":false},"steps":[{"applied":false}]},"outsider":{"course_access":"denied","security":{"can_launch":false},"steps":[{"applied":false,"reason":"course_access_denied"}]},"owner":{"course_access":"granted","security":{"can_launch":true,"owner":true,"participant":false},"steps":[{"applied":false}]},"participant":{"course_access":"granted","initial":{"final":{"accessible":false},"intro":{"accessible":true},"reading":{"accessible":false}},"security":{"can_launch":true,"coach":false,"owner":false,"participant":true},"steps":[{"applied":false,"reason":"node_not_accessible"},{"applied":false,"reason":"confirmation_not_enabled"},{"after":{"intro":{"fully_assessed":"true","status":"done"},"reading":{"accessible":true}},"applied":true},{"applied":false},{"after":{"bonus":{"accessible":true},"final":{"accessible":true},"reading":{"fully_assessed":"true","status":"done"}},"applied":true},{"after":{"course":{"status":"done"},"final":{"fully_assessed":"true","status":"done"}},"applied":true}]}}},"learners":[{"actions":[{"action":"confirm","node":"reading"},{"action":"confirm","node":"intro"},{"action":"visit","node":"intro"},{"action":"visit","node":"reading"},{"action":"confirm","node":"reading"},{"action":"visit","node":"final"}],"key":"participant","membership":"participant"},{"actions":[{"action":"visit","node":"intro"}],"key":"coach","membership":"coach"},{"actions":[{"action":"visit","node":"intro"}],"key":"owner","membership":"owner"},{"actions":[{"action":"visit","node":"intro"}],"key":"outsider","membership":"none"}]},"requestExample":{"course":{"children":[{"key":"intro","kind":"page","obligation":"mandatory","title":"intro","trigger":"visit"},{"key":"reading","kind":"page","obligation":"mandatory","title":"reading","trigger":"confirm"},{"key":"bonus","kind":"page","obligation":"optional","title":"bonus","trigger":"visit"},{"key":"final","kind":"page","obligation":"mandatory","title":"final","trigger":"visit"}],"sequence":"sequential","title":"Roles and triggers"},"expectations":{"learners":{"coach":{"course_access":"granted","security":{"can_launch":true,"coach":true,"participant":false},"steps":[{"applied":false}]},"outsider":{"course_access":"denied","security":{"can_launch":false},"steps":[{"applied":false,"reason":"course_access_denied"}]},"owner":{"course_access":"granted","security":{"can_launch":true,"owner":true,"participant":false},"steps":[{"applied":false}]},"participant":{"course_access":"granted","initial":{"final":{"accessible":false},"intro":{"accessible":true},"reading":{"accessible":false}},"security":{"can_launch":true,"coach":false,"owner":false,"participant":true},"steps":[{"applied":false,"reason":"node_not_accessible"},{"applied":false,"reason":"confirmation_not_enabled"},{"after":{"intro":{"fully_assessed":"true","status":"done"},"reading":{"accessible":true}},"applied":true},{"applied":false},{"after":{"bonus":{"accessible":true},"final":{"accessible":true},"reading":{"fully_assessed":"true","status":"done"}},"applied":true},{"after":{"course":{"status":"done"},"final":{"fully_assessed":"true","status":"done"}},"applied":true}]}}},"learners":[{"actions":[{"action":"confirm","node":"reading"},{"action":"confirm","node":"intro"},{"action":"visit","node":"intro"},{"action":"visit","node":"reading"},{"action":"confirm","node":"reading"},{"action":"visit","node":"final"}],"key":"participant","membership":"participant"},{"actions":[{"action":"visit","node":"intro"}],"key":"coach","membership":"coach"},{"actions":[{"action":"visit","node":"intro"}],"key":"owner","membership":"owner"},{"actions":[{"action":"visit","node":"intro"}],"key":"outsider","membership":"none"}]},"outputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","oneOf":[{"type":"object","properties":{"job_id":{"type":"string","pattern":"^[0-9a-f]{32,}$"},"result_url":{"type":"string","format":"uri"},"status":{"const":"accepted"},"retry_after_seconds":{"type":"integer","minimum":1},"expected_seconds":{"type":"integer","minimum":1},"charged":{"const":false},"settlement":{"const":"after_success"},"duplicate":{"type":"boolean"}},"required":["job_id","result_url","status","retry_after_seconds","expected_seconds","charged","settlement"],"additionalProperties":false},{"type":"object","properties":{"job_id":{"type":"string","pattern":"^[0-9a-f]{32,}$"},"status":{"enum":["queued","running"]},"retry_after_seconds":{"type":"integer","minimum":1},"expected_seconds":{"type":"integer","minimum":1},"charged":{"const":false},"settlement":{"const":"after_success"}},"required":["job_id","status","retry_after_seconds","expected_seconds","charged","settlement"],"additionalProperties":false},{"type":"object","properties":{"job_id":{"type":"string","pattern":"^[0-9a-f]{32,}$"},"status":{"const":"completed"},"charged":{"const":true},"result":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"operation":{"const":"learning-path-prerequisite-rehearsal"},"result":{"type":"object","properties":{"rehearsal":{"type":"object","properties":{"artifact_id":{"type":"string","pattern":"^olat-lp-[0-9a-f]{64}\\.json$"},"sha256":{"type":"string","pattern":"^[0-9a-f]{64}$"},"bytes":{"type":"integer","minimum":1},"media_type":{"const":"application/json"}},"required":["artifact_id","sha256","bytes","media_type"],"additionalProperties":false},"learners":{"type":"array","minItems":1,"maxItems":8,"items":{"type":"object","properties":{"key":{"type":"string","pattern":"^[a-z][a-z0-9_]{0,31}$"},"course_access":{"enum":["granted","denied"]},"actions":{"type":"integer","minimum":0},"applied_actions":{"type":"integer","minimum":0},"final":{"type":"object","propertyNames":{"type":"string","pattern":"^[a-z][a-z0-9_]{0,31}$"},"additionalProperties":{"type":"object","properties":{"status":{"anyOf":[{"enum":["notReady","notStarted","inProgress","inReview","done"]},{"type":"null"}]},"accessible":{"type":"boolean"}},"required":["status","accessible"],"additionalProperties":false}}},"required":["key","course_access","actions","applied_actions"],"additionalProperties":false}},"expectation_checks":{"type":"integer","minimum":0},"discrepancy_count":{"type":"integer","minimum":0},"all_expectations_match":{"type":"boolean"},"native_execution_verified":{"const":true},"source_unchanged":{"const":true},"reference_time":{"type":"string","format":"date-time"},"scope":{"const":"Caller course policy saved and published through the original OpenOlat course editor, real repository memberships, native node visits/confirmations and AssessmentAccounting.evaluateAll(true) in a disposable private MariaDB; wall-clock dates are relative to the evaluation reference time."}},"required":["rehearsal","learners","expectation_checks","discrepancy_count","all_expectations_match","native_execution_verified","source_unchanged","reference_time","scope"],"additionalProperties":false},"upstream":{"type":"object","properties":{"project":{"const":"OpenOlat"},"version":{"const":"21.1-SNAPSHOT"},"source_commit":{"const":"8842b7ce370737b5431c595f0be98322680c308b"},"database":{"type":"string"},"runtime_bundle_sha256":{"type":"string","pattern":"^[0-9a-f]{64}$"},"canonical_request_sha256":{"type":"string","pattern":"^[0-9a-f]{64}$"},"locale":{"const":"en"},"timezone":{"const":"UTC"}},"required":["project","version","source_commit","database","runtime_bundle_sha256","canonical_request_sha256","locale","timezone"],"additionalProperties":false},"runtime_ms":{"type":"number","minimum":0}},"required":["operation","result","upstream","runtime_ms"],"additionalProperties":false},"payment":{"type":"object","properties":{"settled":{"const":true},"tx_hash":{"type":["string","null"]},"payer":{"type":["string","null"]},"price_usdc":{"type":"number","const":0.005},"facilitator":{"type":["string","null"]}},"required":["settled","tx_hash","payer","price_usdc","facilitator"],"additionalProperties":false}},"required":["job_id","status","charged","result","payment"],"additionalProperties":false},{"type":"object","properties":{"job_id":{"type":"string","pattern":"^[0-9a-f]{32,}$"},"status":{"const":"failed"},"charged":{"const":false},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}},"required":["code","message"],"additionalProperties":false}},"required":["job_id","status","charged","error"],"additionalProperties":false}]}},{"method":"POST","path":"/v1/uuid","url":"https://agent.halowerk.com/v1/uuid","tool":"uuid_v4","price_usdc":0.001,"price_model":"per_call","summary":"Generate cryptographically random UUID v4 identifiers.","description":"Returns 1 to 100 UUID v4 identifiers generated by the native operating-system CSPRNG through node:crypto. These identifiers are not identity attestations.","input_schema":{"type":"object","properties":{"count":{"type":"integer","minimum":1,"maximum":100,"default":1}},"required":[],"additionalProperties":false},"needs_history":false,"payment_required":true},{"method":"POST","path":"/v1/random-bytes","url":"https://agent.halowerk.com/v1/random-bytes","tool":"random_bytes","price_usdc":0.001,"price_model":"per_call","summary":"Generate bounded cryptographically random bytes as hex.","description":"Returns 1 to 1024 cryptographically random bytes as hexadecimal. Suitable for application nonces; this service does not create or manage a wallet.","input_schema":{"type":"object","properties":{"bytes":{"type":"integer","minimum":1,"maximum":1024,"default":32}},"required":[],"additionalProperties":false},"needs_history":false,"payment_required":true},{"method":"POST","path":"/v1/server-time","url":"https://agent.halowerk.com/v1/server-time","tool":"server_time","price_usdc":0.001,"price_model":"per_call","summary":"Read the current HALOWERK server time in UTC.","description":"Returns the AX42 system clock as ISO UTC and Unix seconds/milliseconds. A clock observation, not a trusted timestamp authority or latency guarantee.","input_schema":{"type":"object","properties":{},"required":[],"additionalProperties":false},"needs_history":false,"payment_required":true},{"method":"POST","path":"/v1/artifact-receipt","url":"https://agent.halowerk.com/v1/artifact-receipt","tool":"artifact_receipt","price_usdc":0.003,"price_model":"per_call","summary":"Seal or verify a content digest with an Ed25519 receipt.","description":"Seal binds an exact UTF-8 content SHA-256 digest and expiry to a HALOWERK Ed25519 signature; verify checks signature, expiry and optional exact content. The service public key is included. This attests digest receipt only, not truth, legal timestamp, identity or ownership. Keep the receipt to verify offline. Paid requests follow the existing hub request-archive policy.","input_schema":{"type":"object","properties":{"action":{"enum":["seal","verify"]},"content":{"type":"string","maxLength":16384},"ttl_seconds":{"type":"integer","minimum":60,"maximum":86400,"default":3600},"receipt":{"type":"string","maxLength":2048}},"required":["action"],"additionalProperties":false},"needs_history":false,"payment_required":true},{"method":"POST","path":"/v1/text-hash","url":"https://agent.halowerk.com/v1/text-hash","tool":"text_hash","price_usdc":0.001,"price_model":"per_call","summary":"Hash UTF-8 text using SHA-256, SHA-512 or Keccak-256.","description":"Computes an exact digest for the supplied UTF-8 text. Keccak-256 follows Ethereum semantics and differs from SHA3-256. No file fetch or hash reputation lookup.","input_schema":{"type":"object","properties":{"text":{"type":"string","maxLength":32000},"algorithm":{"enum":["sha256","sha512","keccak256"],"default":"sha256"}},"required":["text"],"additionalProperties":false},"needs_history":false,"payment_required":true},{"method":"POST","path":"/v1/base64-codec","url":"https://agent.halowerk.com/v1/base64-codec","tool":"base64_codec","price_usdc":0.001,"price_model":"per_call","summary":"Encode UTF-8 or strictly decode canonical standard Base64.","description":"Converts text to padded standard Base64 or decodes canonical Base64 to valid UTF-8. Rejects noncanonical padding, whitespace, URL-safe alphabet and invalid decoded UTF-8.","input_schema":{"type":"object","properties":{"action":{"enum":["encode","decode"]},"text":{"type":"string","maxLength":32000}},"required":["action","text"],"additionalProperties":false},"needs_history":false,"payment_required":true},{"method":"POST","path":"/v1/text-slug","url":"https://agent.halowerk.com/v1/text-slug","tool":"text_slug","price_usdc":0.001,"price_model":"per_call","summary":"Create an explicitly ASCII normalized URL slug from text.","description":"Uses NFKD normalization, removes combining marks, folds German sharp-s to ss, and replaces runs outside ASCII letters/digits with a hyphen. Does not transliterate every writing system.","input_schema":{"type":"object","properties":{"text":{"type":"string","maxLength":8000}},"required":["text"],"additionalProperties":false},"needs_history":false,"payment_required":true},{"method":"POST","path":"/v1/text-statistics","url":"https://agent.halowerk.com/v1/text-statistics","tool":"text_statistics","price_usdc":0.001,"price_model":"per_call","summary":"Count Unicode words, code points, UTF-8 bytes and lines.","description":"Counts word-like Intl.Segmenter segments, code points, UTF-16 units, UTF-8 bytes and CRLF/CR/LF lines for supplied text. Returns the selected segmentation locale.","input_schema":{"type":"object","properties":{"text":{"type":"string","maxLength":32000},"locale":{"enum":["en","de","fr","es","zh","ja"],"default":"en"}},"required":["text"],"additionalProperties":false},"needs_history":false,"payment_required":true},{"method":"POST","path":"/v1/catalog-search","url":"https://agent.halowerk.com/v1/catalog-search","tool":"halowerk_catalog_search","price_usdc":0.001,"price_model":"per_call","summary":"Search a versioned HALOWERK service catalog snapshot.","description":"Searches canonical URLs, descriptions and tags in the HALOWERK catalog snapshot. Results include catalog age, published price and declared availability. Ranks literal query-term matches, not trust, revenue or execution quality.","input_schema":{"type":"object","properties":{"query":{"type":"string","minLength":1,"maxLength":500},"limit":{"type":"integer","minimum":1,"maximum":20,"default":10}},"required":["query"],"additionalProperties":false},"needs_history":false,"payment_required":true},{"method":"POST","path":"/v1/service-pick","url":"https://agent.halowerk.com/v1/service-pick","tool":"commerce_service_pick","price_usdc":0.001,"price_model":"per_call","summary":"Find a schema-compatible paid API for a task.","description":"Searches the maintained public x402 catalog by task words, validates supplied or explicitly inferred input, and ranks complete candidates before incomplete ones. Returns listed prices, missing fields and the proposed request. Discovery is not proof of seller quality. No purchase or signature occurs.","input_schema":{"type":"object","additionalProperties":false,"properties":{"need":{"type":"string","minLength":3,"maxLength":500},"input":{"type":"object","maxProperties":50},"max_units":{"type":"integer","minimum":1,"maximum":4000,"default":4000},"required_fields":{"type":"array","maxItems":20,"uniqueItems":true,"items":{"type":"string","minLength":1,"maxLength":100}},"limit":{"type":"integer","minimum":1,"maximum":10,"default":5}},"required":["need"]},"needs_history":false,"payment_required":true},{"method":"POST","path":"/v1/service-buy","url":"https://agent.halowerk.com/v1/service-buy","tool":"commerce_service_buy","price_usdc":0.005,"price_model":"per_call","summary":"Buy one authorized paid API result for a task.","description":"Selects a matching request from eligible read services, checks the live Base USDC offer, caps the upstream amount at 0.004 USDC, buys once and verifies the on-chain transfer and structured answer. Requires configured operating funds and spending limits. When unavailable, returns 503 before requesting payment. Uncertain purchases are never signed again. Result checks do not establish factual truth.","input_schema":{"type":"object","additionalProperties":false,"properties":{"need":{"type":"string","minLength":3,"maxLength":500},"input":{"type":"object","maxProperties":50},"max_units":{"type":"integer","minimum":1,"maximum":4000,"default":4000},"required_fields":{"type":"array","maxItems":20,"uniqueItems":true,"items":{"type":"string","minLength":1,"maxLength":100}},"request_id":{"type":"string","pattern":"^[0-9a-fA-F]{32,64}$"}},"required":["need","request_id"]},"needs_history":false,"payment_required":true}],"updated_at":"2026-11-11T00:22:58.139Z"}