{"action":{"additionalProperties":false,"description":"Action space for the ad fraud investigation agent.\n\nThree action types:\n- investigate: Spend budget to reveal information about an ad\n- verdict: Approve, reject, or escalate an ad\n- link_accounts: Flag two ads as part of the same fraud network","properties":{"metadata":{"additionalProperties":true,"description":"Additional metadata for the action","title":"Metadata","type":"object"},"action_type":{"enum":["investigate","verdict","link_accounts"],"title":"Action Type","type":"string"},"ad_id":{"description":"Target ad identifier (e.g. 'ad_001')","title":"Ad Id","type":"string"},"investigation_target":{"anyOf":[{"enum":["advertiser_history","landing_page","payment_method","targeting_overlap","creative_similarity","campaign_structure"],"type":"string"},{"type":"null"}],"default":null,"description":"What to investigate (required for action_type='investigate')","title":"Investigation Target"},"verdict":{"anyOf":[{"enum":["approve","reject","escalate"],"type":"string"},{"type":"null"}],"default":null,"description":"Verdict decision (required for action_type='verdict')","title":"Verdict"},"confidence":{"anyOf":[{"maximum":1.0,"minimum":0.0,"type":"number"},{"type":"null"}],"default":null,"description":"Agent's confidence in verdict (0.0-1.0)","title":"Confidence"},"linked_ad_id":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Other ad in suspected fraud ring (required for action_type='link_accounts')","title":"Linked Ad Id"},"link_reason":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Why the agent believes these ads are connected","title":"Link Reason"}},"required":["action_type","ad_id"],"title":"AdReviewAction","type":"object"},"observation":{"additionalProperties":false,"description":"Observation returned after each step.\n\nText-heavy by design so LLM agents can reason about the content naturally.\nStructured data is in queue_status for programmatic access.","properties":{"done":{"default":false,"description":"Whether the episode has terminated","title":"Done","type":"boolean"},"reward":{"anyOf":[{"type":"boolean"},{"type":"integer"},{"type":"number"},{"type":"null"}],"default":null,"description":"Reward signal from the last action","title":"Reward"},"metadata":{"additionalProperties":true,"description":"Additional metadata for the observation","title":"Metadata","type":"object"},"queue_summary":{"default":"","description":"Natural language overview of the ad queue","title":"Queue Summary","type":"string"},"current_ad_info":{"default":"","description":"Details of the ad currently in focus","title":"Current Ad Info","type":"string"},"investigation_findings":{"default":"","description":"Accumulated investigation results","title":"Investigation Findings","type":"string"},"verdict_history_summary":{"default":"","description":"Summary of verdicts rendered so far","title":"Verdict History Summary","type":"string"},"feedback":{"default":"","description":"Natural language feedback on the last action taken","title":"Feedback","type":"string"},"available_ads":{"description":"Ad IDs still pending review","items":{"type":"string"},"title":"Available Ads","type":"array"},"queue_status":{"additionalProperties":true,"description":"Structured status: total_ads, reviewed, pending, budget, step","title":"Queue Status","type":"object"}},"title":"AdReviewObservation","type":"object"},"state":{"additionalProperties":true,"description":"Base class for environment state.\n\nRepresents internal environment state, separate from observations.","properties":{"episode_id":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Unique identifier for the current episode","title":"Episode Id"},"step_count":{"default":0,"description":"Number of steps taken in the current episode","minimum":0,"title":"Step Count","type":"integer"}},"title":"State","type":"object"}}