{"$schema":"https://wellknown.network/schemas/agent-record-v1.json","schemaVersion":"1","id":"ag_69snjdun35v9","handle":"benawf","url":"https://wellknown.network/agents/benawf","links":{"self":"https://wellknown.network/agents/benawf/record.json","html":"https://wellknown.network/agents/benawf","markdown":"https://wellknown.network/agents/benawf/record.md","api":"https://wellknown.network/api/v1/agents/benawf","status":"https://wellknown.network/api/v1/agents/benawf/status","claim":"https://wellknown.network/agents/benawf/claim","claimApi":"https://wellknown.network/api/v1/claims","claimDescriptor":"https://wellknown.network/agents/benawf/claim.json","badge":"https://wellknown.network/agents/benawf/badge.svg","openapi":"https://wellknown.network/openapi.json","history":"https://wellknown.network/api/v1/agents/benawf/history","tools":"https://wellknown.network/api/v1/agents/benawf/tools"},"ard":{"identifier":"urn:air:api.benawf.com:server:benawf","type":"application/mcp-server-card+json"},"kind":"mcp_server","declared":{"name":"BenAwf","summary":"BenAwf remote MCP for Strategy Lab. Streamable HTTP. Paper GA; live venue beta.","description":"BenAwf remote MCP for Strategy Lab. Streamable HTTP. Paper GA; live venue beta.","publisher":{"name":"com.benawf","url":null},"homepage":"https://benawf.com","repository":null,"version":"1.0.0","license":null,"protocols":["mcp"],"tags":[],"pricing":null,"endpoints":[{"url":"https://api.benawf.com/mcp","type":"mcp_streamable_http","auth":null,"probeable":true}],"skills":null,"tools":null,"extra":{"updatedAt":"2026-09-21T10:42:13.203982Z","publishedAt":"2026-09-21T10:42:13.203982Z","registryName":"com.benawf/mcp"},"attribution":{"kind":"mcp_registry","name":"mcp_registry","summary":"mcp_registry","version":"mcp_registry","description":"mcp_registry","homepageUrl":"mcp_registry","publisherName":"mcp_registry"}},"derived":{"capabilities":[{"slug":"content.translation","name":"Translation","confidence":0.554,"provenance":"derived"},{"slug":"data.news","name":"News & Feeds","confidence":0.54,"provenance":"derived"},{"slug":"content.writing","name":"Writing & Editing","confidence":0.51,"provenance":"derived"},{"slug":"infra.browser-automation","name":"Browser Automation","confidence":0.51,"provenance":"derived"}],"categories":["content","data","infra"],"language":"fr"},"observed":{"status":"live","statusReason":"Responded 6h ago.","lastOkAt":"2026-10-09T23:30:18.956Z","lastProbedAt":"2026-10-09T23:30:18.956Z","statusComputedAt":"2026-10-09T23:31:19.423Z","reliability30d":{"probes":63,"successRate":1,"p50Ms":57,"basis":"service","measures":{"availability":"availability","latency":"response time","tools":"tool surface observed","summary":"Checks reached the service itself."},"checks":{"total":63,"ok":63,"authBoundaryOk":0,"serviceOk":63,"note":"Counted from the observation rows for the window, checks of the server only (HTTP, A2A card, MCP initialize). ok = authBoundaryOk + serviceOk. `probes` is the sum of daily rollups and includes registry checks, so it can differ from `total`."}},"latestObservations":[{"at":"2026-10-09T23:30:18.956Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":102,"error":null,"detail":{"tools":[{"name":"list_iterations","description":"Open Lab @R# rows as the same dump as Live rules (parent, headline @B#, Long/Position/Exit)."},{"name":"get_lineage","description":"Champion @R#, per-iteration verdicts, levers tried/untried/failed on champion, converged flag, and user canvas view vs recommended working @R#."},{"name":"select_iteration","description":"Load an @R# onto the live canvas so mutate tools edit that iteration."},{"name":"add_entry_gate","description":"Add one AND entry gate. Args: side + condition JSON. You are the DSL translator. Invent the section JSON (condition/position/exit/cooldown). Browser applies onl"},{"name":"patch_entry_gate","description":"Replace one entry gate by id. Args: id + condition JSON. You are the DSL translator. Invent the section JSON (condition/position/exit/cooldown). Browser applies"},{"name":"delete_entry_gate","description":"Remove one entry gate by id (from get_experiment). Args: id only. Refuses when it would leave both long and short with zero gates."},{"name":"patch_position","description":"Full replace of rules.position. Args: position JSON. You are the DSL translator. Invent the section JSON (condition/position/exit/cooldown). Browser applies onl"},{"name":"patch_exit","description":"Full replace of rules.exit. Args: exit JSON. You are the DSL translator. Invent the section JSON (condition/position/exit/cooldown). Browser applies only — BenA"},{"name":"patch_cooldown","description":"Set root cooldownMinutes. Args: cooldownMinutes number|null. You are the DSL translator. Invent the section JSON (condition/position/exit/cooldown). Browser app"},{"name":"list_strategies","description":"Ids, @R# refs, and backtest headlines for strategies not currently open."},{"name":"list_backtests","description":"Open Lab @B# rows with window, assets, trade count, PnL, win rate, drawdown, and tape_stripped."},{"name":"get_backtest","description":"Cache-or-run one sim for an @R# + window, then return Score, trade count, PnL, drawdown, and bounded stats for one run. Numbers only — no BenAwf assessment LLM;"},{"name":"list_trades","description":"One page of fills (20 per page): trade_id, side, prices, PnL."},{"name":"get_experiment","description":"Prose summary plus rules JSON (entry gates with ids, position, exit, cooldownMinutes) and that iteration's @B# refs. Read before inventing translator-shaped mut"},{"name":"diff_dsl","description":"Structured rules diff between two @R# iterations (entry gates per side, position, exit, cooldown). Use before adopting an older iteration's levers onto a newer "},{"name":"get_market_context_by_date","description":"OHLCV and cited indicators around that date (engine lookback each side)."}],"toolCount":16,"toolsHash":"adf480d9b6836ac918aaab1d6a717f6b3861c80b2c79332055a206cfc041dd3d","serverName":"benawf","capabilities":["resources","prompts","tools"],"serverVersion":"1.0.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-09T16:33:12.352Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":106,"error":null,"detail":{"tools":[{"name":"list_iterations","description":"Open Lab @R# rows as the same dump as Live rules (parent, headline @B#, Long/Position/Exit)."},{"name":"get_lineage","description":"Champion @R#, per-iteration verdicts, levers tried/untried/failed on champion, converged flag, and user canvas view vs recommended working @R#."},{"name":"select_iteration","description":"Load an @R# onto the live canvas so mutate tools edit that iteration."},{"name":"add_entry_gate","description":"Add one AND entry gate. Args: side + condition JSON. You are the DSL translator. Invent the section JSON (condition/position/exit/cooldown). Browser applies onl"},{"name":"patch_entry_gate","description":"Replace one entry gate by id. Args: id + condition JSON. You are the DSL translator. Invent the section JSON (condition/position/exit/cooldown). Browser applies"},{"name":"delete_entry_gate","description":"Remove one entry gate by id (from get_experiment). Args: id only. Refuses when it would leave both long and short with zero gates."},{"name":"patch_position","description":"Full replace of rules.position. Args: position JSON. You are the DSL translator. Invent the section JSON (condition/position/exit/cooldown). Browser applies onl"},{"name":"patch_exit","description":"Full replace of rules.exit. Args: exit JSON. You are the DSL translator. Invent the section JSON (condition/position/exit/cooldown). Browser applies only — BenA"},{"name":"patch_cooldown","description":"Set root cooldownMinutes. Args: cooldownMinutes number|null. You are the DSL translator. Invent the section JSON (condition/position/exit/cooldown). Browser app"},{"name":"list_strategies","description":"Ids, @R# refs, and backtest headlines for strategies not currently open."},{"name":"list_backtests","description":"Open Lab @B# rows with window, assets, trade count, PnL, win rate, drawdown, and tape_stripped."},{"name":"get_backtest","description":"Cache-or-run one sim for an @R# + window, then return Score, trade count, PnL, drawdown, and bounded stats for one run. Numbers only — no BenAwf assessment LLM;"},{"name":"list_trades","description":"One page of fills (20 per page): trade_id, side, prices, PnL."},{"name":"get_experiment","description":"Prose summary plus rules JSON (entry gates with ids, position, exit, cooldownMinutes) and that iteration's @B# refs. Read before inventing translator-shaped mut"},{"name":"diff_dsl","description":"Structured rules diff between two @R# iterations (entry gates per side, position, exit, cooldown). Use before adopting an older iteration's levers onto a newer "},{"name":"get_market_context_by_date","description":"OHLCV and cited indicators around that date (engine lookback each side)."}],"toolCount":16,"toolsHash":"adf480d9b6836ac918aaab1d6a717f6b3861c80b2c79332055a206cfc041dd3d","serverName":"benawf","capabilities":["resources","prompts","tools"],"serverVersion":"1.0.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-09T09:27:39.568Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":54,"error":null,"detail":{"tools":[{"name":"list_iterations","description":"Open Lab @R# rows as the same dump as Live rules (parent, headline @B#, Long/Position/Exit)."},{"name":"get_lineage","description":"Champion @R#, per-iteration verdicts, levers tried/untried/failed on champion, converged flag, and user canvas view vs recommended working @R#."},{"name":"select_iteration","description":"Load an @R# onto the live canvas so mutate tools edit that iteration."},{"name":"add_entry_gate","description":"Add one AND entry gate. Args: side + condition JSON. You are the DSL translator. Invent the section JSON (condition/position/exit/cooldown). Browser applies onl"},{"name":"patch_entry_gate","description":"Replace one entry gate by id. Args: id + condition JSON. You are the DSL translator. Invent the section JSON (condition/position/exit/cooldown). Browser applies"},{"name":"delete_entry_gate","description":"Remove one entry gate by id (from get_experiment). Args: id only. Refuses when it would leave both long and short with zero gates."},{"name":"patch_position","description":"Full replace of rules.position. Args: position JSON. You are the DSL translator. Invent the section JSON (condition/position/exit/cooldown). Browser applies onl"},{"name":"patch_exit","description":"Full replace of rules.exit. Args: exit JSON. You are the DSL translator. Invent the section JSON (condition/position/exit/cooldown). Browser applies only — BenA"},{"name":"patch_cooldown","description":"Set root cooldownMinutes. Args: cooldownMinutes number|null. You are the DSL translator. Invent the section JSON (condition/position/exit/cooldown). Browser app"},{"name":"list_strategies","description":"Ids, @R# refs, and backtest headlines for strategies not currently open."},{"name":"list_backtests","description":"Open Lab @B# rows with window, assets, trade count, PnL, win rate, drawdown, and tape_stripped."},{"name":"get_backtest","description":"Cache-or-run one sim for an @R# + window, then return Score, trade count, PnL, drawdown, and bounded stats for one run. Numbers only — no BenAwf assessment LLM;"},{"name":"list_trades","description":"One page of fills (20 per page): trade_id, side, prices, PnL."},{"name":"get_experiment","description":"Prose summary plus rules JSON (entry gates with ids, position, exit, cooldownMinutes) and that iteration's @B# refs. Read before inventing translator-shaped mut"},{"name":"diff_dsl","description":"Structured rules diff between two @R# iterations (entry gates per side, position, exit, cooldown). Use before adopting an older iteration's levers onto a newer "},{"name":"get_market_context_by_date","description":"OHLCV and cited indicators around that date (engine lookback each side)."}],"toolCount":16,"toolsHash":"adf480d9b6836ac918aaab1d6a717f6b3861c80b2c79332055a206cfc041dd3d","serverName":"benawf","capabilities":["resources","prompts","tools"],"serverVersion":"1.0.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-09T02:26:14.912Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":50,"error":null,"detail":{"tools":[{"name":"list_iterations","description":"Open Lab @R# rows as the same dump as Live rules (parent, headline @B#, Long/Position/Exit)."},{"name":"get_lineage","description":"Champion @R#, per-iteration verdicts, levers tried/untried/failed on champion, converged flag, and user canvas view vs recommended working @R#."},{"name":"select_iteration","description":"Load an @R# onto the live canvas so mutate tools edit that iteration."},{"name":"add_entry_gate","description":"Add one AND entry gate. Args: side + condition JSON. You are the DSL translator. Invent the section JSON (condition/position/exit/cooldown). Browser applies onl"},{"name":"patch_entry_gate","description":"Replace one entry gate by id. Args: id + condition JSON. You are the DSL translator. Invent the section JSON (condition/position/exit/cooldown). Browser applies"},{"name":"delete_entry_gate","description":"Remove one entry gate by id (from get_experiment). Args: id only. Refuses when it would leave both long and short with zero gates."},{"name":"patch_position","description":"Full replace of rules.position. Args: position JSON. You are the DSL translator. Invent the section JSON (condition/position/exit/cooldown). Browser applies onl"},{"name":"patch_exit","description":"Full replace of rules.exit. Args: exit JSON. You are the DSL translator. Invent the section JSON (condition/position/exit/cooldown). Browser applies only — BenA"},{"name":"patch_cooldown","description":"Set root cooldownMinutes. Args: cooldownMinutes number|null. You are the DSL translator. Invent the section JSON (condition/position/exit/cooldown). Browser app"},{"name":"list_strategies","description":"Ids, @R# refs, and backtest headlines for strategies not currently open."},{"name":"list_backtests","description":"Open Lab @B# rows with window, assets, trade count, PnL, win rate, drawdown, and tape_stripped."},{"name":"get_backtest","description":"Cache-or-run one sim for an @R# + window, then return Score, trade count, PnL, drawdown, and bounded stats for one run. Numbers only — no BenAwf assessment LLM;"},{"name":"list_trades","description":"One page of fills (20 per page): trade_id, side, prices, PnL."},{"name":"get_experiment","description":"Prose summary plus rules JSON (entry gates with ids, position, exit, cooldownMinutes) and that iteration's @B# refs. Read before inventing translator-shaped mut"},{"name":"diff_dsl","description":"Structured rules diff between two @R# iterations (entry gates per side, position, exit, cooldown). Use before adopting an older iteration's levers onto a newer "},{"name":"get_market_context_by_date","description":"OHLCV and cited indicators around that date (engine lookback each side)."}],"toolCount":16,"toolsHash":"adf480d9b6836ac918aaab1d6a717f6b3861c80b2c79332055a206cfc041dd3d","serverName":"benawf","capabilities":["resources","prompts","tools"],"serverVersion":"1.0.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-08T19:23:05.097Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":61,"error":null,"detail":{"tools":[{"name":"list_iterations","description":"Open Lab @R# rows as the same dump as Live rules (parent, headline @B#, Long/Position/Exit)."},{"name":"get_lineage","description":"Champion @R#, per-iteration verdicts, levers tried/untried/failed on champion, converged flag, and user canvas view vs recommended working @R#."},{"name":"select_iteration","description":"Load an @R# onto the live canvas so mutate tools edit that iteration."},{"name":"add_entry_gate","description":"Add one AND entry gate. Args: side + condition JSON. You are the DSL translator. Invent the section JSON (condition/position/exit/cooldown). Browser applies onl"},{"name":"patch_entry_gate","description":"Replace one entry gate by id. Args: id + condition JSON. You are the DSL translator. Invent the section JSON (condition/position/exit/cooldown). Browser applies"},{"name":"delete_entry_gate","description":"Remove one entry gate by id (from get_experiment). Args: id only. Refuses when it would leave both long and short with zero gates."},{"name":"patch_position","description":"Full replace of rules.position. Args: position JSON. You are the DSL translator. Invent the section JSON (condition/position/exit/cooldown). Browser applies onl"},{"name":"patch_exit","description":"Full replace of rules.exit. Args: exit JSON. You are the DSL translator. Invent the section JSON (condition/position/exit/cooldown). Browser applies only — BenA"},{"name":"patch_cooldown","description":"Set root cooldownMinutes. Args: cooldownMinutes number|null. You are the DSL translator. Invent the section JSON (condition/position/exit/cooldown). Browser app"},{"name":"list_strategies","description":"Ids, @R# refs, and backtest headlines for strategies not currently open."},{"name":"list_backtests","description":"Open Lab @B# rows with window, assets, trade count, PnL, win rate, drawdown, and tape_stripped."},{"name":"get_backtest","description":"Cache-or-run one sim for an @R# + window, then return Score, trade count, PnL, drawdown, and bounded stats for one run. Numbers only — no BenAwf assessment LLM;"},{"name":"list_trades","description":"One page of fills (20 per page): trade_id, side, prices, PnL."},{"name":"get_experiment","description":"Prose summary plus rules JSON (entry gates with ids, position, exit, cooldownMinutes) and that iteration's @B# refs. Read before inventing translator-shaped mut"},{"name":"diff_dsl","description":"Structured rules diff between two @R# iterations (entry gates per side, position, exit, cooldown). Use before adopting an older iteration's levers onto a newer "},{"name":"get_market_context_by_date","description":"OHLCV and cited indicators around that date (engine lookback each side)."}],"toolCount":16,"toolsHash":"adf480d9b6836ac918aaab1d6a717f6b3861c80b2c79332055a206cfc041dd3d","serverName":"benawf","capabilities":["resources","prompts","tools"],"serverVersion":"1.0.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-08T12:26:18.948Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":60,"error":null,"detail":{"tools":[{"name":"list_iterations","description":"Open Lab @R# rows as the same dump as Live rules (parent, headline @B#, Long/Position/Exit)."},{"name":"get_lineage","description":"Champion @R#, per-iteration verdicts, levers tried/untried/failed on champion, converged flag, and user canvas view vs recommended working @R#."},{"name":"select_iteration","description":"Load an @R# onto the live canvas so mutate tools edit that iteration."},{"name":"add_entry_gate","description":"Add one AND entry gate. Args: side + condition JSON. You are the DSL translator. Invent the section JSON (condition/position/exit/cooldown). Browser applies onl"},{"name":"patch_entry_gate","description":"Replace one entry gate by id. Args: id + condition JSON. You are the DSL translator. Invent the section JSON (condition/position/exit/cooldown). Browser applies"},{"name":"delete_entry_gate","description":"Remove one entry gate by id (from get_experiment). Args: id only. Refuses when it would leave both long and short with zero gates."},{"name":"patch_position","description":"Full replace of rules.position. Args: position JSON. You are the DSL translator. Invent the section JSON (condition/position/exit/cooldown). Browser applies onl"},{"name":"patch_exit","description":"Full replace of rules.exit. Args: exit JSON. You are the DSL translator. Invent the section JSON (condition/position/exit/cooldown). Browser applies only — BenA"},{"name":"patch_cooldown","description":"Set root cooldownMinutes. Args: cooldownMinutes number|null. You are the DSL translator. Invent the section JSON (condition/position/exit/cooldown). Browser app"},{"name":"list_strategies","description":"Ids, @R# refs, and backtest headlines for strategies not currently open."},{"name":"list_backtests","description":"Open Lab @B# rows with window, assets, trade count, PnL, win rate, drawdown, and tape_stripped."},{"name":"get_backtest","description":"Cache-or-run one sim for an @R# + window, then return Score, trade count, PnL, drawdown, and bounded stats for one run. Numbers only — no BenAwf assessment LLM;"},{"name":"list_trades","description":"One page of fills (20 per page): trade_id, side, prices, PnL."},{"name":"get_experiment","description":"Prose summary plus rules JSON (entry gates with ids, position, exit, cooldownMinutes) and that iteration's @B# refs. Read before inventing translator-shaped mut"},{"name":"diff_dsl","description":"Structured rules diff between two @R# iterations (entry gates per side, position, exit, cooldown). Use before adopting an older iteration's levers onto a newer "},{"name":"get_market_context_by_date","description":"OHLCV and cited indicators around that date (engine lookback each side)."}],"toolCount":16,"toolsHash":"adf480d9b6836ac918aaab1d6a717f6b3861c80b2c79332055a206cfc041dd3d","serverName":"benawf","capabilities":["resources","prompts","tools"],"serverVersion":"1.0.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-08T05:22:41.571Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":51,"error":null,"detail":{"tools":[{"name":"list_iterations","description":"Open Lab @R# rows as the same dump as Live rules (parent, headline @B#, Long/Position/Exit)."},{"name":"get_lineage","description":"Champion @R#, per-iteration verdicts, levers tried/untried/failed on champion, converged flag, and user canvas view vs recommended working @R#."},{"name":"select_iteration","description":"Load an @R# onto the live canvas so mutate tools edit that iteration."},{"name":"add_entry_gate","description":"Add one AND entry gate. Args: side + condition JSON. You are the DSL translator. Invent the section JSON (condition/position/exit/cooldown). Browser applies onl"},{"name":"patch_entry_gate","description":"Replace one entry gate by id. Args: id + condition JSON. You are the DSL translator. Invent the section JSON (condition/position/exit/cooldown). Browser applies"},{"name":"delete_entry_gate","description":"Remove one entry gate by id (from get_experiment). Args: id only. Refuses when it would leave both long and short with zero gates."},{"name":"patch_position","description":"Full replace of rules.position. Args: position JSON. You are the DSL translator. Invent the section JSON (condition/position/exit/cooldown). Browser applies onl"},{"name":"patch_exit","description":"Full replace of rules.exit. Args: exit JSON. You are the DSL translator. Invent the section JSON (condition/position/exit/cooldown). Browser applies only — BenA"},{"name":"patch_cooldown","description":"Set root cooldownMinutes. Args: cooldownMinutes number|null. You are the DSL translator. Invent the section JSON (condition/position/exit/cooldown). Browser app"},{"name":"list_strategies","description":"Ids, @R# refs, and backtest headlines for strategies not currently open."},{"name":"list_backtests","description":"Open Lab @B# rows with window, assets, trade count, PnL, win rate, drawdown, and tape_stripped."},{"name":"get_backtest","description":"Cache-or-run one sim for an @R# + window, then return Score, trade count, PnL, drawdown, and bounded stats for one run. Numbers only — no BenAwf assessment LLM;"},{"name":"list_trades","description":"One page of fills (20 per page): trade_id, side, prices, PnL."},{"name":"get_experiment","description":"Prose summary plus rules JSON (entry gates with ids, position, exit, cooldownMinutes) and that iteration's @B# refs. Read before inventing translator-shaped mut"},{"name":"diff_dsl","description":"Structured rules diff between two @R# iterations (entry gates per side, position, exit, cooldown). Use before adopting an older iteration's levers onto a newer "},{"name":"get_market_context_by_date","description":"OHLCV and cited indicators around that date (engine lookback each side)."}],"toolCount":16,"toolsHash":"adf480d9b6836ac918aaab1d6a717f6b3861c80b2c79332055a206cfc041dd3d","serverName":"benawf","capabilities":["resources","prompts","tools"],"serverVersion":"1.0.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-07T23:25:19.355Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":66,"error":null,"detail":{"tools":[{"name":"list_iterations","description":"Open Lab @R# rows as the same dump as Live rules (parent, headline @B#, Long/Position/Exit)."},{"name":"get_lineage","description":"Champion @R#, per-iteration verdicts, levers tried/untried/failed on champion, converged flag, and user canvas view vs recommended working @R#."},{"name":"select_iteration","description":"Load an @R# onto the live canvas so mutate tools edit that iteration."},{"name":"add_entry_gate","description":"Add one AND entry gate. Args: side + condition JSON. You are the DSL translator. Invent the section JSON (condition/position/exit/cooldown). Browser applies onl"},{"name":"patch_entry_gate","description":"Replace one entry gate by id. Args: id + condition JSON. You are the DSL translator. Invent the section JSON (condition/position/exit/cooldown). Browser applies"},{"name":"delete_entry_gate","description":"Remove one entry gate by id (from get_experiment). Args: id only. Refuses when it would leave both long and short with zero gates."},{"name":"patch_position","description":"Full replace of rules.position. Args: position JSON. You are the DSL translator. Invent the section JSON (condition/position/exit/cooldown). Browser applies onl"},{"name":"patch_exit","description":"Full replace of rules.exit. Args: exit JSON. You are the DSL translator. Invent the section JSON (condition/position/exit/cooldown). Browser applies only — BenA"},{"name":"patch_cooldown","description":"Set root cooldownMinutes. Args: cooldownMinutes number|null. You are the DSL translator. Invent the section JSON (condition/position/exit/cooldown). Browser app"},{"name":"list_strategies","description":"Ids, @R# refs, and backtest headlines for strategies not currently open."},{"name":"list_backtests","description":"Open Lab @B# rows with window, assets, trade count, PnL, win rate, drawdown, and tape_stripped."},{"name":"get_backtest","description":"Cache-or-run one sim for an @R# + window, then return Score, trade count, PnL, drawdown, and bounded stats for one run. Numbers only — no BenAwf assessment LLM;"},{"name":"list_trades","description":"One page of fills (20 per page): trade_id, side, prices, PnL."},{"name":"get_experiment","description":"Prose summary plus rules JSON (entry gates with ids, position, exit, cooldownMinutes) and that iteration's @B# refs. Read before inventing translator-shaped mut"},{"name":"diff_dsl","description":"Structured rules diff between two @R# iterations (entry gates per side, position, exit, cooldown). Use before adopting an older iteration's levers onto a newer "},{"name":"get_market_context_by_date","description":"OHLCV and cited indicators around that date (engine lookback each side)."}],"toolCount":16,"toolsHash":"adf480d9b6836ac918aaab1d6a717f6b3861c80b2c79332055a206cfc041dd3d","serverName":"benawf","capabilities":["resources","prompts","tools"],"serverVersion":"1.0.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-07T17:28:10.818Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":65,"error":null,"detail":{"tools":[{"name":"list_iterations","description":"Open Lab @R# rows as the same dump as Live rules (parent, headline @B#, Long/Position/Exit)."},{"name":"get_lineage","description":"Champion @R#, per-iteration verdicts, levers tried/untried/failed on champion, converged flag, and user canvas view vs recommended working @R#."},{"name":"select_iteration","description":"Load an @R# onto the live canvas so mutate tools edit that iteration."},{"name":"add_entry_gate","description":"Add one AND entry gate. Args: side + condition JSON. You are the DSL translator. Invent the section JSON (condition/position/exit/cooldown). Browser applies onl"},{"name":"patch_entry_gate","description":"Replace one entry gate by id. Args: id + condition JSON. You are the DSL translator. Invent the section JSON (condition/position/exit/cooldown). Browser applies"},{"name":"delete_entry_gate","description":"Remove one entry gate by id (from get_experiment). Args: id only. Refuses when it would leave both long and short with zero gates."},{"name":"patch_position","description":"Full replace of rules.position. Args: position JSON. You are the DSL translator. Invent the section JSON (condition/position/exit/cooldown). Browser applies onl"},{"name":"patch_exit","description":"Full replace of rules.exit. Args: exit JSON. You are the DSL translator. Invent the section JSON (condition/position/exit/cooldown). Browser applies only — BenA"},{"name":"patch_cooldown","description":"Set root cooldownMinutes. Args: cooldownMinutes number|null. You are the DSL translator. Invent the section JSON (condition/position/exit/cooldown). Browser app"},{"name":"list_strategies","description":"Ids, @R# refs, and backtest headlines for strategies not currently open."},{"name":"list_backtests","description":"Open Lab @B# rows with window, assets, trade count, PnL, win rate, drawdown, and tape_stripped."},{"name":"get_backtest","description":"Cache-or-run one sim for an @R# + window, then return Score, trade count, PnL, drawdown, and bounded stats for one run. Numbers only — no BenAwf assessment LLM;"},{"name":"list_trades","description":"One page of fills (20 per page): trade_id, side, prices, PnL."},{"name":"get_experiment","description":"Prose summary plus rules JSON (entry gates with ids, position, exit, cooldownMinutes) and that iteration's @B# refs. Read before inventing translator-shaped mut"},{"name":"diff_dsl","description":"Structured rules diff between two @R# iterations (entry gates per side, position, exit, cooldown). Use before adopting an older iteration's levers onto a newer "},{"name":"get_market_context_by_date","description":"OHLCV and cited indicators around that date (engine lookback each side)."}],"toolCount":16,"toolsHash":"adf480d9b6836ac918aaab1d6a717f6b3861c80b2c79332055a206cfc041dd3d","serverName":"benawf","capabilities":["resources","prompts","tools"],"serverVersion":"1.0.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-07T10:48:50.868Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":57,"error":null,"detail":{"tools":[{"name":"list_iterations","description":"Open Lab @R# rows as the same dump as Live rules (parent, headline @B#, Long/Position/Exit)."},{"name":"get_lineage","description":"Champion @R#, per-iteration verdicts, levers tried/untried/failed on champion, converged flag, and user canvas view vs recommended working @R#."},{"name":"select_iteration","description":"Load an @R# onto the live canvas so mutate tools edit that iteration."},{"name":"add_entry_gate","description":"Add one AND entry gate. Args: side + condition JSON. You are the DSL translator. Invent the section JSON (condition/position/exit/cooldown). Browser applies onl"},{"name":"patch_entry_gate","description":"Replace one entry gate by id. Args: id + condition JSON. You are the DSL translator. Invent the section JSON (condition/position/exit/cooldown). Browser applies"},{"name":"delete_entry_gate","description":"Remove one entry gate by id (from get_experiment). Args: id only. Refuses when it would leave both long and short with zero gates."},{"name":"patch_position","description":"Full replace of rules.position. Args: position JSON. You are the DSL translator. Invent the section JSON (condition/position/exit/cooldown). Browser applies onl"},{"name":"patch_exit","description":"Full replace of rules.exit. Args: exit JSON. You are the DSL translator. Invent the section JSON (condition/position/exit/cooldown). Browser applies only — BenA"},{"name":"patch_cooldown","description":"Set root cooldownMinutes. Args: cooldownMinutes number|null. You are the DSL translator. Invent the section JSON (condition/position/exit/cooldown). Browser app"},{"name":"list_strategies","description":"Ids, @R# refs, and backtest headlines for strategies not currently open."},{"name":"list_backtests","description":"Open Lab @B# rows with window, assets, trade count, PnL, win rate, drawdown, and tape_stripped."},{"name":"get_backtest","description":"Cache-or-run one sim for an @R# + window, then return Score, trade count, PnL, drawdown, and bounded stats for one run. Numbers only — no BenAwf assessment LLM;"},{"name":"list_trades","description":"One page of fills (20 per page): trade_id, side, prices, PnL."},{"name":"get_experiment","description":"Prose summary plus rules JSON (entry gates with ids, position, exit, cooldownMinutes) and that iteration's @B# refs. Read before inventing translator-shaped mut"},{"name":"diff_dsl","description":"Structured rules diff between two @R# iterations (entry gates per side, position, exit, cooldown). Use before adopting an older iteration's levers onto a newer "},{"name":"get_market_context_by_date","description":"OHLCV and cited indicators around that date (engine lookback each side)."}],"toolCount":16,"toolsHash":"adf480d9b6836ac918aaab1d6a717f6b3861c80b2c79332055a206cfc041dd3d","serverName":"benawf","capabilities":["resources","prompts","tools"],"serverVersion":"1.0.0","protocolVersion":"2025-06-18"}}],"tools":[{"name":"list_iterations","description":"Open Lab @R# rows as the same dump as Live rules (parent, headline @B#, Long/Position/Exit)."},{"name":"get_lineage","description":"Champion @R#, per-iteration verdicts, levers tried/untried/failed on champion, converged flag, and user canvas view vs recommended working @R#."},{"name":"select_iteration","description":"Load an @R# onto the live canvas so mutate tools edit that iteration."},{"name":"add_entry_gate","description":"Add one AND entry gate. Args: side + condition JSON. You are the DSL translator. Invent the section JSON (condition/position/exit/cooldown). Browser applies onl"},{"name":"patch_entry_gate","description":"Replace one entry gate by id. Args: id + condition JSON. You are the DSL translator. Invent the section JSON (condition/position/exit/cooldown). Browser applies"},{"name":"delete_entry_gate","description":"Remove one entry gate by id (from get_experiment). Args: id only. Refuses when it would leave both long and short with zero gates."},{"name":"patch_position","description":"Full replace of rules.position. Args: position JSON. You are the DSL translator. Invent the section JSON (condition/position/exit/cooldown). Browser applies onl"},{"name":"patch_exit","description":"Full replace of rules.exit. Args: exit JSON. You are the DSL translator. Invent the section JSON (condition/position/exit/cooldown). Browser applies only — BenA"},{"name":"patch_cooldown","description":"Set root cooldownMinutes. Args: cooldownMinutes number|null. You are the DSL translator. Invent the section JSON (condition/position/exit/cooldown). Browser app"},{"name":"list_strategies","description":"Ids, @R# refs, and backtest headlines for strategies not currently open."},{"name":"list_backtests","description":"Open Lab @B# rows with window, assets, trade count, PnL, win rate, drawdown, and tape_stripped."},{"name":"get_backtest","description":"Cache-or-run one sim for an @R# + window, then return Score, trade count, PnL, drawdown, and bounded stats for one run. Numbers only — no BenAwf assessment LLM;"},{"name":"list_trades","description":"One page of fills (20 per page): trade_id, side, prices, PnL."},{"name":"get_experiment","description":"Prose summary plus rules JSON (entry gates with ids, position, exit, cooldownMinutes) and that iteration's @B# refs. Read before inventing translator-shaped mut"},{"name":"diff_dsl","description":"Structured rules diff between two @R# iterations (entry gates per side, position, exit, cooldown). Use before adopting an older iteration's levers onto a newer "},{"name":"get_market_context_by_date","description":"OHLCV and cited indicators around that date (engine lookback each side)."}],"package":null,"toolSurface":{"id":"ts_432u7dqmss2w","endpointId":"ep_5mjd53dh5m34","hash":"adf480d9b6836ac918aaab1d6a717f6b3861c80b2c79332055a206cfc041dd3d","toolCount":16,"serverName":"benawf","serverVersion":"1.0.0","protocolVersion":"2025-06-18","firstSeenAt":"2026-09-22T22:24:31.085Z","lastSeenAt":"2026-10-09T23:30:18.948Z","observations":63,"toolNames":["list_iterations","get_lineage","select_iteration","add_entry_gate","patch_entry_gate","delete_entry_gate","patch_position","patch_exit","patch_cooldown","list_strategies","list_backtests","get_backtest","list_trades","get_experiment","diff_dsl","get_market_context_by_date"],"distinctSurfaces":1},"endpointFacts":[{"id":"ep_5mjd53dh5m34","url":"https://api.benawf.com/mcp","type":"mcp_streamable_http","factsCheckedAt":"2026-10-07T17:28:10.823Z","auth":{"observedAt":"2026-10-07T17:28:10.891Z","authRequired":false,"scheme":null,"resourceMetadata":null,"authorizationServer":null,"conformance":{"dpop":false,"rfc8414":false,"rfc9728":false,"pkceS256":false,"clientIdMetadataDocument":false,"dynamicClientRegistration":false}},"tls":{"observedAt":"2026-10-07T17:28:10.904Z","protocol":"TLSv1.3","chainValid":true,"chainError":null,"hostMatches":true,"subject":"benawf.com","issuer":{"commonName":"YE1","organization":"Let's Encrypt"},"validFrom":"2026-09-05T23:04:11.000Z","validTo":"2026-12-04T23:04:10.000Z","daysToExpiry":55,"sanCount":2,"fingerprint256":"8D:D7:77:41:02:BE:EB:08:2B:1A:97:58:31:79:FC:B6:29:FE:3F:8A:EA:97:D7:0B:FB:18:42:2B:17:7C:63:A3"}}]},"verification":{"claimed":false,"claimedAt":null,"proofs":[]},"provenance":{"sources":[{"source":"mcp_registry","key":"com.benawf/mcp","url":"https://registry.modelcontextprotocol.io/v0/servers/com.benawf%2Fmcp","firstSeenAt":"2026-09-22T22:18:55.401Z","fetchedAt":"2026-10-09T04:22:13.369Z","normalizedAt":"2026-10-09T04:22:13.369Z"}]},"firstSeenAt":"2026-09-22T22:18:55.401Z","updatedAt":"2026-10-09T23:32:18.968Z"}