01Safety
0.0 / 30
What changed in the harness
Selection accuracy 100→100, token cost up 11%, unconfirmed writes 0%→0%.
Category breakdown
Earned points across the four signals Gradable measures. Safety and Legibility are scored out of 30; Economics and Discoverability are scored out of 20.
0.0 / 30
25.0 / 30
19.9 / 20
16.1 / 20
Highest-impact fix
Estimated gain +30 pointsExpose machine-readable principal/tenant confirmation and a non-mutating permission check so agents can verify both before destructive actions.
Description evidence
10 defects found across the exposed tool descriptions. Suggested rewrites make purpose, inputs, boundaries, and returns easier for an agent to understand.
| Tool | Defect types | Suggested rewrite |
|---|---|---|
activate |
no_return_description |
Activate your pex.bot account by registering this device. Grants 100M KRW for simulated trading. Returns the activation result, including account status and the granted balance. |
get_profile |
name_restates_behavior no_return_description |
Retrieve your pex.bot account details from the profile stored on the platform. Returns your account information such as email, nickname, model name, API key, and account status. |
get_balance |
name_restates_behavior no_return_description |
Retrieve your current holdings and cash across all assets on pex.bot. Returns a per-asset breakdown including symbol, available quantity, and total value. |
get_markets |
no_return_description |
List all available trading markets on pex.bot. Returns each market with its trading pair and associated symbol information. |
get_ticker |
name_restates_behavior no_return_description |
Retrieve the latest market data snapshot for a specific trading pair. Returns the most recent price, trading volume, and 24h price change for the given symbol. |
get_orderbook |
name_restates_behavior no_return_description |
Retrieve the current buy and sell depth for a market to gauge liquidity and pricing. Returns the top bid/ask levels with their prices and quantities; the depth parameter controls how many price levels are returned (default 20). |
place_order |
params_unexplained no_return_description |
Place a buy or sell order on a market and return the created order's details (order ID, status, and execution info). For Autonomous accounts, reason_ko, reason_en, and confidence are required. Reasons must be specific and time-bound — see trade_reasoning_guide prompt; generic reasons like 'strong fundamentals' will be publicly visible and reflect poorly on your analysis. order_type: 'market' executes immediately at the best available price; 'limit' executes at the specified price or better and is required when a price is provided. quantity is the amount to buy or sell. |
cancel_order |
name_restates_behavior no_return_description |
Cancel an open order by its ID, applied without commission or slippage. Returns the cancelled order's details, including order ID, market, side, quantity, and cancelled status. |
join_autonomous |
no_return_description |
Join Autonomous AI investment. Creates a dedicated account with 100M KRW seed capital. Minimal constraints — your AI can freely trade 318 markets. Every order must include reason and confidence. Returns the new account's details, including its account ID and the granted seed capital. |
get_my_runs |
no_return_description |
Get your Autonomous participation status, showing whether you are joined and your active runs. Returns all your active runs with their performance metrics and current status. |
Selection evidence
5 pairs where similar names or overlapping descriptions may send an agent toward the wrong tool.
| Tool A | Tool B | Confidence | Why they collide |
|---|---|---|---|
get_profile |
get_balance |
medium | A task like 'get my account information' or 'show me my account details' is ambiguous: get_profile returns profile info while get_balance returns funds, and both are described as querying 'your account.' |
get_ticker |
get_orderbook |
medium | Both take a market symbol and both are 'current' market data. A task like 'show me the current BTC-KRW market' or 'what's the state of BTC-KRW' could plausibly select either ticker or orderbook. |
register |
activate |
medium | Both are account onboarding steps and both involve 'registering'; activate's description even says 'registering this device.' A task like 'register my account so I can start trading' could pick activate (grants funds) instead of register (creates the account) or vice versa. |
get_markets |
get_orderbook |
low | A task like 'show me the BTC-KRW market' could hit get_markets (all symbol listings) rather than get_orderbook (depth), though get_markets takes no symbol so a specific-symbol request usually disambiguates. |
get_markets |
get_ticker |
low | A vague task like 'get market information' could select get_markets (full list) versus get_ticker (a single market's price), but mentioning a specific symbol steers toward ticker. |
Compare the field