Compute technical indicator fields from raw OHLCV data in market.spot_daily and write derived fields to market.enriched + market.enriched_context. Runs three enrichment tiers: Tier 1 (always) computes ~19 fields from daily OHLCV: RSI_14, ATR_Pct, Price_vs_EMA21_Pct, Price_vs_SMA50_Pct, Realized_V...
AI agents call enrich_market_data to retrieve information from Tradeblocks without modifying anything — typically the context-gathering step in research, monitoring, and reporting workflows, before the agent takes action elsewhere.
Even though enrich_market_data only reads data, uncontrolled read access leaks sensitive information and racks up API costs — an agent caught in a retry loop can make thousands of calls a minute without anyone noticing.
Attacks that exploit this kind of access
Compute technical indicator fields from raw OHLCV data in market.spot_daily and write derived fields to market.enriched + market.enriched_context. Runs three enrichment tiers: Tier 1 (always) computes ~19 fields from daily OHLCV: RSI_14, ATR_Pct, Price_vs_EMA21_Pct, Price_vs_SMA50_Pct, Realized_Vol_5D, Realized_Vol_20D, Return_5D, Return_20D, Gap_Pct, Intraday_Range_Pct, Intraday_Return_Pct, Close_Position_In_Range, Gap_Filled, Consecutive_Days, Prev_Return_Pct, Prior_Close, Day_of_Week, Month, Is_Opex. Tier 2 (if VIX data in market.enriched) computes VIX IVR/IVP written back to market.enriched and regime fields written to market.enriched_context: Vol_Regime, Term_Structure_State, VIX_IVR, VIX_IVP, VIX9D_IVR, VIX9D_IVP, VIX3M_IVR, VIX3M_IVP, VIX_Gap_Pct, VIX_Change_Pct, VIX ratios, VIX_Spike_Pct. Tier 3 (if intraday bars in market.spot) computes timing fields: High_Time, Low_Time, High_Before_Low, Reversal_Type, Opening_Drive_Strength, Intraday_Realized_Vol. Uses 200-day lookback window for Wilder smoothing warmup. Tracks the enriched_through watermark via the JSON adapter (db/json-adapters.ts). Call after import_market_csv or import_from_database to populate computed fields. Note: force_full is currently a no-op against the store-backed compute path; rerun import_market_csv with reset semantics to fully reseed. It is categorised as a Read tool in the Tradeblocks MCP Server, which means it retrieves data without modifying state.
Register the Tradeblocks MCP server in PolicyLayer and add a rule for enrich_market_data: allow, deny, rate-limit, or require approval. Point your MCP client at the PolicyLayer proxy URL and the rule is enforced on every call, before it reaches Tradeblocks. Nothing to install.
enrich_market_data is a Read tool with low risk. Read-only tools are generally safe to allow by default.
Yes. Add a rate_limit block to the enrich_market_data rule in your PolicyLayer policy. For example, setting max: 10 and window: 60 limits the tool to 10 calls per minute. Rate limits are tracked per agent session and reset automatically.
Set action: deny in the PolicyLayer policy for enrich_market_data. The AI agent will receive a policy violation error and cannot call the tool. You can also include a reason field to explain why the tool is blocked.
enrich_market_data is provided by the Tradeblocks MCP server (tradeblocks-mcp). PolicyLayer sits as a proxy in front of this server to enforce policies before tool calls reach the server.