{"server":{"name":"io.github.GammaThreeTrading/fixsim","title":"FIXSIM","$schema":"https://static.modelcontextprotocol.io/schemas/2025-12-11/server.schema.json","remotes":[{"url":"https://mcp.fixsim.com/mcp","type":"streamable-http","headers":[{"name":"x-api-key","isSecret":true,"description":"Optional. Your FIXSIM API key (portal.fixsim.com, API Keys). Leave blank to use only the free sandbox tools."}]}],"version":"0.1.2","repository":{"url":"https://github.com/GammaThreeTrading/fixsim-mcp","source":"github"},"websiteUrl":"https://www.fixsim.com/sandbox","description":"Test FIX from Claude, ChatGPT, or Cursor: free sandbox FIX sessions or your own FIXSIM instances."},"_meta":{"io.modelcontextprotocol.registry/official":{"status":"active","isLatest":true,"updatedAt":"2026-09-13T03:14:07.041606Z","publishedAt":"2026-09-13T03:14:07.041606Z","statusChangedAt":"2026-09-13T03:14:07.041606Z"},"dev.protogrid/connectability":{"class":"R0","autonomous":true,"human_steps":[],"preferred":{"kind":"remote","idx":0},"remotes":[{"idx":0,"url":"https://mcp.fixsim.com/mcp","transport":"streamable-http","templated":false,"headers":[{"name":"x-api-key","required":false,"secret":true,"value":null,"secret_names":["X_API_KEY"]}],"auth":{"type":"none","location":null,"secret_name":null,"oauth":null},"protocol":{"supported_versions":["2026-07-28"],"stateless":true},"health":{"reachable":true,"uptime_30d":1,"latency_ms_p50":336,"consecutive_failures":0,"last_probe_at":"2026-10-19T18:29:01.513Z","last_ok_at":"2026-10-19T18:29:01.513Z"}}],"packages":[]},"dev.protogrid/tools":[{"name":"fixsim_act_on_orders","title":"Act on inbound orders","description":"Respond to orders the user's system sent into FIXSIM: acknowledge, fully or partially execute, reject, cancel remaining, expire, done-for-day, restate, or accept/reject a pending cancel/replace. FIXSIM emits the matching execution reports on the FIX session. Give one or more ClOrdIDs; for executions supply lastPx and, for a partial, lastQty.","annotations":{"title":"Act on inbound orders","destructiveHint":false},"source":"probe","observed_at":"2026-10-19T18:29:01.513Z"},{"name":"fixsim_cancel_order_out","title":"Send an Order Cancel Request","description":"Have FIXSIM send an Order Cancel Request (35=F) for an order it previously sent out with fixsim_send_order.","annotations":{"title":"Send an Order Cancel Request","destructiveHint":false},"source":"probe","observed_at":"2026-10-19T18:29:01.513Z"},{"name":"fixsim_get_order_in","title":"Get inbound order","description":"Get one inbound order by ClOrdID (tag 11), including its raw FIX message and audit trail. Use this to explain why an order was rejected or what state it is in.","annotations":{"title":"Get inbound order","readOnlyHint":true,"idempotentHint":true},"source":"probe","observed_at":"2026-10-19T18:29:01.513Z"},{"name":"fixsim_get_session","title":"Get FIX session","description":"Get one FIX session's settings and live state (logged in?, sequence numbers, connection details).","annotations":{"title":"Get FIX session","readOnlyHint":true,"idempotentHint":true},"source":"probe","observed_at":"2026-10-19T18:29:01.513Z"},{"name":"fixsim_list_executions_in","title":"List inbound execution reports","description":"Execution reports the user's system sent INTO FIXSIM on a session (when FIXSIM is the order sender and the user's system is the executing side). Optionally filter by ExecID (tag 17).","annotations":{"title":"List inbound execution reports","readOnlyHint":true,"idempotentHint":true},"source":"probe","observed_at":"2026-10-19T18:29:01.513Z"},{"name":"fixsim_list_executions_out","title":"List outbound execution reports","description":"Execution reports FIXSIM sent OUT on a session (acks, fills, partial fills, rejects, cancels). Pass clOrdId to see the full execution history of one order: ExecType, OrdStatus, LastPx/LastQty, CumQty, LeavesQty, AvgPx and the raw FIX.","annotations":{"title":"List outbound execution reports","readOnlyHint":true,"idempotentHint":true},"source":"probe","observed_at":"2026-10-19T18:29:01.513Z"},{"name":"fixsim_list_instances","title":"List FIXSIM instances","description":"List the FIXSIM instances your API key can access. An instance is a hosted FIX engine; each holds one or more FIX sessions. Start here to learn the instance names other tools need.","annotations":{"title":"List FIXSIM instances","readOnlyHint":true,"idempotentHint":true},"source":"probe","observed_at":"2026-10-19T18:29:01.513Z"},{"name":"fixsim_list_orders_in","title":"List inbound orders","description":"Orders the user's trading system sent INTO FIXSIM on a session (FIXSIM is the counterparty). Includes ClOrdID, symbol, side, quantity, remaining quantity, order status and the raw FIX message. Optionally filter by FIX OrdStatus code (tag 39): 0 new, 1 partially filled, 2 filled, 4 canceled, 8 rejected.","annotations":{"title":"List inbound orders","readOnlyHint":true,"idempotentHint":true},"source":"probe","observed_at":"2026-10-19T18:29:01.513Z"},{"name":"fixsim_list_orders_out","title":"List outbound orders","description":"Orders FIXSIM sent OUT on a session (created with fixsim_send_order). Pass clOrdId to fetch one.","annotations":{"title":"List outbound orders","readOnlyHint":true,"idempotentHint":true},"source":"probe","observed_at":"2026-10-19T18:29:01.513Z"},{"name":"fixsim_list_securities","title":"List securities","description":"Securities (symbol, last price, CUSIP, ISIN) configured on an instance. FIXSIM prices fills from these.","annotations":{"title":"List securities","readOnlyHint":true,"idempotentHint":true},"source":"probe","observed_at":"2026-10-19T18:29:01.513Z"},{"name":"fixsim_list_sessions","title":"List FIX sessions","description":"List the FIX sessions on an instance with their FIX version, CompIDs, acceptor/initiator role, host/port, enabled and logged-in state, and sequence numbers.","annotations":{"title":"List FIX sessions","readOnlyHint":true,"idempotentHint":true},"source":"probe","observed_at":"2026-10-19T18:29:01.513Z"},{"name":"fixsim_send_order","title":"Send a New Order Single","description":"Have FIXSIM send a New Order Single (35=D) OUT on a session to the user's system, so they can test how their system handles inbound orders. Follow up with fixsim_list_orders_out and fixsim_list_executions_in to see what came back.","annotations":{"title":"Send a New Order Single","destructiveHint":false},"source":"probe","observed_at":"2026-10-19T18:29:01.513Z"},{"name":"fixsim_send_raw_fix","title":"Send raw FIX messages","description":"Send one or more raw FIX application messages OUT on a session as given (tag=value pairs separated by | or SOH). FIXSIM supplies the session header fields (BeginString, CompIDs, MsgSeqNum, SendingTime) and the checksum. Use for message types the other tools do not cover.","annotations":{"title":"Send raw FIX messages","destructiveHint":false},"source":"probe","observed_at":"2026-10-19T18:29:01.513Z"},{"name":"sandbox_act_on_order","title":"Fill, reject, or cancel a sandbox order","description":"Play the exchange for one order the user sent in: fill (full execution), partial (partial fill), reject, or cancel (cancel the remaining quantity). FIXSIM sends the matching execution report back to the user's engine.","annotations":{"title":"Fill, reject, or cancel a sandbox order","destructiveHint":false},"source":"probe","observed_at":"2026-10-19T18:29:01.513Z"},{"name":"sandbox_create_session","title":"Create sandbox FIX session","description":"Create a free, anonymous FIX test session on the FIXSIM Developer Sandbox. No account or API key needed. Returns the connection card: host, port, the SenderCompID the user must put in tag 49, the TargetCompID for tag 56, BeginString, and the expiry (sessions last 4 hours, cap 100 application messages per day). The user's FIX engine connects as the initiator; FIXSIM is the acceptor and acknowledges every order. Keep the returned id; every other sandbox tool needs it.","annotations":{"title":"Create sandbox FIX session","destructiveHint":false},"source":"probe","observed_at":"2026-10-19T18:29:01.513Z"},{"name":"sandbox_end_session","title":"End sandbox session","description":"End a sandbox session now instead of waiting for it to expire. Frees the slot for the user's IP.","annotations":{"title":"End sandbox session","destructiveHint":true},"source":"probe","observed_at":"2026-10-19T18:29:01.513Z"},{"name":"sandbox_get_messages","title":"Read sandbox FIX message log","description":"The FIX message log for a sandbox session, oldest first: logons, heartbeats, orders in, execution reports out, rejects. Each message has seq, timeUtc, inbound (true = user's engine sent it), msgType, raw FIX, and parsed tag/value fields. Pass afterSeq (the last seq you saw) to fetch only new messages. Use this to explain what happened on the wire.","annotations":{"title":"Read sandbox FIX message log","readOnlyHint":true,"idempotentHint":true},"source":"probe","observed_at":"2026-10-19T18:29:01.513Z"},{"name":"sandbox_get_orders","title":"List sandbox orders","description":"Working orders the user's engine has sent into the sandbox session: ClOrdID, symbol, side, qty, filled, leaves, price, status.","annotations":{"title":"List sandbox orders","readOnlyHint":true,"idempotentHint":true},"source":"probe","observed_at":"2026-10-19T18:29:01.513Z"},{"name":"sandbox_get_session","title":"Get sandbox session","description":"Re-fetch a sandbox session's connection card by id, including whether auto-fill is on and when it expires.","annotations":{"title":"Get sandbox session","readOnlyHint":true,"idempotentHint":true},"source":"probe","observed_at":"2026-10-19T18:29:01.513Z"},{"name":"sandbox_get_status","title":"Check sandbox connection status","description":"Is the user's FIX engine connected to the sandbox session? Returns state: connected, waiting (nobody logged on yet), disabled, or unknown.","annotations":{"title":"Check sandbox connection status","readOnlyHint":true,"idempotentHint":true},"source":"probe","observed_at":"2026-10-19T18:29:01.513Z"},{"name":"sandbox_set_autofill","title":"Set sandbox auto-fill","description":"Turn automatic fills on or off for a sandbox session. On: every order the user sends is filled immediately at the security's last price. Off (default): orders are acknowledged and wait for sandbox_act_on_order.","annotations":{"title":"Set sandbox auto-fill","destructiveHint":false},"source":"probe","observed_at":"2026-10-19T18:29:01.513Z"}],"dev.protogrid/trust":{"score":94,"components":{"hygiene":100,"liveness":100,"freshness":85,"provenance":90},"drivers":["+repository","+namespace-matches-repo","+website","+reachable","+uptime-100%","~updated-37d-ago"],"flags":[],"blocked":false,"computed_at":"2026-10-19T20:34:48.945Z","disclaimer":"Derived from observable signals (official registry feed and our own credential-free probes); no code audit performed."},"dev.protogrid/quality":{"score":89,"label":"good","components":{"auth":null,"hygiene":86,"protocol":88,"stability":100,"dependencies":null},"checks":[{"id":"protocol.modern","detail":"supports 2026-07-28 (server/discover)","status":"pass","category":"protocol"},{"id":"protocol.stateless","detail":"answers without a session","status":"pass","category":"protocol"},{"id":"protocol.transport","detail":"streamable HTTP","status":"pass","category":"protocol"},{"id":"protocol.list_ttl","detail":"tools/list declares ttlMs 0, so clients re-fetch it on every use","status":"warn","category":"protocol"},{"id":"auth.prm","detail":"no remote uses OAuth","status":"na","category":"auth"},{"id":"auth.as_metadata","detail":"no remote uses OAuth","status":"na","category":"auth"},{"id":"auth.cimd","detail":"no remote uses OAuth","status":"na","category":"auth"},{"id":"auth.secret_in_url","detail":"no templated URL","status":"na","category":"auth"},{"id":"tools.descriptions","detail":"every tool has a description","status":"pass","category":"hygiene"},{"id":"tools.description_length","detail":"descriptions are concise","status":"pass","category":"hygiene"},{"id":"tools.schemas","detail":"every tool has an object input schema","status":"pass","category":"hygiene"},{"id":"tools.annotations","detail":"21 of 21 tools declare readOnlyHint or destructiveHint","status":"pass","category":"hygiene"},{"id":"tools.directory_hints","detail":"no tool declares all four of readOnlyHint, destructiveHint, idempotentHint and openWorldHint; missing: fixsim_list_instances (destructiveHint, openWorldHint); fixsim_get_session (destructiveHint, openWorldHint); sandbox_get_session (destructiveHint, openWorldHint); …","status":"fail","category":"hygiene"},{"id":"tools.token_cost","detail":"about 3,125 tokens to load every tool","status":"pass","category":"hygiene"},{"id":"tools.api_dump","detail":"tools are not a one-to-one API dump","status":"pass","category":"hygiene"},{"id":"stability.changes","detail":"no tool changes in 30 days","status":"pass","category":"stability"},{"id":"stability.rug_pull","detail":"no tool changed its meaning under the same name","status":"pass","category":"stability"},{"id":"deps.known_vulns","detail":"no npm or PyPI package","status":"na","category":"dependencies"},{"id":"deps.mcp_sdk_version","detail":"no npm or PyPI package","status":"na","category":"dependencies"},{"id":"deps.resolvable","detail":"no npm or PyPI package","status":"na","category":"dependencies"}],"drivers":["-tools.directory_hints","~protocol.list_ttl"],"flags":[],"tool_count":21,"token_estimate":3125,"tools_hash":"cfb1b86be97b125ac00aa83aa140b43d","tools_changed_at":null,"computed_at":"2026-10-19T20:38:04.291Z","disclaimer":"Checks run on what our credential-free, read-only probes observe; tools are never called and no code audit is performed."},"dev.protogrid/identity":{"canonical_id":"io.github.GammaThreeTrading/fixsim","aliases":[],"alias_count":0,"repository_key":"github:gammathreetrading/fixsim-mcp","owner":{"verified":false,"method":null,"since":null}}},"next_actions":[{"action":"list_tools","description":"Every current tool with input schemas","href":"/v1/servers/io.github.GammaThreeTrading%2Ffixsim/tools","arguments":{"name":"io.github.GammaThreeTrading/fixsim"}},{"action":"get_connection","description":"Minimal connection block for the preferred remote or package","href":"/v1/servers/io.github.GammaThreeTrading%2Ffixsim/connection?target=mcpServers","arguments":{"name":"io.github.GammaThreeTrading/fixsim","target":"mcpServers"}},{"action":"search","description":"Find other servers by intent","href":"/v1/search?q={query}","arguments":{"q":"{query}"}}]}