Specification versions
Changelog
Versions of the A2M specification.
v0.4 (draft), 2026-11-14
Section titled “v0.4 (draft), 2026-11-14”Current draft. Order forms beyond limit and market, declared per asset class by the venue adapter.
- Intent fields:
stop,stop_limit,trailing_stop;notional;order_class(simple,bracket,oto,oco,mleg);take_profit,stop_loss,legs,position_intent,replaces. Times in force addopgandcls. - Decision payload version 4 signs
asset_classand the order terms. Versions 1 to 3 are still verified; a v1–v3 payload that carries a v4 field is rejected. - New order states:
working(a group’s entry filled, exits still rest),pending_replaceand terminalreplaced. - Holds are the worst case of each form (a stop at max(stop, reference) plus the collar; a bracket its entry; a long option its premium; a spread its maximum loss). A stop-market gap past the hold is settled from cash. If a bracket’s stop loss is rejected after the entry filled, the account goes reduce-only (
group.unprotected). - Mandate
options_level(0 none, 1 covered calls and cash-secured puts, 2 also long calls and puts, 3 defined-risk spreads). The authorizer may cap the effective level.allow_shortallows a cash-collateralized short of whole shares. - Option contracts are OCC symbols.
POST /v1/actionssignsexerciseordo_not_exercisefor a long position. Calendar and diagonal spreads are not supported. - A replacement (
replaces) is a new decision with its own hold. Groups cannot be replaced. - Venue adapter:
Capabilities.asset_classes, and operationsReplaceandAct. Venue differences live in the capability declaration. - New codes include
A2M_ORDER_CLASS,A2M_NOTIONAL,A2M_OPTIONS_LEVEL,A2M_UNCOVERED,A2M_UNDEFINED_RISK,A2M_NO_POSITION,A2M_REPLACE,A2M_ACTION,A2M_ASSET_CLASS. - MCP tools
a2m_replace_orderanda2m_exercise.
v0.3 (draft), 2026-11-12
Section titled “v0.3 (draft), 2026-11-12”- Intent field
extended_hours(boolean, default false). Allowed only on alimitorder withdayorgtc. - Session and calendar semantics: regular and extended sessions, holidays, and early closes. US equities extended hours are 04:00–09:30 and 16:00–20:00 Eastern Time (17:00 on early-close days).
- New codes
A2M_EXTENDED_HOURSand an updated meaning forA2M_MARKET_CLOSEDwhen both regular and extended sessions are closed. - Decision payload version 3 adds signed
extended_hours. Version 2 payloads are still verified and meanextended_hoursfalse. - Protect-price wording: a protective limit is used only on venues that have no native market order. Native market venues rely on pre-send checks of the signed reference price.
- Time-in-force guidance for market orders: Hyperliquid uses
ioc, Alpaca usesday. The protocol default remainsgtc, which a venue that does not accept it will refuse. - Mandate
instrumentsis an optional allowlist, on the mandate and on eachlimitsrow. Empty allows every instrument the venue lists as active. - Order size is capped by notional only.
max_order_qtyis accepted from older callers and ignored. - Venue adapter operation
ListInstruments: the venue’s instrument list, which the authorizer syncs and uses to mark delisted symbols.
v0.2 (draft), 2026-11-12
Section titled “v0.2 (draft), 2026-11-12”- The authorizer mints
client_order_idasco_plus 32 hex characters (35 in all) and never reuses it. The same id with a differentdecision_idisA2M_IDEMPOTENCY(409). - An unsupported time in force or order type is refused before send, never coerced.
qty,limit_priceandreference_pricetake at most 6 decimal places; more is a 400 (APEX_4011), never rounded.- Cancel semantics:
A2M_UNKNOWN(409) if the order is still inunknown;A2M_CANCEL_PENDING(409) if a cancel was sent but the venue has not confirmed it. - Mandate
limits: one row per venue and currency, set by the user per agent. Defaults aremax_leverage1 andshort_collateral_ratio1. Leverage above 1 and short collateral below 1 are not yet supported. The older flat mandate shape is still accepted when every instrument shares one quote currency.
v0.1 (draft), 2026-11-11
Section titled “v0.1 (draft), 2026-11-11”First public draft.
- Five objects: Intent, Mandate, Decision, ExecutionReport, Evidence.
- Decision payload version 2 (
time_in_forceandenforcementare signed). Version 1 payloads are still accepted until they expire. - Order state machine with an explicit
unknownstate resolved only by reconciliation. - Error codes for rule rejections and for transport errors.
- Venue adapter contract.
- MCP binding with seven tools, and OAuth discovery through protected-resource metadata.