Every change Wellknown observed on this agent, newest first, with what it was before and what it became. Tool-surface changes carry the definition diff. Nothing here is edited after the fact.
Recently observed → Unavailable
Live → Recently observed
Certificate changed, valid to 2027-01-05
Added "pause_wallet" and "resume_wallet"; changed the definition of "create_execution_intent", "get_integrator_earnings", "get_integrator_stats" and 1 more (194 tools before, 196 now)
⟨119 unchanged words⟩ rather than falsely claiming "caller". FEE PARITY(follow-up to ): the on-chain technology service fee baked into ⟨206 unchanged words⟩
Per-action + per-month integratorearnings$CRANK reward rows. Read-only. Monthly rollup of earning_events + amount_base_units; recent rows carry crank_amount (onboardingnullAPIwhile unpriced).Read-only.$CRANK only, no USD reward figure.
Changed the definition of "get_market_briefing", "lend_deposit" and "set_ooda_consent"
⟨90 unchanged words⟩ ) and "platinum" ($0.50) return real-timeSonnet/Opussynthesis by a larger model, personalised to the wallet's portfolio + active strategies. ⟨99 unchanged words⟩
⟨99 unchanged words⟩ to route through the SAME primary+fallback health-failover theinternalearn/lending trade bridge already applies: an empty rate ⟨47 unchanged words⟩ disclosure in the response (``disclosures``), matchingthe internal
Added "get_trading_limits" and "set_trading_limits"; changed the definition of "create_execution_intent", "get_quotes" and "strategy_resume" (192 tools before, 194 now)
⟨283 unchanged words⟩ caller's origin IP for the Reg-S IP layer. include_slippage_advisory (default False) adds the venue's own suggested tolerance for this route to summary.slippage (suggested_bps / suggestion / advisory_status) so an approver can compare it with applied_bps before signing. Advisory only: applied_bps, and the unsigned transaction, are unchanged by it. The probe overlaps the transaction build, so it adds little latency.
⟨16 unchanged words⟩ default":"","type":"string"},"include_slippage_advisory":{"default":false,"type":"boolean"},"input_token":{"type":"string"},"ip" ⟨37 unchanged words⟩
Changed the definition of "place_perp_order", "set_agnta_grant", "set_alert" and 6 more
⟨315 unchanged words⟩ venue's execute endpoint). Omit it and Crankinfers the route fromreads the signed bytes' ownmessage header: caller-completableinsteadbytes go to Solana RPC, but keeper-co-signed bytes need a venue action, which iscorrectthenbutderivedlessfromauthoritative.``order_type`` alone (limit -> create-limit-order, market -> increase-position). On the completion leg ``order_type`` is therefore load-bearing and is NEVER defaulted: omit both it and ``venue_action`` on keeper-co-signed bytes and the call is refused with a re-build instruction rather than relayed under a guessed action. Always round-trip the build response's ``extra['venue_action']``. ``order_type``: "market" | "limit". Omitted on the BUILD leg it defaults to "market" (unchanged); omitted on the completion leg it stays unset (see ``venue_action`` above).
Changed the definition of "get_ilo_adoption_status", "perp_positions_all" and "set_perp_tpsl"
⟨107 unchanged words⟩ number. Aggregate counts only, no per-wallet data.InformationalAreadinesslaunchmetric;prerequisite (one required condition alongside legal sign-off and the other launch prerequisites); not apromise oflaunchanydate,launchpromise,outcomeor timeline.
Added "set_perp_tpsl"; changed the definition of "pledge_to_ilo" (191 tools before, 192 now)
⟨176 unchanged words⟩ persons are blocked (Reg S-flavoured geo-posture, I4):, and persons in Australia are blocked by a second independent layer: declare ``jurisdiction`` (ISO-3166-1 alpha-2) or rely on ⟨41 unchanged words⟩
Set a take profit and/or stop loss on an ALREADY-OPEN perp position (non-custodial). place_perp_order can attach TP/SL only inline on the order that OPENS a position; this adds one to a position that is already open. Currently supported on Jupiter Perps (position_id = the position pubkey, as returned by perp_positions_all); other venues are refused. At least one of take_profit_price / stop_loss_price is required. size_pct in (0, 100] is how much of the position the trigger closes. Both are passed through exactly as given -- Crank never chooses or adjusts a trigger price or size. Returns an …
Added "poll_agnta_identity_registration", "request_agnta_identity_registration" and "submit_agnta_identity_registration"; changed the definition of "cancel_perp_order", "close_perp_position" and "place_perp_order" (188 tools before, 191 now)
⟨84 unchanged words⟩ the verification -- no state re-read is declared. ``venue_action`` (optional, completion leg only): see place_perp_order -- pass back the build leg's ``extra['venue_action']`` (e.g. Jupiter's cancel-limit-order) so the relay route is the venue's own declared one instead of one inferred from the signed bytes.
⟨44 unchanged words⟩ ":"null"}],"default":null},"venue_action":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null},"verify":{"default":true,"type":"boolean ⟨8 unchanged words⟩
Changed the definition of "create_execution_intent", "get_quotes" and "jupiter_swap"
⟨86 unchanged words⟩ state (CONFIRMED before any success claim). slippage_bps omitted (None) resolves to the published platform default of 50 bps -- unchanged from before; the returned summary's slippage.applied_source honestly reports "platform_default" in that case rather than falsely claiming "caller". FEE PARITY (follow-up to ): the on-chain ⟨160 unchanged words⟩
⟨40 unchanged words⟩ ,"type":"boolean"},"slippage_bps":{"defaultanyOf":50,[{"type":"integer"},{"type":"null"}],"default":null},"wallet_address":{"type":"string"}} ⟨7 unchanged words⟩
Certificate recorded, valid to 2026-11-06
Authorization not required
First tool surface recorded: 188 tools (server version 3.4.7)
Showing the latest 14 events. The API returns up to 500 and filters by kind: ?kind=tool_surface_changed
Integrator dashboard: status, share, onboarded count,earnings$CRANKbreakdown.reward state. Read-only.Every figureRewardsisarefee-share$CRANKUSDonly:(technologyreward_asset,servicepre_mintfeesandthe$CRANKonboardedbucketsagents(accrued/pending/claimable/paid,paideach count/priced_count/ amount_base_units). No USD reward figure, never PnL -- a fee-share, nevera performance-share.
⟨25 unchanged words⟩ and is visible to every process -- thefollow-updurable successor to'sthe earlier process-local ``InMemoryCounterpartySetResolver``. ``wallet_address`` must belong to an ``AgentWallet`` ⟨114 unchanged words⟩
Owner pause of an agent wallet (reversible). Sets status=suspended and pauses its active strategies, so the policy gate refuses every value-bearing action until resume_wallet. Same semantics as the web Agent console pause. Refused on a killed or already-paused wallet.
Owner resume of an owner-paused agent wallet. Lifts only a pause the owner applied (pause_wallet or the web console) -- never an operations or wallet-recovery suspension -- and re-activates only the strategies that pause stopped. Killed wallets stay killed. Requires an owner-authenticated plugin token (wallet_admin scope); refused while a wallet recovery is in progress.
⟨13 unchanged words⟩ alert may run a metered background check (Haikua fast triage model, escalating toSonnetaonlylarger model only if worth acloser look) and propose one action. daily_wake_budget ( ⟨127 unchanged words⟩
⟨98 unchanged words⟩ that case rather than falsely claiming "caller". include_slippage_advisory (default False) adds the venue's own suggested tolerance for this route to the slippage block (suggested_bps / suggestion / advisory_status). Opt-in because it costs one extra venue round trip (~400 ms measured); requires wallet_address. Advisory only -- applied_bps is always exactly what executes.
⟨7 unchanged words⟩ default":"","type":"string"},"include_slippage_advisory":{"default":false,"type":"boolean"},"input_token":{"type":"string"},"output_token" ⟨33 unchanged words⟩
⟨32 unchanged words⟩ is reset so it does not immediately re-trip. (spec s7.1): resuming a PERPS-CAPABLE strategy (perp_grid / basis_trade / allow_short / short_only) re-runs the perps jurisdiction gate first -- a wallet whose jurisdiction no longer passes (US / unknown / expired / OFAC / AU) cannot re-engage a paused perps strategy.
Read the per-token trading caps (TradingLimit rows) on an agent wallet. Returns {wallet_address, trading_limits: [{token_address, max_position_size, max_single_trade, daily_volume_limit}], enforcement}. Caps are USD decimal strings; null = uncapped. ``enforcement`` states which execution rails actually read each column today -- a stored cap is not necessarily a binding one. Sibling of wallet_status for the WalletPolicy surface.
Configure per-token trading caps (TradingLimit) on the caller's agent wallet. limits: a list of {token_address, max_position_size?, max_single_trade?, daily_volume_limit?} objects, USD amounts (> 0, up to 6 decimals). Upserts by token_address; only the cap keys you include are written -- an omitted key keeps its stored value, an explicit null clears it (uncapped). Returns the full updated set read back from the server, plus ``enforcement`` (which rails read each column today). Pure Django write: unlike set_wallet_policy there is no Turnkey enclave re-push. On a Lane 2 wallet, raising or cle…
⟨40 unchanged words⟩ {"type":"string"},"order_type":{"defaultanyOf":[{"markettype":"string"},{"type":"stringnull"}],"default":null},"pay_in_crank":{"default":false,"type" ⟨67 unchanged words⟩
⟨74 unchanged words⟩ applies directly for every wallet, Lane 2 included. Permission mode: a configuration write -- allowed in every permission_mode, observe included; the ladder gates value-bearing actions, not config.
⟨58 unchanged words⟩ you back to the risk/execute phase. See get_trading_workflow. Permission mode: a configuration write -- allowed in every permission_mode, observe included; the ladder gates value-bearing actions, not config.
⟨66 unchanged words⟩ back to repay/de-risk. Pairs with get_health_factor. See get_trading_workflow. Permission mode: a configuration write -- allowed in every permission_mode, observe included; the ladder gates value-bearing actions, not config.
⟨136 unchanged words⟩ can fire; check get_ooda_status afterward to confirm state. Permission mode: a configuration write -- allowed in every permission_mode, observe included; the ladder gates value-bearing actions, not config.
⟨19 unchanged words⟩ with signing power. mode: observe (deny everymutatingvalue-bearing tool outright, PERMISSION_MODE_BLOCKED) | propose (mutatingvalue-bearing tools return a PROPOSAL envelope -- proposal_id + ⟨20 unchanged words⟩ every configured WalletPolicy -- the pre-R9 default).Also settable inline via set_wallet_policy's permission_mode param.The transition is logged as an AgentTransaction audit row. Scope: the ladder gates ACTIONS that build, sign or move value -- including set_perp_tpsl, which is an on-chain action despite its name. It does NOT gate configuration writes: set_wallet_policy, set_agnta_grant, set_alert, set_liquidation_alert, set_ooda_consent, set_portfolio_charter and this tool are allowed in every mode, observe included -- which is how a wallet leaves observe.
⟨267 unchanged words⟩ same request_id / cancel on the completion call. Permission mode: an on-chain ACTION, not a configuration write -- it is ladder-gated like every value-bearing tool, so observe denies it (PERMISSION_MODE_BLOCKED) and propose defers it.
⟨207 unchanged words⟩ it on every execute_strategy tick (see get_trading_workflow). Permission mode: a configuration write -- allowed in every permission_mode, observe included; the ladder gates value-bearing actions, not config.
⟨56 unchanged words⟩ by policy_type; returns the full updated policy set. perp_leverage_limit {"max_leverage": "5"} (Perpcaps the leveragecapaisperpaopenseparatemayfollow-uprequest,--not>=a1; above it is rejected, neverpolicy_typeclampedhere.-- "no perps" is disabled_actions ["perp_open"]). On a Lane 2 wallet, a change that would LOOSEN a server-enforced default raises BROWSER_CONFIRMATION_REQUIRED -- call request_wallet_policy_loosening instead. Permission mode: a configuration write -- allowed in every permission_mode, observe included; the ladder gates value-bearing actions, not config.
⟨25 unchanged words⟩ position_id is the ID to chain into close_perp_position);plus tpsl_triggers -- the TP/SL triggers resting on the position, each with the request_id set_perp_tpsl takes to amend or cancel it; "full" adds entry_price/current_price/leverage/liquidation_price/custody_tier.
Set, amend or cancel a take profitand/or/ stop loss on an ALREADY-OPEN perp position ( ⟨153 unchanged words⟩ the build leg's ``extra['venue_action']`` (Jupiter's create-tpsl / update-tpsl, or None when the caller can broadcast itself) so the signedbytes are relayedthrough the venue's own executeendpoint.endpoint when the build needs it. AMEND / CANCEL a resting trigger: read its ``request_id`` off perp_positions_all (positions[].tpsl_triggers[].request_id), then call this tool with ``request_id`` and either ``trigger_price`` (amend -- moves the trigger to that price) or ``cancel=True`` (cancel it). position_id and take_profit_price/stop_loss_price are not used in those modes, and mixing them with request_id is refused. Same gates (including the AU block), same two-phase flow -- pass the same request_id / cancel on the completion call.
⟨9 unchanged words⟩ default":"","type":"string"},"cancel":{"default":false,"type":"boolean"},"idempotency_key":{"default":"","type":" ⟨11 unchanged words⟩ }],"default":null},"position_id":{"default":"","type":"string"},"request_id":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null},"signed_transaction":{"anyOf":[{"type":"string ⟨22 unchanged words⟩ ":"null"}],"default":null},"trigger_price":{"anyOf":[{"type":"number"},{"type":"null"}],"default":null},"venue":{"anyOf":[{"type":"string ⟨18 unchanged words⟩ type":"string"}},"required":["wallet_address","position_id"],"type":"object"}
⟨109 unchanged words⟩ it by custody tier and verifies the result. ``venue_action`` (optional, completion leg only): see place_perp_order -- pass back the build leg's ``extra['venue_action']`` (e.g. Jupiter's decrease-position) so the relay route is the venue's own declared one instead of one inferred from the signed bytes.
⟨58 unchanged words⟩ ":"null"}],"default":null},"venue_action":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null},"verify":{"default":true,"type":"boolean ⟨8 unchanged words⟩
⟨260 unchanged words⟩ follow-on decisions on ``verification.confirmed``, never on tx_signature alone. ``venue_action`` (optional, completion leg only): the value the BUILD leg recorded on ``extra['venue_action']`` -- pass it back alongside ``signed_transaction`` so Crank relays the bytes under the venue action the venue itself named (e.g. Jupiter's create-limit-order, for a keeper-co-signed build that can only land via the venue's execute endpoint). Omit it and Crank infers the route from the signed bytes' own message header instead, which is correct but less authoritative.
⟨91 unchanged words⟩ ":"null"}],"default":null},"venue_action":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null},"verify":{"default":true,"type":"boolean ⟨11 unchanged words⟩
Complete (or re-check) an owner wallet's AgentIdentity binding from chain. The poll half of the handshake: for an owner who signed AND submitted the ``register_identity`` transaction themselves, this is the only call needed. Verifies the on-chain AgentIdentity account exactly as submit_agnta_identity_registration does and stamps ``registered`` only on success; otherwise it returns the wallet's current stored status with ``verified: false`` and stamps nothing.
Re-enter an AGNTA AgentIdentity binding that has not reached ``registered``. Branches on SIGNING CAPABILITY, not on a status label: an OWNER / SessionSigner wallet is moved to ``pending`` and handed a fresh UNSIGNED ``register_identity`` instruction -- the OWNER signs it with their own wallet (no key material ever reaches Crank, hard rule 1) and then calls submit_agnta_identity_registration, or submits it themselves and calls poll_agnta_identity_registration. A TURNKEY-AUTONOMOUS wallet re-runs the real build + sign + submit instead. An already-``registered`` wallet is a no-op.
Submit the OWNER-SIGNED ``register_identity`` transaction and complete the binding. Submits the transaction, then VERIFIES on chain before stamping anything: the account at ``identity_pda`` must be OWNED by the AGNTA agent-registry program, carry the AgentIdentity discriminator, AND carry this wallet's own authority pubkey. Only then does the wallet move ``pending`` -> ``registered``. A signature string is never treated as proof, and an agent can never self-assert its own binding. A duplicate submit is not an error -- the on-chain check decides; when the account is not yet visible the wallet…
⟨66 unchanged words⟩ rate. This stays a free read either way. slippage_bps omitted (None) resolves to the published platform default of 50 bps -- unchanged from before; the returned envelope's slippage.applied_source honestly reports "platform_default" in that case rather than falsely claiming "caller".
⟨19 unchanged words⟩ ,"type":"boolean"},"slippage_bps":{"defaultanyOf":50,[{"type":"integer"},{"type":"null"}],"default":null},"venue_hint":{"anyOf":[{"type" ⟨15 unchanged words⟩
⟨122 unchanged words⟩ -- the same schedule x402 applies to perps/lend/stake. slippage_bps omitted (None) resolves to the published platform default of 50 bps -- unchanged from before; the returned envelope's slippage.applied_source honestly reports "platform_default" in that case rather than falsely claiming "caller". SECURITY: the output_token is run through multi-layer authenticity ⟨244 unchanged words⟩
⟨52 unchanged words⟩ }],"default":null},"slippage_bps":{"defaultanyOf":50,[{"type":"integer"},{"type":"null"}],"default":null},"venue_hint":{"anyOf":[{"type" ⟨20 unchanged words⟩