Tool coverage¶
Supported client dependency: etrade-python>=1.1,<2. The matrix lists implemented
operations and intentional omissions. Test links open the file containing the named test.
| Client operation | MCP tool | Status | Request model | Tests / notes |
|---|---|---|---|---|
session.load, session.status |
server_status |
Implemented | — | test_status_protocol_and_strict_schema test_actual_http_discovery_invocation_and_concurrency test_actual_stdio_cli_protocol_and_stdout |
accounts.list |
accounts_list |
Implemented | — | Request mapping and field coverage |
accounts.get_balance |
accounts_get_balance |
Implemented | AccountBalanceRequest |
Request mapping and field coverage |
portfolio.get_positions |
portfolio_get_positions |
Implemented | PortfolioRequest |
Request mapping and field coverage |
transactions.list |
transactions_list |
Implemented | TransactionsRequest |
Request mapping and field coverage |
transactions.get |
transactions_get |
Implemented | TransactionDetailsRequest |
Request mapping and field coverage |
market.get_quote |
market_get_quote |
Implemented | QuotesRequest |
Request mapping and field coverage |
market.get_quotes |
market_get_quotes |
Implemented | QuotesRequest |
Request mapping and field coverage |
market.lookup_product |
market_lookup_product |
Implemented | ProductLookupRequest |
Request mapping and field coverage |
market.get_option_expirations |
market_get_option_expirations |
Implemented | OptionExpirationsRequest |
Request mapping and field coverage |
market.get_option_chain |
market_get_option_chain |
Implemented | OptionChainRequest |
Request mapping and field coverage |
orders.list |
orders_list |
Implemented | OrdersRequest |
Request mapping and field coverage |
orders.preview |
orders_preview |
Implemented | PreviewOrderRequest |
Preview mapping, nested fields, permissions, and no-retry tests |
orders.place |
orders_place |
Implemented | PlaceOrderRequest |
Mapping, permissions, ambiguity, and no-retry tests |
orders.preview_change |
orders_preview_change |
Implemented | PreviewOrderRequest |
Explicit target, replacement bodies, and protocol tests |
orders.place_change |
orders_place_change |
Implemented | PlaceOrderRequest |
Mapping, permissions, ambiguity, and no-retry tests |
orders.cancel |
orders_cancel |
Implemented | CancelOrderRequest |
Mapping, permissions, ambiguity, and no-retry tests |
alerts.list |
alerts_list |
Implemented | AlertsRequest |
Request mapping and field coverage |
alerts.get |
alerts_get |
Implemented | AlertDetailsRequest |
Request mapping and field coverage |
alerts.delete |
alerts_delete |
Implemented | — | Mapping, permissions, ambiguity, and no-retry tests |
portfolio.iter_positions |
— | Omitted | — | Use explicit single-page tools; no automatic aggregation. |
transactions.list_all |
— | Omitted | — | Use explicit single-page tools; no automatic aggregation. |
orders.list_all |
— | Omitted | — | Use explicit single-page tools; no automatic aggregation. |
The specialized tools below all call orders.preview or orders.preview_change
with public PreviewOrderRequest models. New/change request mappings, general
parity, native errors, HTTP/stdio schemas, and permissions are covered by
tests/test_specialized_previews.py, with
synthetic expected bodies in tests/specialized_cases.py.
| Family | New preview | Change preview | Construction / limitations |
|---|---|---|---|
| Equity | orders_preview_equity |
orders_preview_change_equity |
One EQ leg; explicit equity action. |
| Single option | orders_preview_single_option |
orders_preview_change_single_option |
One OPTN leg; explicit right, expiration, strike, and action. |
| Buy-write | orders_preview_buy_write |
orders_preview_change_buy_write |
Equity BUY + call SELL_OPEN; independent quantities; opening only. |
| Vertical | orders_preview_vertical |
orders_preview_change_vertical |
Two distinct strikes, same right/expiration, equal quantities. |
| Butterfly | orders_preview_butterfly |
orders_preview_change_butterfly |
Three ascending equally spaced strikes; same right; 1:2:1. |
| Condor | orders_preview_condor |
orders_preview_change_condor |
Four ascending strikes; same right; 1:1:1:1; unequal wing widths allowed. |
| Iron butterfly | orders_preview_iron_butterfly |
orders_preview_change_iron_butterfly |
Put/put/call/call; shared middle strike; equal wing widths and quantities. |
| Iron condor | orders_preview_iron_condor |
orders_preview_change_iron_condor |
Ascending put/put/call/call; equal quantities; unequal wing widths allowed. |
| Call spread + short put | orders_preview_call_spread_short_put |
orders_preview_change_call_spread_short_put |
BUY call / SELL call / SELL put opening roles; same expiration, equal quantities. |
OAuth login, verifier exchange, explicit renewal and revocation remain in the
etrade CLI. Automatic client lifecycle management remains active.
The cases in tests/read_cases.py enumerate every supported
read request field. test_read_request_fields_reach_real_client verifies their
final HTTP paths and query parameters using the real client;
test_request_cases_cover_public_client_fields checks those cases against the
public request models. test_preview_nested_field_coverage_and_schema in
tests/test_previews.py checks every public preview request
field, including nested models. Its protocol cases cover equity, options, verticals,
three-leg orders, iron condors, buy-writes, mixed closing/opening legs, multiple
order entries, and alternate sizing. Fixtures are synthetic client-valid contracts,
not evidence that the broker accepts every combination. Mutation mapping,
permissions, partial failures, and uncertain outcomes are covered by
tests/test_mutations.py.
The final protocol audit in tests/test_protocol_audit.py adds every read operation over actual stdio in both supported protocol modes, focused/full/empty catalog enforcement over both transports, explicit pagination through terminal empty pages, HTTP socket loss after dispatch, and killed-process restart without mutation replay. Its recovery reads and explicit repeated calls use synthetic broker responses; they do not establish actual execution or fills. Existing HTTP access-control, response-contract, logging, and large-response tests remain in tests/test_http.py, tests/test_response_contract.py, tests/test_tool_logging.py, and tests/test_large_responses.py.