{"schemaVersion":1,"writable":true,"read":{"dashboard":"GET /api/freedom-fund?period=126","periods":[21,63,126,252],"ledger":"GET /api/freedom-fund?view=ledger","contract":"GET /api/freedom-fund?view=contract"},"write":{"endpoint":"POST /api/freedom-fund","authorization":"Bearer token from FF_AGENT_WRITE_TOKEN; server/agent environment only","contentType":"application/json","visibility":"Public records only. Never send credentials, account numbers, private identifiers, or private notes.","semantics":"Append-only. Stable IDs are idempotent; conflicting IDs or a second snapshot at the same strategy/mode/timestamp return 409. No order execution or approval."},"snapshot":{"required":["id","type=snapshot","visibility=public","mode=live|paper","strategyId","strategyName","asOf (ISO timestamp with timezone)","source {name,url}","currency=USD","equity (total account value)","flowSincePrevious (net deposit positive, withdrawal negative, at interval end)"],"optional":["cash","positions [{symbol,quantity,cost,mark}]"],"rules":"Long-only USD. Equity already includes actual fees. With positions, cash is required and equity must reconcile within $0.02. First snapshot establishes a baseline; it cannot establish a return. Use the same valuation timestamps for fair comparisons."},"decision":{"required":["id","type=decision","visibility=public","mode=live|paper","strategyId","strategyName","asOf","source {name,url}","action=hold|research|propose|reject|outcome","summary"],"optional":["thesis","counterEvidence","nextCheck"]},"storage":"Requires FF_AGENT_WRITE_TOKEN and a server-side KV REST URL/token. FF_KV_REST_API_* preferred; existing TASKS_KV_KV_REST_API_* or KV_REST_API_* are supported.","guide":"/docs/freedom-fund-dashboard.md"}