{"$id":"https://KATA.org/schemas/action.json","$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":true,"description":"Conceptual schema for a proposed agent action submitted to KATA for pre-execution evaluation, including price integrity and the counterparty. Status: Concept / Open Design \u2014 not production ready.","examples":[{"action_id":"act_5501","action_type":"purchase","amount":4200,"context":{"merchant":"techstore.example"},"currency":"CAD","item":"MacBook Pro 14-inch","parameters":{"merchant":"techstore.example","sku":"MBP14-2026"},"proposed_at":"2026-10-04T14:02:11Z","session_id":"sess_2210"}],"properties":{"action_id":{"description":"Unique identifier for this proposed action.","type":"string"},"action_type":{"description":"The kind of action: purchase, transfer, payment, account_creation, password_reset, data_access, api_invocation, contract_acceptance, booking, investment, communication, privilege_escalation, etc.","type":"string"},"agent_spend_baseline":{"additionalProperties":true,"description":"This agent's own typical spend. Complements the user-declared intent maximum_amount: the same amount can be over-limit for one agent and ordinary for another. It does not show that a genuine merchant charged above its own list price.","properties":{"basis":{"description":"How the baseline was formed, e.g. per_agent_observed.","type":"string"},"currency":{"description":"ISO 4217 currency code.","pattern":"^[A-Z]{3}$","type":"string"},"typical_amount":{"description":"Typical amount for this agent, in currency.","minimum":0,"type":"number"}},"type":"object"},"amount":{"description":"Monetary amount, if the action involves money.","minimum":0,"type":"number"},"context":{"additionalProperties":true,"description":"Surrounding context: merchant, counterparty, session metadata.","type":"object"},"counterparty":{"additionalProperties":true,"description":"The merchant or other payee. Identity, domain, and settlement address can all be genuine while the charge is not.","properties":{"domain":{"description":"Merchant domain or host the agent believes it is paying.","type":"string"},"merchant_id":{"description":"Stable merchant identifier.","type":"string"},"name":{"description":"Human-readable merchant or payee name.","type":"string"},"registered_settlement_address":{"description":"Settlement or payee address on file for this merchant.","type":"string"},"reputation":{"additionalProperties":true,"description":"Prior counterparty reputation. A high score does not clear the current charge.","properties":{"risk":{"description":"Coarse risk band from prior evidence.","enum":["low","medium","high","unknown"],"type":"string"},"score":{"description":"Reputation score, 0\u2013100, higher is better.","maximum":100,"minimum":0,"type":"number"}},"type":"object"},"settlement_address":{"description":"Address or payee identifier that would receive the funds for this action.","type":"string"}},"type":"object"},"currency":{"description":"ISO 4217 currency code, when an amount is present.","pattern":"^[A-Z]{3}$","type":"string"},"item":{"description":"Human-readable description of what the action targets.","type":"string"},"parameters":{"additionalProperties":true,"description":"Action-specific parameters (items, accounts, recipients, payloads).","type":"object"},"price":{"additionalProperties":true,"description":"Quote, list, peer reference, fees, and final charge. Compare them with a tolerance band. Equality is the wrong test: legitimate prices move, and overcharge overlaps that movement.","properties":{"charged_amount":{"description":"Final amount taken or proposed to be taken. When both are set, this agrees with the action amount.","minimum":0,"type":"number"},"currency":{"description":"ISO 4217 currency code for the amounts in this object.","pattern":"^[A-Z]{3}$","type":"string"},"expected_price":{"description":"Price the evaluator expected when it differs from the quote and the list, such as a mandate total.","minimum":0,"type":"number"},"fee_breakdown":{"description":"Line items that sum toward the charge, each marked disclosed or not.","items":{"additionalProperties":true,"properties":{"amount":{"description":"Line amount in the action currency.","minimum":0,"type":"number"},"code":{"description":"Line role, e.g. item, tax, shipping, service_fee.","type":"string"},"description":{"description":"Human-readable line description.","type":"string"},"disclosed":{"description":"True when this line was shown before commitment.","type":"boolean"}},"required":["code","amount","disclosed"],"type":"object"},"type":"array"},"listed_price":{"description":"Catalogue or advertised price for this item or service.","minimum":0,"type":"number"},"peer_price":{"description":"What other buyers pay for the same service, when an external reference exists. The buyer's own history is the wrong baseline for price discrimination.","minimum":0,"type":"number"},"quoted_price":{"description":"Price quoted before commitment.","minimum":0,"type":"number"}},"type":"object"},"proposed_at":{"description":"When the agent proposed this action.","format":"date-time","type":"string"},"service":{"additionalProperties":true,"description":"Quoted tier versus delivered tier. Silent downgrade is full price for a cheaper tier. The agent often cannot observe delivery; a missing delivered_tier is missing evidence, not a pass.","properties":{"delivered_tier":{"description":"Tier actually delivered, when fulfillment evidence exists.","type":"string"},"description":{"description":"What the service or item is.","type":"string"},"quoted_tier":{"description":"Tier quoted or advertised.","type":"string"}},"type":"object"},"session_id":{"description":"The agent session this action belongs to.","type":"string"},"settlement":{"additionalProperties":true,"description":"Settlement state for this attempt. A prior status of failed, with a new idempotency key, is an ordinary retry. Retry farming is a prior attempt that settled, was reported as failed, and is charged again.","properties":{"attempt":{"description":"1-based attempt count for this purchase.","minimum":1,"type":"integer"},"failure_reason":{"description":"Why the prior or current attempt failed, when known.","type":"string"},"idempotency_key":{"description":"Idempotency key for this attempt.","type":"string"},"prior_attempt_status":{"description":"Outcome of the previous attempt, if this action is a retry.","enum":["authorized","settled","failed","unknown"],"type":"string"},"prior_idempotency_key":{"description":"Idempotency key of the previous attempt.","type":"string"},"status":{"description":"Settlement status of this attempt.","enum":["pending","authorized","settled","failed","unknown"],"type":"string"}},"type":"object"}},"required":["action_id","action_type","proposed_at"],"title":"KATA Action","type":"object"}