{"schemaVersion":"0.3.0-draft","generatedAt":"2026-06-15T17:12:54.740Z","mode":"implemented","tools":[{"name":"world.read","id":"world.read","status":"implemented","stability":"beta","description":"Read current SimpleFunctions world state without trading authority or account mutation.","compatNames":["world_read","get_world_state"],"authRequired":false,"permissions":["read.public","market_data","read"],"sideEffect":"none","costEffect":"api_cost","access":{"anonymousAllowed":false},"risk":[],"schema":"WorldState","http":{"method":"GET","path":"/api/agent/world","query":{"format":"json"}},"sdk":{"package":"@spfunctions/sdk","method":"sf.world.get()"},"agent":{"callable":true,"defaultEnabled":true,"name":"world.read","compatName":"world_read"},"traceEvents":["tool.call.started","tool.call.completed","tool.call.failed"],"replay":{"replayable":true,"match":"tool+inputHash"},"freshness":{"class":"snapshot","expectedMaxAgeMs":900000,"defaultPollMs":300000,"supportsCursor":false,"supportsSince":false,"replaySafe":true},"docs":{"cookbook":"docs/guides/world-read-sdk.mdx"}},{"name":"world.delta","id":"world.delta","status":"implemented","stability":"beta","compatNames":["world_delta","get_world_delta"],"authRequired":false,"permissions":["read.public","market_data","read"],"sideEffect":"none","costEffect":"api_cost","access":{"anonymousAllowed":false},"risk":[],"schema":"WorldDelta","http":{"method":"GET","path":"/api/agent/world/delta","query":{"format":"json","since":"1h"}},"sdk":{"package":"@spfunctions/sdk","method":"sf.world.delta()"},"agent":{"callable":true,"defaultEnabled":true,"name":"world.delta","compatName":"world_delta"},"traceEvents":["tool.call.started","tool.call.completed","tool.call.failed"],"replay":{"replayable":true,"match":"tool+inputHash"},"freshness":{"class":"delta","expectedMaxAgeMs":60000,"defaultPollMs":30000,"supportsCursor":false,"supportsSince":true,"replaySafe":true},"docs":{"cookbook":"docs/guides/sdk-overview.mdx"}},{"name":"markets.discover","id":"markets.discover","status":"implemented","stability":"beta","compatNames":["markets_discover","discover_markets"],"authRequired":false,"permissions":["read.public","market_data","research","read"],"sideEffect":"none","costEffect":"llm_cost","access":{"anonymousAllowed":false},"risk":[],"schema":"MarketsDiscoverResult","http":{"method":"GET","path":"/api/public/ideas"},"sdk":{"package":"@spfunctions/sdk","method":"sf.markets.discover()"},"agent":{"callable":true,"defaultEnabled":true,"name":"markets.discover","compatName":"markets_discover"},"traceEvents":["tool.call.started","tool.call.completed","tool.call.failed"],"replay":{"replayable":true,"match":"tool+inputHash"},"freshness":{"class":"llm","expectedMaxAgeMs":600000,"defaultPollMs":300000,"supportsCursor":false,"supportsSince":false,"replaySafe":true},"docs":{"cookbook":"docs/guides/market-research-sdk.mdx"}},{"name":"markets.search","id":"markets.search","status":"implemented","stability":"beta","compatNames":["markets_search","scan_markets"],"authRequired":false,"permissions":["read.public","market_data","research","read"],"sideEffect":"none","costEffect":"search_cost","access":{"anonymousAllowed":false},"risk":[],"schema":"MarketsSearchResult","http":{"method":"GET","path":"/api/public/scan"},"sdk":{"package":"@spfunctions/sdk","method":"sf.markets.search()"},"agent":{"callable":true,"defaultEnabled":true,"name":"markets.search","compatName":"markets_search"},"traceEvents":["tool.call.started","tool.call.completed","tool.call.failed"],"replay":{"replayable":true,"match":"tool+inputHash"},"freshness":{"class":"search","expectedMaxAgeMs":300000,"defaultPollMs":60000,"supportsCursor":false,"supportsSince":false,"replaySafe":true},"docs":{"cookbook":"docs/guides/market-research-sdk.mdx"}},{"name":"market.inspect","id":"market.inspect","status":"implemented","stability":"beta","compatNames":["market_inspect","inspect_ticker"],"authRequired":false,"permissions":["read.public","market_data","research","read"],"sideEffect":"none","costEffect":"venue_request_cost","access":{"anonymousAllowed":false},"risk":[],"schema":"MarketInspection","http":{"method":"GET","path":"/api/agent/inspect/{ticker}","query":{"format":"json","depth":true}},"sdk":{"package":"@spfunctions/sdk","method":"sf.markets.get(ticker)"},"agent":{"callable":true,"defaultEnabled":true,"name":"market.inspect","compatName":"market_inspect"},"traceEvents":["tool.call.started","tool.call.completed","tool.call.failed"],"replay":{"replayable":true,"match":"tool+inputHash"},"freshness":{"class":"provider","expectedMaxAgeMs":30000,"defaultPollMs":30000,"supportsCursor":false,"supportsSince":false,"replaySafe":true},"docs":{"cookbook":"docs/guides/market-research-sdk.mdx"}},{"name":"market.history","id":"market.history","status":"implemented","stability":"beta","compatNames":["market_history","get_market_history"],"authRequired":false,"permissions":["read.public","market_data","read"],"sideEffect":"none","costEffect":"api_cost","access":{"anonymousAllowed":false},"risk":[],"schema":"MarketHistory","http":{"method":"GET","path":"/api/public/market/{ticker}/history"},"sdk":{"package":"@spfunctions/sdk","method":"sf.markets.history(ticker)"},"agent":{"callable":true,"defaultEnabled":true,"name":"market.history","compatName":"market_history"},"traceEvents":["tool.call.started","tool.call.completed","tool.call.failed"],"replay":{"replayable":true,"match":"tool+inputHash"},"freshness":{"class":"snapshot","expectedMaxAgeMs":300000,"defaultPollMs":300000,"supportsCursor":false,"supportsSince":false,"replaySafe":true},"docs":{"cookbook":"docs/guides/market-research-sdk.mdx"}},{"name":"market.candles","id":"market.candles","status":"implemented","stability":"beta","description":"Read OHLCV candle/K-line history for one market and timeframe for charting, momentum, volatility, and short-term market screening.","compatNames":["market_candles","get_market_candles","get_klines"],"authRequired":false,"permissions":["read.public","market_data","read"],"sideEffect":"none","costEffect":"venue_request_cost","access":{"anonymousAllowed":false},"risk":[],"schema":"MarketCandlesResult","http":{"method":"GET","path":"/api/public/market/{ticker}/candles","query":{"venue":"kalshi|polymarket","timeframe":"1m","limit":500}},"sdk":{"package":"@spfunctions/sdk","method":"sf.markets.candles(ticker)"},"agent":{"callable":true,"defaultEnabled":true,"name":"market.candles","compatName":"market_candles"},"traceEvents":["tool.call.started","tool.call.completed","tool.call.failed"],"replay":{"replayable":true,"match":"tool+inputHash"},"freshness":{"class":"provider","expectedMaxAgeMs":5000,"defaultPollMs":5000,"supportsCursor":false,"supportsSince":false,"replaySafe":true},"docs":{"cookbook":"docs/guides/market-research-sdk.mdx"}},{"name":"markets.screen","id":"markets.screen","status":"implemented","stability":"beta","description":"Screen the latest prediction-market universe by indicator and microstructure filters.","compatNames":["screen_markets","market_screen"],"authRequired":false,"permissions":["read.public","market_data","research","read"],"sideEffect":"none","costEffect":"api_cost","access":{"anonymousAllowed":false},"risk":[],"schema":"MarketsScreenResult","http":{"method":"GET","path":"/api/public/screen"},"sdk":{"package":"@spfunctions/sdk","method":"sf.intelligence.screen()"},"agent":{"callable":true,"defaultEnabled":true,"name":"markets.screen","compatName":"screen_markets"},"traceEvents":["tool.call.started","tool.call.completed","tool.call.failed"],"replay":{"replayable":true,"match":"tool+inputHash"},"freshness":{"class":"snapshot","expectedMaxAgeMs":300000,"defaultPollMs":300000,"supportsCursor":false,"supportsSince":false,"replaySafe":true},"docs":{"cookbook":"docs/guides/market-research-sdk.mdx"}},{"name":"markets.screen.tickers","id":"markets.screen.tickers","status":"implemented","stability":"beta","description":"Compute indicator bundles for an explicit ticker list without scanning the full universe.","compatNames":["screen_by_tickers"],"authRequired":false,"permissions":["read.public","market_data","research","read"],"sideEffect":"none","costEffect":"api_cost","access":{"anonymousAllowed":false},"risk":[],"schema":"MarketsScreenResult","http":{"method":"GET","path":"/api/public/screen-by-tickers"},"sdk":{"package":"@spfunctions/sdk","method":"sf.intelligence.screenByTickers()"},"agent":{"callable":true,"defaultEnabled":true,"name":"markets.screen.tickers","compatName":"screen_by_tickers"},"traceEvents":["tool.call.started","tool.call.completed","tool.call.failed"],"replay":{"replayable":true,"match":"tool+inputHash"},"freshness":{"class":"snapshot","expectedMaxAgeMs":300000,"defaultPollMs":300000,"supportsCursor":false,"supportsSince":false,"replaySafe":true},"docs":{"cookbook":"docs/guides/market-research-sdk.mdx"}},{"name":"regime.scan","id":"regime.scan","status":"implemented","stability":"beta","description":"Scan markets by adverse-selection regime, classifier signal, edge, and venue filters.","compatNames":["get_regime_scan","regime_scan"],"authRequired":false,"permissions":["read.public","market_data","research","read"],"sideEffect":"none","costEffect":"api_cost","access":{"anonymousAllowed":false},"risk":[],"schema":"RegimeScanResult","http":{"method":"GET","path":"/api/public/regime/scan"},"sdk":{"package":"@spfunctions/sdk","method":"sf.intelligence.regime()"},"agent":{"callable":true,"defaultEnabled":true,"name":"regime.scan","compatName":"regime_scan"},"traceEvents":["tool.call.started","tool.call.completed","tool.call.failed"],"replay":{"replayable":true,"match":"tool+inputHash"},"freshness":{"class":"snapshot","expectedMaxAgeMs":300000,"defaultPollMs":300000,"supportsCursor":false,"supportsSince":false,"replaySafe":true},"docs":{"cookbook":"docs/guides/market-research-sdk.mdx"}},{"name":"calendar.list","id":"calendar.list","status":"implemented","stability":"beta","description":"Read upcoming market-relevant milestones and contract expirations.","compatNames":["get_calendar"],"authRequired":false,"permissions":["read.public","market_data","research","read"],"sideEffect":"none","costEffect":"venue_request_cost","access":{"anonymousAllowed":false},"risk":[],"schema":"CalendarListResult","http":{"method":"GET","path":"/api/public/calendar"},"sdk":{"package":"@spfunctions/sdk","method":"sf.intelligence.calendar()"},"agent":{"callable":true,"defaultEnabled":true,"name":"calendar.list","compatName":"calendar_list"},"traceEvents":["tool.call.started","tool.call.completed","tool.call.failed"],"replay":{"replayable":true,"match":"tool+inputHash"},"freshness":{"class":"provider","expectedMaxAgeMs":30000,"defaultPollMs":30000,"supportsCursor":false,"supportsSince":false,"replaySafe":true},"docs":{"cookbook":"docs/guides/econ-gov-sdk.mdx"}},{"name":"index.current","id":"index.current","status":"implemented","stability":"beta","description":"Read the latest SimpleFunctions market-stress index snapshot.","compatNames":["get_market_index"],"authRequired":false,"permissions":["read.public","market_data","read"],"sideEffect":"none","costEffect":"api_cost","access":{"anonymousAllowed":false},"risk":[],"schema":"IndexSnapshot","http":{"method":"GET","path":"/api/public/index"},"sdk":{"package":"@spfunctions/sdk","method":"sf.intelligence.index()"},"agent":{"callable":true,"defaultEnabled":true,"name":"index.current","compatName":"index_current"},"traceEvents":["tool.call.started","tool.call.completed","tool.call.failed"],"replay":{"replayable":true,"match":"tool+inputHash"},"freshness":{"class":"snapshot","expectedMaxAgeMs":300000,"defaultPollMs":300000,"supportsCursor":false,"supportsSince":false,"replaySafe":true},"docs":{"cookbook":"docs/guides/world-read-sdk.mdx"}},{"name":"index.history","id":"index.history","status":"implemented","stability":"beta","description":"Read SimpleFunctions market-stress index history.","compatNames":["get_index_history"],"authRequired":false,"permissions":["read.public","market_data","read"],"sideEffect":"none","costEffect":"api_cost","access":{"anonymousAllowed":false},"risk":[],"schema":"IndexHistoryResult","http":{"method":"GET","path":"/api/public/index/history"},"sdk":{"package":"@spfunctions/sdk","method":"sf.intelligence.indexHistory()"},"agent":{"callable":true,"defaultEnabled":true,"name":"index.history","compatName":"index_history"},"traceEvents":["tool.call.started","tool.call.completed","tool.call.failed"],"replay":{"replayable":true,"match":"tool+inputHash"},"freshness":{"class":"snapshot","expectedMaxAgeMs":300000,"defaultPollMs":300000,"supportsCursor":false,"supportsSince":false,"replaySafe":true},"docs":{"cookbook":"docs/guides/world-read-sdk.mdx"}},{"name":"contagion.scan","id":"contagion.scan","status":"implemented","stability":"beta","description":"Detect connected markets that lag a triggering market move.","compatNames":["get_contagion"],"authRequired":false,"permissions":["read.public","market_data","research","read"],"sideEffect":"none","costEffect":"api_cost","access":{"anonymousAllowed":false},"risk":[],"schema":"ContagionScanResult","http":{"method":"GET","path":"/api/public/contagion"},"sdk":{"package":"@spfunctions/sdk","method":"sf.intelligence.contagion()"},"agent":{"callable":true,"defaultEnabled":true,"name":"contagion.scan","compatName":"contagion_scan"},"traceEvents":["tool.call.started","tool.call.completed","tool.call.failed"],"replay":{"replayable":true,"match":"tool+inputHash"},"freshness":{"class":"snapshot","expectedMaxAgeMs":300000,"defaultPollMs":300000,"supportsCursor":false,"supportsSince":false,"replaySafe":true},"docs":{"cookbook":"docs/guides/market-research-sdk.mdx"}},{"name":"crossvenue.pairs","id":"crossvenue.pairs","status":"implemented","stability":"beta","description":"Read cross-venue prediction-market pair matches and arbitrage-ready filters.","compatNames":["get_cross_venue_pairs"],"authRequired":false,"permissions":["read.public","market_data","research","read"],"sideEffect":"none","costEffect":"api_cost","access":{"anonymousAllowed":false},"risk":[],"schema":"CrossVenuePairsResult","http":{"method":"GET","path":"/api/public/cross-venue/pairs"},"sdk":{"package":"@spfunctions/sdk","method":"sf.intelligence.crossVenuePairs()"},"agent":{"callable":true,"defaultEnabled":true,"name":"crossvenue.pairs","compatName":"cross_venue_pairs"},"traceEvents":["tool.call.started","tool.call.completed","tool.call.failed"],"replay":{"replayable":true,"match":"tool+inputHash"},"freshness":{"class":"snapshot","expectedMaxAgeMs":300000,"defaultPollMs":300000,"supportsCursor":false,"supportsSince":false,"replaySafe":true},"docs":{"cookbook":"docs/guides/market-research-sdk.mdx"}},{"name":"crossvenue.stats","id":"crossvenue.stats","status":"implemented","stability":"beta","description":"Read cross-venue matching coverage and confidence statistics.","compatNames":["get_cross_venue_stats"],"authRequired":false,"permissions":["read.public","market_data","read"],"sideEffect":"none","costEffect":"api_cost","access":{"anonymousAllowed":false},"risk":[],"schema":"CrossVenueStatsResult","http":{"method":"GET","path":"/api/public/cross-venue/stats"},"sdk":{"package":"@spfunctions/sdk","method":"sf.intelligence.crossVenueStats()"},"agent":{"callable":true,"defaultEnabled":true,"name":"crossvenue.stats","compatName":"cross_venue_stats"},"traceEvents":["tool.call.started","tool.call.completed","tool.call.failed"],"replay":{"replayable":true,"match":"tool+inputHash"},"freshness":{"class":"snapshot","expectedMaxAgeMs":300000,"defaultPollMs":300000,"supportsCursor":false,"supportsSince":false,"replaySafe":true},"docs":{"cookbook":"docs/guides/market-research-sdk.mdx"}},{"name":"yieldcurves.list","id":"yieldcurves.list","status":"implemented","stability":"beta","description":"Read calendar-tenor prediction-market curves across venue event families.","compatNames":["get_yield_curves"],"authRequired":false,"permissions":["read.public","market_data","research","read"],"sideEffect":"none","costEffect":"api_cost","access":{"anonymousAllowed":false},"risk":[],"schema":"YieldCurvesListResult","http":{"method":"GET","path":"/api/public/yield-curves"},"sdk":{"package":"@spfunctions/sdk","method":"sf.intelligence.yieldCurves()"},"agent":{"callable":true,"defaultEnabled":true,"name":"yieldcurves.list","compatName":"yield_curves_list"},"traceEvents":["tool.call.started","tool.call.completed","tool.call.failed"],"replay":{"replayable":true,"match":"tool+inputHash"},"freshness":{"class":"snapshot","expectedMaxAgeMs":300000,"defaultPollMs":300000,"supportsCursor":false,"supportsSince":false,"replaySafe":true},"docs":{"cookbook":"docs/guides/market-research-sdk.mdx"}},{"name":"calibration.summary","id":"calibration.summary","status":"implemented","stability":"beta","description":"Read prediction calibration metrics for marketwide or SimpleFunctions thesis history.","compatNames":["get_calibration"],"authRequired":false,"permissions":["read.public","market_data","research","read"],"sideEffect":"none","costEffect":"api_cost","access":{"anonymousAllowed":false},"risk":[],"schema":"CalibrationSummaryResult","http":{"method":"GET","path":"/api/public/calibration"},"sdk":{"package":"@spfunctions/sdk","method":"sf.intelligence.calibration()"},"agent":{"callable":true,"defaultEnabled":true,"name":"calibration.summary","compatName":"calibration_summary"},"traceEvents":["tool.call.started","tool.call.completed","tool.call.failed"],"replay":{"replayable":true,"match":"tool+inputHash"},"freshness":{"class":"snapshot","expectedMaxAgeMs":300000,"defaultPollMs":300000,"supportsCursor":false,"supportsSince":false,"replaySafe":true},"docs":{"cookbook":"docs/guides/market-research-sdk.mdx"}},{"name":"query.ask","id":"query.ask","status":"implemented","stability":"beta","compatNames":["query_ask","query"],"authRequired":false,"permissions":["read.public","market_data","research","read"],"sideEffect":"none","costEffect":"llm_cost","access":{"anonymousAllowed":false},"risk":[],"schema":"QueryAnswer","http":{"method":"GET","path":"/api/public/query"},"sdk":{"package":"@spfunctions/sdk","method":"sf.query.ask()"},"agent":{"callable":true,"defaultEnabled":true,"name":"query.ask","compatName":"query_ask"},"traceEvents":["tool.call.started","tool.call.completed","tool.call.failed"],"replay":{"replayable":true,"match":"tool+inputHash"},"freshness":{"class":"llm","expectedMaxAgeMs":600000,"defaultPollMs":300000,"supportsCursor":false,"supportsSince":false,"replaySafe":true},"docs":{"cookbook":"docs/guides/market-research-sdk.mdx"}},{"name":"econ.query","id":"econ.query","status":"implemented","stability":"beta","compatNames":["econ_query","query_econ"],"authRequired":false,"permissions":["read.public","market_data","research","read"],"sideEffect":"none","costEffect":"search_cost","access":{"anonymousAllowed":false},"risk":[],"schema":"EconQueryResult","http":{"method":"GET","path":"/api/public/query-econ"},"sdk":{"package":"@spfunctions/sdk","method":"sf.econ.query()"},"agent":{"callable":true,"defaultEnabled":true,"name":"econ.query","compatName":"econ_query"},"traceEvents":["tool.call.started","tool.call.completed","tool.call.failed"],"replay":{"replayable":true,"match":"tool+inputHash"},"freshness":{"class":"search","expectedMaxAgeMs":300000,"defaultPollMs":60000,"supportsCursor":false,"supportsSince":false,"replaySafe":true},"docs":{"cookbook":"docs/guides/econ-gov-sdk.mdx"}},{"name":"gov.query","id":"gov.query","status":"implemented","stability":"beta","compatNames":["gov_query","query_gov"],"authRequired":false,"permissions":["read.public","market_data","research","read"],"sideEffect":"none","costEffect":"llm_cost","access":{"anonymousAllowed":false},"risk":[],"schema":"GovQueryResult","http":{"method":"GET","path":"/api/public/query-gov"},"sdk":{"package":"@spfunctions/sdk","method":"sf.gov.query()"},"agent":{"callable":true,"defaultEnabled":true,"name":"gov.query","compatName":"gov_query"},"traceEvents":["tool.call.started","tool.call.completed","tool.call.failed"],"replay":{"replayable":true,"match":"tool+inputHash"},"freshness":{"class":"llm","expectedMaxAgeMs":600000,"defaultPollMs":300000,"supportsCursor":false,"supportsSince":false,"replaySafe":true},"docs":{"cookbook":"docs/guides/econ-gov-sdk.mdx"}},{"name":"manifest.list","id":"manifest.list","status":"implemented","stability":"beta","description":"Read the strict SDK/Agent contract tool manifest with canonical dotted names.","compatNames":["manifest_list","tools.list"],"authRequired":false,"permissions":["read.public","read"],"sideEffect":"none","costEffect":"none","access":{"anonymousAllowed":true,"anonymousReason":"strict_manifest_bootstrap"},"risk":[],"schema":"ContractToolManifest","http":{"method":"GET","path":"/api/contracts/tools"},"sdk":{"package":"@spfunctions/sdk","method":"sf.manifest.list()"},"agent":{"callable":true,"defaultEnabled":true,"name":"manifest.list","compatName":"manifest_list"},"traceEvents":["tool.call.started","tool.call.completed","tool.call.failed"],"replay":{"replayable":true,"match":"tool+inputHash"},"freshness":{"class":"static","supportsCursor":false,"supportsSince":false,"replaySafe":true},"docs":{"cookbook":"docs/guides/agent-contract-tools.mdx"}},{"name":"manifest.get","id":"manifest.get","status":"implemented","stability":"beta","description":"Read one strict SDK/Agent contract tool by canonical dotted name.","compatNames":["manifest_get","tools.get"],"authRequired":false,"permissions":["read.public","read"],"sideEffect":"none","costEffect":"none","access":{"anonymousAllowed":true,"anonymousReason":"strict_manifest_bootstrap"},"risk":[],"schema":"ContractTool","http":{"method":"GET","path":"/api/contracts/tools"},"sdk":{"package":"@spfunctions/sdk","method":"sf.manifest.get(name)"},"agent":{"callable":true,"defaultEnabled":true,"name":"manifest.get","compatName":"manifest_get"},"traceEvents":["tool.call.started","tool.call.completed","tool.call.failed"],"replay":{"replayable":true,"match":"tool+inputHash"},"freshness":{"class":"static","supportsCursor":false,"supportsSince":false,"replaySafe":true},"docs":{"cookbook":"docs/guides/agent-contract-tools.mdx"}},{"name":"theses.list","id":"theses.list","status":"implemented","stability":"beta","compatNames":["theses_list"],"authRequired":true,"permissions":["read.user","user_data","read"],"sideEffect":"none","costEffect":"api_cost","access":{"anonymousAllowed":false},"risk":[],"schema":"Thesis[]","http":{"method":"GET","path":"/api/thesis"},"sdk":{"package":"@spfunctions/sdk","method":"sf.theses.list()"},"agent":{"callable":true,"defaultEnabled":true,"name":"theses.list","compatName":"theses_list","defaultExposure":"auth-gated"},"traceEvents":["tool.call.started","tool.call.completed","tool.call.failed"],"replay":{"replayable":true,"match":"tool+inputHash"},"freshness":{"class":"user_state","expectedMaxAgeMs":60000,"defaultPollMs":60000,"supportsCursor":false,"supportsSince":false,"replaySafe":true},"docs":{"cookbook":"docs/guides/authenticated-read-sdk.mdx"}},{"name":"theses.get","id":"theses.get","status":"implemented","stability":"beta","compatNames":["theses_get"],"authRequired":true,"permissions":["read.user","user_data","read"],"sideEffect":"none","costEffect":"api_cost","access":{"anonymousAllowed":false},"risk":[],"schema":"Thesis","http":{"method":"GET","path":"/api/thesis/{id}"},"sdk":{"package":"@spfunctions/sdk","method":"sf.theses.get(id)"},"agent":{"callable":true,"defaultEnabled":true,"name":"theses.get","compatName":"theses_get","defaultExposure":"auth-gated"},"traceEvents":["tool.call.started","tool.call.completed","tool.call.failed"],"replay":{"replayable":true,"match":"tool+inputHash"},"freshness":{"class":"user_state","expectedMaxAgeMs":60000,"defaultPollMs":60000,"supportsCursor":false,"supportsSince":false,"replaySafe":true},"docs":{"cookbook":"docs/guides/authenticated-read-sdk.mdx"}},{"name":"theses.update","id":"theses.update","status":"implemented","stability":"beta","compatNames":["theses_update"],"authRequired":true,"permissions":["write.user","write"],"sideEffect":"user_write","costEffect":"api_cost","access":{"anonymousAllowed":false},"risk":[],"schema":"Thesis","http":{"method":"PATCH","path":"/api/thesis/{id}"},"sdk":{"package":"@spfunctions/sdk","method":"sf.theses.update(id)"},"agent":{"callable":true,"defaultEnabled":true,"name":"theses.update","compatName":"theses_update","defaultExposure":"policy-gated"},"traceEvents":["tool.call.started","tool.call.completed","tool.call.failed"],"replay":{"replayable":false,"match":"tool+inputHash"},"freshness":{"class":"snapshot","expectedMaxAgeMs":300000,"defaultPollMs":300000,"supportsCursor":false,"supportsSince":false,"replaySafe":false}},{"name":"theses.delete","id":"theses.delete","status":"implemented","stability":"beta","compatNames":["theses_delete"],"authRequired":true,"permissions":["write.user","write"],"sideEffect":"user_write","costEffect":"api_cost","access":{"anonymousAllowed":false},"risk":[],"schema":"ThesisDeleteResult","http":{"method":"DELETE","path":"/api/thesis/{id}"},"sdk":{"package":"@spfunctions/sdk","method":"sf.theses.delete(id)"},"agent":{"callable":true,"defaultEnabled":true,"name":"theses.delete","compatName":"theses_delete","defaultExposure":"policy-gated"},"traceEvents":["tool.call.started","tool.call.completed","tool.call.failed"],"replay":{"replayable":false,"match":"tool+inputHash"},"freshness":{"class":"snapshot","expectedMaxAgeMs":300000,"defaultPollMs":300000,"supportsCursor":false,"supportsSince":false,"replaySafe":false}},{"name":"theses.context","id":"theses.context","status":"implemented","stability":"beta","compatNames":["theses_context"],"authRequired":true,"permissions":["read.user","user_data","read"],"sideEffect":"none","costEffect":"api_cost","access":{"anonymousAllowed":false},"risk":[],"schema":"ThesisContext","http":{"method":"GET","path":"/api/thesis/{id}/context"},"sdk":{"package":"@spfunctions/sdk","method":"sf.theses.context(id)"},"agent":{"callable":true,"defaultEnabled":true,"name":"theses.context","compatName":"theses_context","defaultExposure":"auth-gated"},"traceEvents":["tool.call.started","tool.call.completed","tool.call.failed"],"replay":{"replayable":true,"match":"tool+inputHash"},"freshness":{"class":"user_state","expectedMaxAgeMs":60000,"defaultPollMs":60000,"supportsCursor":false,"supportsSince":false,"replaySafe":true}},{"name":"theses.changes","id":"theses.changes","status":"implemented","stability":"beta","compatNames":["theses_changes"],"authRequired":true,"permissions":["read.user","user_data","read"],"sideEffect":"none","costEffect":"api_cost","access":{"anonymousAllowed":false},"risk":[],"schema":"ThesisChanges","http":{"method":"GET","path":"/api/thesis/{id}/changes","query":{"since":"ISO timestamp"}},"sdk":{"package":"@spfunctions/sdk","method":"sf.theses.changes(id)"},"agent":{"callable":true,"defaultEnabled":true,"name":"theses.changes","compatName":"theses_changes","defaultExposure":"auth-gated"},"traceEvents":["tool.call.started","tool.call.completed","tool.call.failed"],"replay":{"replayable":true,"match":"tool+inputHash"},"freshness":{"class":"delta","expectedMaxAgeMs":60000,"defaultPollMs":60000,"supportsCursor":false,"supportsSince":true,"replaySafe":true}},{"name":"theses.heartbeat.get","id":"theses.heartbeat.get","status":"implemented","stability":"beta","compatNames":["theses_heartbeat_get"],"authRequired":true,"permissions":["read.user","user_data","read"],"sideEffect":"none","costEffect":"api_cost","access":{"anonymousAllowed":false},"risk":[],"schema":"ThesisHeartbeat","http":{"method":"GET","path":"/api/thesis/{id}/heartbeat"},"sdk":{"package":"@spfunctions/sdk","method":"sf.theses.heartbeat.get(id)"},"agent":{"callable":true,"defaultEnabled":true,"name":"theses.heartbeat.get","compatName":"theses_heartbeat_get","defaultExposure":"auth-gated"},"traceEvents":["tool.call.started","tool.call.completed","tool.call.failed"],"replay":{"replayable":true,"match":"tool+inputHash"},"freshness":{"class":"user_state","expectedMaxAgeMs":60000,"defaultPollMs":60000,"supportsCursor":false,"supportsSince":false,"replaySafe":true}},{"name":"theses.heartbeat.update","id":"theses.heartbeat.update","status":"implemented","stability":"beta","compatNames":["theses_heartbeat_update"],"authRequired":true,"permissions":["write.user","write"],"sideEffect":"user_write","costEffect":"api_cost","access":{"anonymousAllowed":false},"risk":[],"schema":"ThesisHeartbeat","http":{"method":"PATCH","path":"/api/thesis/{id}/heartbeat"},"sdk":{"package":"@spfunctions/sdk","method":"sf.theses.heartbeat.update(id)"},"agent":{"callable":true,"defaultEnabled":true,"name":"theses.heartbeat.update","compatName":"theses_heartbeat_update","defaultExposure":"policy-gated"},"traceEvents":["tool.call.started","tool.call.completed","tool.call.failed"],"replay":{"replayable":false,"match":"tool+inputHash"},"freshness":{"class":"snapshot","expectedMaxAgeMs":300000,"defaultPollMs":300000,"supportsCursor":false,"supportsSince":false,"replaySafe":false}},{"name":"theses.nodes.update","id":"theses.nodes.update","status":"implemented","stability":"beta","compatNames":["theses_nodes_update"],"authRequired":true,"permissions":["write.user","write"],"sideEffect":"user_write","costEffect":"api_cost","access":{"anonymousAllowed":false},"risk":[],"schema":"ThesisNodeUpdateResult","http":{"method":"POST","path":"/api/thesis/{id}/nodes"},"sdk":{"package":"@spfunctions/sdk","method":"sf.theses.nodes.update(id)"},"agent":{"callable":true,"defaultEnabled":true,"name":"theses.nodes.update","compatName":"theses_nodes_update","defaultExposure":"policy-gated"},"traceEvents":["tool.call.started","tool.call.completed","tool.call.failed"],"replay":{"replayable":false,"match":"tool+inputHash"},"freshness":{"class":"snapshot","expectedMaxAgeMs":300000,"defaultPollMs":300000,"supportsCursor":false,"supportsSince":false,"replaySafe":false}},{"name":"theses.positions.list","id":"theses.positions.list","status":"implemented","stability":"beta","compatNames":["theses_positions_list"],"authRequired":true,"permissions":["read.user","user_data","read"],"sideEffect":"none","costEffect":"api_cost","access":{"anonymousAllowed":false},"risk":[],"schema":"ThesisPosition[]","http":{"method":"GET","path":"/api/thesis/{id}/positions"},"sdk":{"package":"@spfunctions/sdk","method":"sf.theses.positions.list(id)"},"agent":{"callable":true,"defaultEnabled":true,"name":"theses.positions.list","compatName":"theses_positions_list","defaultExposure":"auth-gated"},"traceEvents":["tool.call.started","tool.call.completed","tool.call.failed"],"replay":{"replayable":true,"match":"tool+inputHash"},"freshness":{"class":"user_state","expectedMaxAgeMs":60000,"defaultPollMs":60000,"supportsCursor":false,"supportsSince":false,"replaySafe":true}},{"name":"theses.positions.create","id":"theses.positions.create","status":"implemented","stability":"beta","compatNames":["theses_positions_create"],"authRequired":true,"permissions":["write.user","write"],"sideEffect":"user_write","costEffect":"api_cost","access":{"anonymousAllowed":false},"risk":[],"schema":"ThesisPosition","http":{"method":"POST","path":"/api/thesis/{id}/positions"},"sdk":{"package":"@spfunctions/sdk","method":"sf.theses.positions.create(id)"},"agent":{"callable":true,"defaultEnabled":true,"name":"theses.positions.create","compatName":"theses_positions_create","defaultExposure":"policy-gated"},"traceEvents":["tool.call.started","tool.call.completed","tool.call.failed"],"replay":{"replayable":false,"match":"tool+inputHash"},"freshness":{"class":"snapshot","expectedMaxAgeMs":300000,"defaultPollMs":300000,"supportsCursor":false,"supportsSince":false,"replaySafe":false}},{"name":"theses.positions.update","id":"theses.positions.update","status":"implemented","stability":"beta","compatNames":["theses_positions_update"],"authRequired":true,"permissions":["write.user","write"],"sideEffect":"user_write","costEffect":"api_cost","access":{"anonymousAllowed":false},"risk":[],"schema":"ThesisPosition","http":{"method":"PATCH","path":"/api/thesis/{id}/positions/{positionId}"},"sdk":{"package":"@spfunctions/sdk","method":"sf.theses.positions.update(id, positionId)"},"agent":{"callable":true,"defaultEnabled":true,"name":"theses.positions.update","compatName":"theses_positions_update","defaultExposure":"policy-gated"},"traceEvents":["tool.call.started","tool.call.completed","tool.call.failed"],"replay":{"replayable":false,"match":"tool+inputHash"},"freshness":{"class":"snapshot","expectedMaxAgeMs":300000,"defaultPollMs":300000,"supportsCursor":false,"supportsSince":false,"replaySafe":false}},{"name":"theses.positions.delete","id":"theses.positions.delete","status":"implemented","stability":"beta","compatNames":["theses_positions_delete"],"authRequired":true,"permissions":["write.user","write"],"sideEffect":"user_write","costEffect":"api_cost","access":{"anonymousAllowed":false},"risk":[],"schema":"ThesisPositionMutation","http":{"method":"DELETE","path":"/api/thesis/{id}/positions/{positionId}"},"sdk":{"package":"@spfunctions/sdk","method":"sf.theses.positions.delete(id, positionId)"},"agent":{"callable":true,"defaultEnabled":true,"name":"theses.positions.delete","compatName":"theses_positions_delete","defaultExposure":"policy-gated"},"traceEvents":["tool.call.started","tool.call.completed","tool.call.failed"],"replay":{"replayable":false,"match":"tool+inputHash"},"freshness":{"class":"snapshot","expectedMaxAgeMs":300000,"defaultPollMs":300000,"supportsCursor":false,"supportsSince":false,"replaySafe":false}},{"name":"theses.strategies.list","id":"theses.strategies.list","status":"implemented","stability":"beta","compatNames":["theses_strategies_list"],"authRequired":true,"permissions":["read.user","user_data","read"],"sideEffect":"none","costEffect":"api_cost","access":{"anonymousAllowed":false},"risk":[],"schema":"ThesisStrategy[]","http":{"method":"GET","path":"/api/thesis/{id}/strategies"},"sdk":{"package":"@spfunctions/sdk","method":"sf.theses.strategies.list(id)"},"agent":{"callable":true,"defaultEnabled":true,"name":"theses.strategies.list","compatName":"theses_strategies_list","defaultExposure":"auth-gated"},"traceEvents":["tool.call.started","tool.call.completed","tool.call.failed"],"replay":{"replayable":true,"match":"tool+inputHash"},"freshness":{"class":"user_state","expectedMaxAgeMs":60000,"defaultPollMs":60000,"supportsCursor":false,"supportsSince":false,"replaySafe":true}},{"name":"theses.strategies.create","id":"theses.strategies.create","status":"implemented","stability":"beta","compatNames":["theses_strategies_create"],"authRequired":true,"permissions":["write.user","write"],"sideEffect":"user_write","costEffect":"api_cost","access":{"anonymousAllowed":false},"risk":[],"schema":"ThesisStrategy","http":{"method":"POST","path":"/api/thesis/{id}/strategies"},"sdk":{"package":"@spfunctions/sdk","method":"sf.theses.strategies.create(id)"},"agent":{"callable":true,"defaultEnabled":true,"name":"theses.strategies.create","compatName":"theses_strategies_create","defaultExposure":"policy-gated"},"traceEvents":["tool.call.started","tool.call.completed","tool.call.failed"],"replay":{"replayable":false,"match":"tool+inputHash"},"freshness":{"class":"snapshot","expectedMaxAgeMs":300000,"defaultPollMs":300000,"supportsCursor":false,"supportsSince":false,"replaySafe":false}},{"name":"theses.strategies.update","id":"theses.strategies.update","status":"implemented","stability":"beta","compatNames":["theses_strategies_update"],"authRequired":true,"permissions":["write.user","write"],"sideEffect":"user_write","costEffect":"api_cost","access":{"anonymousAllowed":false},"risk":[],"schema":"ThesisStrategy","http":{"method":"PATCH","path":"/api/thesis/{id}/strategies/{strategyId}"},"sdk":{"package":"@spfunctions/sdk","method":"sf.theses.strategies.update(id, strategyId)"},"agent":{"callable":true,"defaultEnabled":true,"name":"theses.strategies.update","compatName":"theses_strategies_update","defaultExposure":"policy-gated"},"traceEvents":["tool.call.started","tool.call.completed","tool.call.failed"],"replay":{"replayable":false,"match":"tool+inputHash"},"freshness":{"class":"snapshot","expectedMaxAgeMs":300000,"defaultPollMs":300000,"supportsCursor":false,"supportsSince":false,"replaySafe":false}},{"name":"theses.strategies.delete","id":"theses.strategies.delete","status":"implemented","stability":"beta","compatNames":["theses_strategies_delete"],"authRequired":true,"permissions":["write.user","write"],"sideEffect":"user_write","costEffect":"api_cost","access":{"anonymousAllowed":false},"risk":[],"schema":"ThesisStrategyMutation","http":{"method":"DELETE","path":"/api/thesis/{id}/strategies/{strategyId}"},"sdk":{"package":"@spfunctions/sdk","method":"sf.theses.strategies.delete(id, strategyId)"},"agent":{"callable":true,"defaultEnabled":true,"name":"theses.strategies.delete","compatName":"theses_strategies_delete","defaultExposure":"policy-gated"},"traceEvents":["tool.call.started","tool.call.completed","tool.call.failed"],"replay":{"replayable":false,"match":"tool+inputHash"},"freshness":{"class":"snapshot","expectedMaxAgeMs":300000,"defaultPollMs":300000,"supportsCursor":false,"supportsSince":false,"replaySafe":false}},{"name":"theses.evaluations.list","id":"theses.evaluations.list","status":"implemented","stability":"beta","compatNames":["theses_evaluations_list"],"authRequired":true,"permissions":["read.user","user_data","read"],"sideEffect":"none","costEffect":"api_cost","access":{"anonymousAllowed":false},"risk":[],"schema":"ThesisEvaluation[]","http":{"method":"GET","path":"/api/thesis/{id}/evaluations"},"sdk":{"package":"@spfunctions/sdk","method":"sf.theses.evaluations.list(id)"},"agent":{"callable":true,"defaultEnabled":true,"name":"theses.evaluations.list","compatName":"theses_evaluations_list","defaultExposure":"auth-gated"},"traceEvents":["tool.call.started","tool.call.completed","tool.call.failed"],"replay":{"replayable":true,"match":"tool+inputHash"},"freshness":{"class":"user_state","expectedMaxAgeMs":60000,"defaultPollMs":60000,"supportsCursor":false,"supportsSince":false,"replaySafe":true}},{"name":"theses.whatif","id":"theses.whatif","status":"implemented","stability":"beta","compatNames":["theses_whatif"],"authRequired":true,"permissions":["read.user","user_data","read"],"sideEffect":"none","costEffect":"api_cost","access":{"anonymousAllowed":false},"risk":[],"schema":"ThesisWhatIfResult","http":{"method":"POST","path":"/api/thesis/{id}/whatif"},"sdk":{"package":"@spfunctions/sdk","method":"sf.theses.whatIf(id)"},"agent":{"callable":true,"defaultEnabled":true,"name":"theses.whatif","compatName":"theses_whatif","defaultExposure":"auth-gated"},"traceEvents":["tool.call.started","tool.call.completed","tool.call.failed"],"replay":{"replayable":true,"match":"tool+inputHash"},"freshness":{"class":"user_state","expectedMaxAgeMs":60000,"defaultPollMs":60000,"supportsCursor":false,"supportsSince":false,"replaySafe":true}},{"name":"theses.evaluate","id":"theses.evaluate","status":"implemented","stability":"beta","compatNames":["theses_evaluate"],"authRequired":true,"permissions":["write.user","write"],"sideEffect":"user_write","costEffect":"llm_cost","access":{"anonymousAllowed":false},"risk":[],"schema":"ThesisEvaluateResult","http":{"method":"POST","path":"/api/thesis/{id}/evaluate"},"sdk":{"package":"@spfunctions/sdk","method":"sf.theses.evaluate(id)"},"agent":{"callable":true,"defaultEnabled":true,"name":"theses.evaluate","compatName":"theses_evaluate","defaultExposure":"policy-gated"},"traceEvents":["tool.call.started","tool.call.completed","tool.call.failed"],"replay":{"replayable":false,"match":"tool+inputHash"},"freshness":{"class":"llm","expectedMaxAgeMs":600000,"defaultPollMs":300000,"supportsCursor":false,"supportsSince":false,"replaySafe":false}},{"name":"theses.augment","id":"theses.augment","status":"implemented","stability":"beta","compatNames":["theses_augment"],"authRequired":true,"permissions":["write.user","write"],"sideEffect":"user_write","costEffect":"llm_cost","access":{"anonymousAllowed":false},"risk":[],"schema":"ThesisAugmentResult","http":{"method":"POST","path":"/api/thesis/{id}/augment"},"sdk":{"package":"@spfunctions/sdk","method":"sf.theses.augment(id)"},"agent":{"callable":true,"defaultEnabled":true,"name":"theses.augment","compatName":"theses_augment","defaultExposure":"policy-gated"},"traceEvents":["tool.call.started","tool.call.completed","tool.call.failed"],"replay":{"replayable":false,"match":"tool+inputHash"},"freshness":{"class":"llm","expectedMaxAgeMs":600000,"defaultPollMs":300000,"supportsCursor":false,"supportsSince":false,"replaySafe":false}},{"name":"theses.fork","id":"theses.fork","status":"implemented","stability":"beta","compatNames":["theses_fork"],"authRequired":true,"permissions":["write.user","write"],"sideEffect":"user_write","costEffect":"api_cost","access":{"anonymousAllowed":false},"risk":[],"schema":"ThesisForkResult","http":{"method":"POST","path":"/api/thesis/{id}/fork"},"sdk":{"package":"@spfunctions/sdk","method":"sf.theses.fork(id)"},"agent":{"callable":true,"defaultEnabled":true,"name":"theses.fork","compatName":"theses_fork","defaultExposure":"policy-gated"},"traceEvents":["tool.call.started","tool.call.completed","tool.call.failed"],"replay":{"replayable":false,"match":"tool+inputHash"},"freshness":{"class":"snapshot","expectedMaxAgeMs":300000,"defaultPollMs":300000,"supportsCursor":false,"supportsSince":false,"replaySafe":false}},{"name":"theses.publish","id":"theses.publish","status":"implemented","stability":"beta","compatNames":["theses_publish"],"authRequired":true,"permissions":["write.user","write"],"sideEffect":"user_write","costEffect":"api_cost","access":{"anonymousAllowed":false},"risk":[],"schema":"ThesisPublishResult","http":{"method":"POST","path":"/api/thesis/{id}/publish"},"sdk":{"package":"@spfunctions/sdk","method":"sf.theses.publish(id)"},"agent":{"callable":true,"defaultEnabled":true,"name":"theses.publish","compatName":"theses_publish","defaultExposure":"policy-gated"},"traceEvents":["tool.call.started","tool.call.completed","tool.call.failed"],"replay":{"replayable":false,"match":"tool+inputHash"},"freshness":{"class":"snapshot","expectedMaxAgeMs":300000,"defaultPollMs":300000,"supportsCursor":false,"supportsSince":false,"replaySafe":false}},{"name":"theses.unpublish","id":"theses.unpublish","status":"implemented","stability":"beta","compatNames":["theses_unpublish"],"authRequired":true,"permissions":["write.user","write"],"sideEffect":"user_write","costEffect":"api_cost","access":{"anonymousAllowed":false},"risk":[],"schema":"ThesisUnpublishResult","http":{"method":"DELETE","path":"/api/thesis/{id}/publish"},"sdk":{"package":"@spfunctions/sdk","method":"sf.theses.unpublish(id)"},"agent":{"callable":true,"defaultEnabled":true,"name":"theses.unpublish","compatName":"theses_unpublish","defaultExposure":"policy-gated"},"traceEvents":["tool.call.started","tool.call.completed","tool.call.failed"],"replay":{"replayable":false,"match":"tool+inputHash"},"freshness":{"class":"snapshot","expectedMaxAgeMs":300000,"defaultPollMs":300000,"supportsCursor":false,"supportsSince":false,"replaySafe":false}},{"name":"theses.public.list","id":"theses.public.list","status":"implemented","stability":"beta","compatNames":["theses_public_list"],"authRequired":false,"permissions":["read.public","read"],"sideEffect":"none","costEffect":"api_cost","access":{"anonymousAllowed":false},"risk":[],"schema":"PublicThesis[]","http":{"method":"GET","path":"/api/public/theses"},"sdk":{"package":"@spfunctions/sdk","method":"sf.theses.publicList()"},"agent":{"callable":true,"defaultEnabled":true,"name":"theses.public.list","compatName":"theses_public_list"},"traceEvents":["tool.call.started","tool.call.completed","tool.call.failed"],"replay":{"replayable":true,"match":"tool+inputHash"},"freshness":{"class":"snapshot","expectedMaxAgeMs":300000,"defaultPollMs":300000,"supportsCursor":false,"supportsSince":false,"replaySafe":true}},{"name":"theses.public.get","id":"theses.public.get","status":"implemented","stability":"beta","compatNames":["theses_public_get"],"authRequired":false,"permissions":["read.public","read"],"sideEffect":"none","costEffect":"api_cost","access":{"anonymousAllowed":false},"risk":[],"schema":"PublicThesis","http":{"method":"GET","path":"/api/public/thesis/{slug}"},"sdk":{"package":"@spfunctions/sdk","method":"sf.theses.publicGet(slug)"},"agent":{"callable":true,"defaultEnabled":true,"name":"theses.public.get","compatName":"theses_public_get"},"traceEvents":["tool.call.started","tool.call.completed","tool.call.failed"],"replay":{"replayable":true,"match":"tool+inputHash"},"freshness":{"class":"snapshot","expectedMaxAgeMs":300000,"defaultPollMs":300000,"supportsCursor":false,"supportsSince":false,"replaySafe":true}},{"name":"theses.public.byTicker","id":"theses.public.byTicker","status":"implemented","stability":"beta","compatNames":["theses_public_by_ticker"],"authRequired":false,"permissions":["read.public","read"],"sideEffect":"none","costEffect":"api_cost","access":{"anonymousAllowed":false},"risk":[],"schema":"PublicThesisByTicker","http":{"method":"GET","path":"/api/thesis/by-ticker/{ticker}"},"sdk":{"package":"@spfunctions/sdk","method":"sf.theses.publicByTicker(ticker)"},"agent":{"callable":true,"defaultEnabled":true,"name":"theses.public.byTicker","compatName":"theses_public_by_ticker"},"traceEvents":["tool.call.started","tool.call.completed","tool.call.failed"],"replay":{"replayable":true,"match":"tool+inputHash"},"freshness":{"class":"snapshot","expectedMaxAgeMs":300000,"defaultPollMs":300000,"supportsCursor":false,"supportsSince":false,"replaySafe":true}},{"name":"portfolio.state","id":"portfolio.state","status":"implemented","stability":"beta","compatNames":["portfolio_state"],"authRequired":true,"permissions":["read.user","user_data","read"],"sideEffect":"none","costEffect":"api_cost","access":{"anonymousAllowed":false},"risk":[],"schema":"PortfolioState","http":{"method":"GET","path":"/api/portfolio/state"},"sdk":{"package":"@spfunctions/sdk","method":"sf.portfolio.state()"},"agent":{"callable":true,"defaultEnabled":true,"name":"portfolio.state","compatName":"portfolio_state","defaultExposure":"auth-gated"},"traceEvents":["tool.call.started","tool.call.completed","tool.call.failed"],"replay":{"replayable":true,"match":"tool+inputHash"},"freshness":{"class":"user_state","expectedMaxAgeMs":60000,"defaultPollMs":60000,"supportsCursor":false,"supportsSince":false,"replaySafe":true},"docs":{"cookbook":"docs/guides/authenticated-read-sdk.mdx"}},{"name":"portfolio.ticks.list","id":"portfolio.ticks.list","status":"implemented","stability":"beta","compatNames":["portfolio_ticks_list"],"authRequired":true,"permissions":["read.user","user_data","read"],"sideEffect":"none","costEffect":"api_cost","access":{"anonymousAllowed":false},"risk":[],"schema":"PortfolioTick[]","http":{"method":"GET","path":"/api/portfolio/ticks"},"sdk":{"package":"@spfunctions/sdk","method":"sf.portfolio.ticks.list()"},"agent":{"callable":true,"defaultEnabled":true,"name":"portfolio.ticks.list","compatName":"portfolio_ticks_list","defaultExposure":"auth-gated"},"traceEvents":["tool.call.started","tool.call.completed","tool.call.failed"],"replay":{"replayable":true,"match":"tool+inputHash"},"freshness":{"class":"user_state","expectedMaxAgeMs":60000,"defaultPollMs":60000,"supportsCursor":false,"supportsSince":false,"replaySafe":true},"docs":{"cookbook":"docs/guides/authenticated-read-sdk.mdx"}},{"name":"portfolio.trades.list","id":"portfolio.trades.list","status":"implemented","stability":"beta","compatNames":["portfolio_trades_list"],"authRequired":true,"permissions":["read.user","user_data","read"],"sideEffect":"none","costEffect":"api_cost","access":{"anonymousAllowed":false},"risk":[],"schema":"PortfolioTrade[]","http":{"method":"GET","path":"/api/portfolio/trades"},"sdk":{"package":"@spfunctions/sdk","method":"sf.portfolio.trades.list()"},"agent":{"callable":true,"defaultEnabled":true,"name":"portfolio.trades.list","compatName":"portfolio_trades_list","defaultExposure":"auth-gated"},"traceEvents":["tool.call.started","tool.call.completed","tool.call.failed"],"replay":{"replayable":true,"match":"tool+inputHash"},"freshness":{"class":"user_state","expectedMaxAgeMs":60000,"defaultPollMs":60000,"supportsCursor":false,"supportsSince":false,"replaySafe":true},"docs":{"cookbook":"docs/guides/authenticated-read-sdk.mdx"}},{"name":"portfolio.positions.list","id":"portfolio.positions.list","status":"implemented","stability":"beta","description":"Read authenticated ledger-backed portfolio position snapshots without trading authority.","compatNames":["portfolio_positions_list"],"authRequired":true,"permissions":["read.user","user_data","read"],"sideEffect":"none","costEffect":"api_cost","access":{"anonymousAllowed":false},"risk":[],"schema":"PortfolioPositionSnapshot[]","http":{"method":"GET","path":"/api/portfolio/positions"},"sdk":{"package":"@spfunctions/sdk","method":"sf.portfolio.positions.list()"},"agent":{"callable":true,"defaultEnabled":true,"name":"portfolio.positions.list","compatName":"portfolio_positions_list","defaultExposure":"auth-gated"},"traceEvents":["tool.call.started","tool.call.completed","tool.call.failed"],"replay":{"replayable":true,"match":"tool+inputHash"},"freshness":{"class":"user_state","expectedMaxAgeMs":60000,"defaultPollMs":60000,"supportsCursor":true,"supportsSince":true,"replaySafe":true},"docs":{"cookbook":"docs/guides/authenticated-read-sdk.mdx"}},{"name":"portfolio.ledger.list","id":"portfolio.ledger.list","status":"implemented","stability":"beta","description":"Read authenticated append-only portfolio ledger events with explicit attribution confidence.","compatNames":["portfolio_ledger_list"],"authRequired":true,"permissions":["read.user","user_data","read"],"sideEffect":"none","costEffect":"api_cost","access":{"anonymousAllowed":false},"risk":[],"schema":"PortfolioLedgerEntry[]","http":{"method":"GET","path":"/api/portfolio/ledger"},"sdk":{"package":"@spfunctions/sdk","method":"sf.portfolio.ledger.list()"},"agent":{"callable":true,"defaultEnabled":true,"name":"portfolio.ledger.list","compatName":"portfolio_ledger_list","defaultExposure":"auth-gated"},"traceEvents":["tool.call.started","tool.call.completed","tool.call.failed"],"replay":{"replayable":true,"match":"tool+inputHash"},"freshness":{"class":"user_state","expectedMaxAgeMs":60000,"defaultPollMs":60000,"supportsCursor":true,"supportsSince":true,"replaySafe":true},"docs":{"cookbook":"docs/guides/authenticated-read-sdk.mdx"}},{"name":"portfolio.fills.list","id":"portfolio.fills.list","status":"implemented","stability":"beta","description":"Read authenticated fill and partial-fill ledger events without inferring missing attribution.","compatNames":["portfolio_fills_list"],"authRequired":true,"permissions":["read.user","user_data","read"],"sideEffect":"none","costEffect":"api_cost","access":{"anonymousAllowed":false},"risk":[],"schema":"PortfolioLedgerEntry[]","http":{"method":"GET","path":"/api/portfolio/fills"},"sdk":{"package":"@spfunctions/sdk","method":"sf.portfolio.fills.list()"},"agent":{"callable":true,"defaultEnabled":true,"name":"portfolio.fills.list","compatName":"portfolio_fills_list","defaultExposure":"auth-gated"},"traceEvents":["tool.call.started","tool.call.completed","tool.call.failed"],"replay":{"replayable":true,"match":"tool+inputHash"},"freshness":{"class":"user_state","expectedMaxAgeMs":60000,"defaultPollMs":60000,"supportsCursor":true,"supportsSince":true,"replaySafe":true},"docs":{"cookbook":"docs/guides/authenticated-read-sdk.mdx"}},{"name":"portfolio.attribution.daily","id":"portfolio.attribution.daily","status":"implemented","stability":"beta","description":"Read authenticated daily portfolio PnL attribution rows by venue, market, source, and confidence.","compatNames":["portfolio_attribution_daily"],"authRequired":true,"permissions":["read.user","user_data","read"],"sideEffect":"none","costEffect":"api_cost","access":{"anonymousAllowed":false},"risk":[],"schema":"PortfolioDailyAttribution[]","http":{"method":"GET","path":"/api/portfolio/attribution/daily"},"sdk":{"package":"@spfunctions/sdk","method":"sf.portfolio.attribution.daily()"},"agent":{"callable":true,"defaultEnabled":true,"name":"portfolio.attribution.daily","compatName":"portfolio_attribution_daily","defaultExposure":"auth-gated"},"traceEvents":["tool.call.started","tool.call.completed","tool.call.failed"],"replay":{"replayable":true,"match":"tool+inputHash"},"freshness":{"class":"user_state","expectedMaxAgeMs":60000,"defaultPollMs":60000,"supportsCursor":true,"supportsSince":true,"replaySafe":true},"docs":{"cookbook":"docs/guides/authenticated-read-sdk.mdx"}},{"name":"portfolio.attribution.grouped","id":"portfolio.attribution.grouped","status":"implemented","stability":"beta","description":"Read bounded grouped portfolio PnL attribution while preserving unknown attribution groups.","compatNames":["portfolio_attribution_grouped"],"authRequired":true,"permissions":["read.user","user_data","read"],"sideEffect":"none","costEffect":"api_cost","access":{"anonymousAllowed":false},"risk":[],"schema":"PortfolioAttributionGroup[]","http":{"method":"GET","path":"/api/portfolio/attribution/grouped"},"sdk":{"package":"@spfunctions/sdk","method":"sf.portfolio.attribution.grouped()"},"agent":{"callable":true,"defaultEnabled":true,"name":"portfolio.attribution.grouped","compatName":"portfolio_attribution_grouped","defaultExposure":"auth-gated"},"traceEvents":["tool.call.started","tool.call.completed","tool.call.failed"],"replay":{"replayable":true,"match":"tool+inputHash"},"freshness":{"class":"user_state","expectedMaxAgeMs":60000,"defaultPollMs":60000,"supportsCursor":false,"supportsSince":true,"replaySafe":true},"docs":{"cookbook":"docs/guides/authenticated-read-sdk.mdx"}},{"name":"portfolio.risk.get","id":"portfolio.risk.get","status":"implemented","stability":"beta","description":"Read authenticated portfolio risk utilization and stale-data state without returning secrets.","compatNames":["portfolio_risk_get"],"authRequired":true,"permissions":["read.user","user_data","read"],"sideEffect":"none","costEffect":"api_cost","access":{"anonymousAllowed":false},"risk":[],"schema":"PortfolioRiskSnapshot","http":{"method":"GET","path":"/api/portfolio/risk"},"sdk":{"package":"@spfunctions/sdk","method":"sf.portfolio.risk.get()"},"agent":{"callable":true,"defaultEnabled":true,"name":"portfolio.risk.get","compatName":"portfolio_risk_get","defaultExposure":"auth-gated"},"traceEvents":["tool.call.started","tool.call.completed","tool.call.failed"],"replay":{"replayable":true,"match":"tool+inputHash"},"freshness":{"class":"user_state","expectedMaxAgeMs":60000,"defaultPollMs":60000,"supportsCursor":false,"supportsSince":false,"replaySafe":true},"docs":{"cookbook":"docs/guides/authenticated-read-sdk.mdx"}},{"name":"portfolio.activity.list","id":"portfolio.activity.list","status":"implemented","stability":"beta","description":"Read authenticated portfolio activity timeline backed by the portfolio ledger.","compatNames":["portfolio_activity_list"],"authRequired":true,"permissions":["read.user","user_data","read"],"sideEffect":"none","costEffect":"api_cost","access":{"anonymousAllowed":false},"risk":[],"schema":"PortfolioLedgerEntry[]","http":{"method":"GET","path":"/api/portfolio/activity"},"sdk":{"package":"@spfunctions/sdk","method":"sf.portfolio.activity.list()"},"agent":{"callable":true,"defaultEnabled":true,"name":"portfolio.activity.list","compatName":"portfolio_activity_list","defaultExposure":"auth-gated"},"traceEvents":["tool.call.started","tool.call.completed","tool.call.failed"],"replay":{"replayable":true,"match":"tool+inputHash"},"freshness":{"class":"user_state","expectedMaxAgeMs":60000,"defaultPollMs":60000,"supportsCursor":true,"supportsSince":true,"replaySafe":true},"docs":{"cookbook":"docs/guides/authenticated-read-sdk.mdx"}},{"name":"portfolio.imports.kalshi","id":"portfolio.imports.kalshi","status":"implemented","stability":"beta","description":"Import client-supplied Kalshi fills/settlements rows into the portfolio ledger with idempotent attribution.","compatNames":["portfolio_imports_kalshi"],"authRequired":true,"permissions":["write.user","user_data","write"],"sideEffect":"user_write","costEffect":"api_cost","access":{"anonymousAllowed":false},"risk":[],"schema":"PortfolioImportResult","http":{"method":"POST","path":"/api/portfolio/ledger/import/kalshi"},"sdk":{"package":"@spfunctions/sdk","method":"sf.portfolio.imports.kalshi()"},"agent":{"callable":true,"defaultEnabled":true,"name":"portfolio.imports.kalshi","compatName":"portfolio_imports_kalshi","defaultExposure":"policy-gated"},"traceEvents":["tool.call.started","tool.call.completed","tool.call.failed"],"replay":{"replayable":false,"match":"tool+inputHash"},"freshness":{"class":"user_state","expectedMaxAgeMs":60000,"defaultPollMs":60000,"supportsCursor":false,"supportsSince":false,"replaySafe":false},"docs":{"cookbook":"docs/api-reference/portfolio.mdx"}},{"name":"portfolio.imports.kalshi.pull","id":"portfolio.imports.kalshi.pull","status":"implemented","stability":"beta","description":"Pull Kalshi fills/settlements server-side using uploaded portfolio credentials and import them into the portfolio ledger.","compatNames":["portfolio_imports_kalshi_pull"],"authRequired":true,"permissions":["write.user","user_data","write"],"sideEffect":"user_write","costEffect":"venue_request_cost","access":{"anonymousAllowed":false},"risk":[],"schema":"PortfolioImportPullResult","http":{"method":"POST","path":"/api/portfolio/ledger/import/kalshi/pull"},"sdk":{"package":"@spfunctions/sdk","method":"sf.portfolio.imports.kalshiPull()"},"agent":{"callable":true,"defaultEnabled":true,"name":"portfolio.imports.kalshi.pull","compatName":"portfolio_imports_kalshi_pull","defaultExposure":"policy-gated"},"traceEvents":["tool.call.started","tool.call.completed","tool.call.failed"],"replay":{"replayable":false,"match":"tool+inputHash"},"freshness":{"class":"user_state","expectedMaxAgeMs":60000,"defaultPollMs":60000,"supportsCursor":false,"supportsSince":false,"replaySafe":false},"docs":{"cookbook":"docs/api-reference/portfolio.mdx"}},{"name":"portfolio.imports.polymarket","id":"portfolio.imports.polymarket","status":"implemented","stability":"beta","description":"Import client-supplied Polymarket trade/redeem rows into the portfolio ledger; redeem rows record cash and revenue without inventing realized PnL when cost basis is missing.","compatNames":["portfolio_imports_polymarket"],"authRequired":true,"permissions":["write.user","user_data","write"],"sideEffect":"user_write","costEffect":"api_cost","access":{"anonymousAllowed":false},"risk":[],"schema":"PortfolioImportResult","http":{"method":"POST","path":"/api/portfolio/ledger/import/polymarket"},"sdk":{"package":"@spfunctions/sdk","method":"sf.portfolio.imports.polymarket()"},"agent":{"callable":true,"defaultEnabled":true,"name":"portfolio.imports.polymarket","compatName":"portfolio_imports_polymarket","defaultExposure":"policy-gated"},"traceEvents":["tool.call.started","tool.call.completed","tool.call.failed"],"replay":{"replayable":false,"match":"tool+inputHash"},"freshness":{"class":"user_state","expectedMaxAgeMs":60000,"defaultPollMs":60000,"supportsCursor":false,"supportsSince":false,"replaySafe":false},"docs":{"cookbook":"docs/api-reference/portfolio.mdx"}},{"name":"runtime.status","id":"runtime.status","status":"implemented","stability":"beta","compatNames":["runtime_status"],"authRequired":true,"permissions":["runtime","read"],"sideEffect":"none","costEffect":"api_cost","access":{"anonymousAllowed":false},"risk":[],"schema":"RuntimeStatusResult","http":{"method":"GET","path":"/api/runtime/exec"},"sdk":{"package":"@spfunctions/sdk","method":"sf.runtime.status()"},"agent":{"callable":true,"defaultEnabled":true,"name":"runtime.status","compatName":"runtime_status","defaultExposure":"auth-gated"},"traceEvents":["tool.call.started","tool.call.completed","tool.call.failed"],"replay":{"replayable":true,"match":"tool+inputHash"},"freshness":{"class":"snapshot","expectedMaxAgeMs":300000,"defaultPollMs":300000,"supportsCursor":false,"supportsSince":false,"replaySafe":true},"docs":{"cookbook":"docs/rfcs/sdk-agent-full-chain-execution-spec.mdx"}},{"name":"runtime.ensure","id":"runtime.ensure","status":"implemented","stability":"beta","compatNames":["runtime_ensure","runtime_start"],"authRequired":true,"permissions":["runtime","execution","write"],"sideEffect":"runtime","costEffect":"api_cost","access":{"anonymousAllowed":false},"risk":[],"schema":"RuntimeEnsureResult","http":{"method":"POST","path":"/api/runtime/exec"},"sdk":{"package":"@spfunctions/sdk","method":"sf.runtime.ensure()"},"agent":{"callable":true,"defaultEnabled":true,"name":"runtime.ensure","compatName":"runtime_ensure","defaultExposure":"policy-gated-runtime"},"traceEvents":["tool.call.started","tool.call.completed","tool.call.failed"],"replay":{"replayable":false,"match":"tool+inputHash"},"freshness":{"class":"snapshot","expectedMaxAgeMs":300000,"defaultPollMs":300000,"supportsCursor":false,"supportsSince":false,"replaySafe":false},"docs":{"cookbook":"docs/rfcs/sdk-agent-full-chain-execution-spec.mdx"}},{"name":"intents.list","id":"intents.list","status":"implemented","stability":"beta","compatNames":["intents_list","list_intents"],"authRequired":true,"permissions":["read.user","user_data","read"],"sideEffect":"none","costEffect":"api_cost","access":{"anonymousAllowed":false},"risk":[],"schema":"Intent[]","http":{"method":"GET","path":"/api/intents"},"sdk":{"package":"@spfunctions/sdk","method":"sf.intents.list()"},"agent":{"callable":true,"defaultEnabled":true,"name":"intents.list","compatName":"intents_list","defaultExposure":"auth-gated"},"traceEvents":["tool.call.started","tool.call.completed","tool.call.failed"],"replay":{"replayable":true,"match":"tool+inputHash"},"freshness":{"class":"user_state","expectedMaxAgeMs":60000,"defaultPollMs":60000,"supportsCursor":false,"supportsSince":false,"replaySafe":true},"docs":{"cookbook":"docs/guides/authenticated-read-sdk.mdx"}},{"name":"intents.create","id":"intents.create","status":"implemented","stability":"beta","compatNames":["intents_create","create_intent"],"authRequired":true,"permissions":["trade","execution","write"],"sideEffect":"live_trade","costEffect":"api_cost","access":{"anonymousAllowed":false},"risk":[],"schema":"IntentCreateResult","http":{"method":"POST","path":"/api/intents"},"sdk":{"package":"@spfunctions/sdk","method":"sf.intents.create()"},"agent":{"callable":true,"defaultEnabled":true,"name":"intents.create","compatName":"intents_create","defaultExposure":"policy-gated-live-trade"},"traceEvents":["tool.call.started","tool.call.completed","tool.call.failed"],"replay":{"replayable":false,"match":"tool+inputHash"},"freshness":{"class":"snapshot","expectedMaxAgeMs":300000,"defaultPollMs":300000,"supportsCursor":false,"supportsSince":false,"replaySafe":false},"docs":{"cookbook":"docs/rfcs/sdk-agent-full-chain-execution-spec.mdx","venue":"kalshi-or-polymarket-runtime"}},{"name":"intents.get","id":"intents.get","status":"implemented","stability":"beta","compatNames":["intents_get","get_intent"],"authRequired":true,"permissions":["read.user","user_data","read"],"sideEffect":"none","costEffect":"api_cost","access":{"anonymousAllowed":false},"risk":[],"schema":"Intent","http":{"method":"GET","path":"/api/intents/:id"},"sdk":{"package":"@spfunctions/sdk","method":"sf.intents.get()"},"agent":{"callable":true,"defaultEnabled":true,"name":"intents.get","compatName":"intents_get","defaultExposure":"auth-gated"},"traceEvents":["tool.call.started","tool.call.completed","tool.call.failed"],"replay":{"replayable":true,"match":"tool+inputHash"},"freshness":{"class":"user_state","expectedMaxAgeMs":60000,"defaultPollMs":60000,"supportsCursor":false,"supportsSince":false,"replaySafe":true},"docs":{"cookbook":"docs/rfcs/sdk-agent-full-chain-execution-spec.mdx","venue":"kalshi-or-polymarket-runtime"}},{"name":"intents.cancel","id":"intents.cancel","status":"implemented","stability":"beta","compatNames":["intents_cancel","cancel_intent"],"authRequired":true,"permissions":["trade","execution","write"],"sideEffect":"live_trade","costEffect":"api_cost","access":{"anonymousAllowed":false},"risk":[],"schema":"IntentCancelResult","http":{"method":"DELETE","path":"/api/intents/:id"},"sdk":{"package":"@spfunctions/sdk","method":"sf.intents.cancel()"},"agent":{"callable":true,"defaultEnabled":true,"name":"intents.cancel","compatName":"intents_cancel","defaultExposure":"policy-gated-live-trade"},"traceEvents":["tool.call.started","tool.call.completed","tool.call.failed"],"replay":{"replayable":false,"match":"tool+inputHash"},"freshness":{"class":"snapshot","expectedMaxAgeMs":300000,"defaultPollMs":300000,"supportsCursor":false,"supportsSince":false,"replaySafe":false},"docs":{"cookbook":"docs/rfcs/sdk-agent-full-chain-execution-spec.mdx","venue":"kalshi-or-polymarket-runtime"}},{"name":"execution.place","id":"execution.place","status":"implemented","stability":"beta","compatNames":["execution_place","live_trade","place_order"],"authRequired":true,"permissions":["trade","execution","runtime","write"],"sideEffect":"live_trade","costEffect":"venue_request_cost","access":{"anonymousAllowed":false},"risk":[],"schema":"ExecutionPlaceResult","http":{"method":"POST","path":"/api/intents"},"sdk":{"package":"@spfunctions/sdk","method":"sf.execution.place()"},"agent":{"callable":true,"defaultEnabled":true,"name":"execution.place","compatName":"live_trade","defaultExposure":"policy-gated-live-trade"},"traceEvents":["tool.call.started","tool.call.completed","tool.call.failed"],"replay":{"replayable":false,"match":"tool+inputHash"},"freshness":{"class":"provider","expectedMaxAgeMs":30000,"defaultPollMs":30000,"supportsCursor":false,"supportsSince":false,"replaySafe":false},"docs":{"cookbook":"docs/rfcs/sdk-agent-full-chain-execution-spec.mdx","venue":"kalshi-or-polymarket-runtime"}},{"name":"watchlists.list","id":"watchlists.list","status":"implemented","stability":"beta","compatNames":["watchlists_list"],"authRequired":true,"permissions":["read.user","user_data","read"],"sideEffect":"none","costEffect":"api_cost","access":{"anonymousAllowed":false},"risk":[],"schema":"Watchlist[]","http":{"method":"GET","path":"/api/watch"},"sdk":{"package":"@spfunctions/sdk","method":"sf.watchlists.list()"},"agent":{"callable":true,"defaultEnabled":true,"name":"watchlists.list","compatName":"watchlists_list","defaultExposure":"auth-gated"},"traceEvents":["tool.call.started","tool.call.completed","tool.call.failed"],"replay":{"replayable":true,"match":"tool+inputHash"},"freshness":{"class":"user_state","expectedMaxAgeMs":60000,"defaultPollMs":60000,"supportsCursor":false,"supportsSince":false,"replaySafe":true},"docs":{"cookbook":"docs/guides/authenticated-read-sdk.mdx"}},{"name":"alerts.list","id":"alerts.list","status":"implemented","stability":"beta","compatNames":["alerts_list"],"authRequired":true,"permissions":["read.user","user_data","alert","read"],"sideEffect":"none","costEffect":"api_cost","access":{"anonymousAllowed":false},"risk":[],"schema":"Alert[]","http":{"method":"GET","path":"/api/alert-rules"},"sdk":{"package":"@spfunctions/sdk","method":"sf.alerts.list()"},"agent":{"callable":true,"defaultEnabled":true,"name":"alerts.list","compatName":"alerts_list","defaultExposure":"auth-gated"},"traceEvents":["tool.call.started","tool.call.completed","tool.call.failed"],"replay":{"replayable":true,"match":"tool+inputHash"},"freshness":{"class":"user_state","expectedMaxAgeMs":60000,"defaultPollMs":60000,"supportsCursor":false,"supportsSince":false,"replaySafe":true},"docs":{"cookbook":"docs/guides/authenticated-read-sdk.mdx"}},{"name":"theses.create","id":"theses.create","status":"implemented","stability":"beta","compatNames":[],"authRequired":true,"permissions":["write.user","write"],"sideEffect":"user_write","costEffect":"api_cost","access":{"anonymousAllowed":false},"risk":[],"schema":"Thesis","http":{"method":"POST","path":"/api/thesis/create"},"sdk":{"package":"@spfunctions/sdk","method":"sf.theses.create()"},"agent":{"callable":true,"defaultEnabled":true,"name":"theses.create","compatName":"theses_create","defaultExposure":"policy-gated"},"traceEvents":["tool.call.started","tool.call.completed","tool.call.failed"],"replay":{"replayable":false,"match":"tool+inputHash"},"freshness":{"class":"snapshot","expectedMaxAgeMs":300000,"defaultPollMs":300000,"supportsCursor":false,"supportsSince":false,"replaySafe":false}},{"name":"theses.signal","id":"theses.signal","status":"implemented","stability":"beta","compatNames":[],"authRequired":true,"permissions":["write.user","write"],"sideEffect":"user_write","costEffect":"api_cost","access":{"anonymousAllowed":false},"risk":[],"schema":"ThesisSignal","http":{"method":"POST","path":"/api/thesis/{id}/signal"},"sdk":{"package":"@spfunctions/sdk","method":"sf.theses.signal()"},"agent":{"callable":true,"defaultEnabled":true,"name":"theses.signal","compatName":"theses_signal","defaultExposure":"policy-gated"},"traceEvents":["tool.call.started","tool.call.completed","tool.call.failed"],"replay":{"replayable":false,"match":"tool+inputHash"},"freshness":{"class":"snapshot","expectedMaxAgeMs":300000,"defaultPollMs":300000,"supportsCursor":false,"supportsSince":false,"replaySafe":false}},{"name":"watchlists.add","id":"watchlists.add","status":"implemented","stability":"beta","compatNames":[],"authRequired":true,"permissions":["write.user","write"],"sideEffect":"user_write","costEffect":"api_cost","access":{"anonymousAllowed":false},"risk":[],"schema":"Watchlist","http":{"method":"POST","path":"/api/watch"},"sdk":{"package":"@spfunctions/sdk","method":"sf.watchlists.add()"},"agent":{"callable":true,"defaultEnabled":true,"name":"watchlists.add","compatName":"watchlists_add","defaultExposure":"policy-gated"},"traceEvents":["tool.call.started","tool.call.completed","tool.call.failed"],"replay":{"replayable":false,"match":"tool+inputHash"},"freshness":{"class":"snapshot","expectedMaxAgeMs":300000,"defaultPollMs":300000,"supportsCursor":false,"supportsSince":false,"replaySafe":false}},{"name":"alerts.create","id":"alerts.create","status":"implemented","stability":"beta","compatNames":[],"authRequired":true,"permissions":["alert.write","write.user","write"],"sideEffect":"user_write","costEffect":"api_cost","access":{"anonymousAllowed":false},"risk":[],"schema":"Alert","http":{"method":"POST","path":"/api/alert-rules"},"sdk":{"package":"@spfunctions/sdk","method":"sf.alerts.create()"},"agent":{"callable":true,"defaultEnabled":true,"name":"alerts.create","compatName":"alerts_create","defaultExposure":"policy-gated"},"traceEvents":["tool.call.started","tool.call.completed","tool.call.failed"],"replay":{"replayable":false,"match":"tool+inputHash"},"freshness":{"class":"snapshot","expectedMaxAgeMs":300000,"defaultPollMs":300000,"supportsCursor":false,"supportsSince":false,"replaySafe":false},"docs":{"cookbook":"docs/guides/authenticated-read-sdk.mdx"}}]}