{"name":"AllocContext","title":"AllocContext — BTC/ETH allocation drift, rebalance moves & market context","description":"Deterministic BTC/ETH portfolio allocation context for AI agents: allocation drift and band checks, USD rebalance plans, fused market context (Fear & Greed, Kalshi sentiment, macro calendar, FRED indicators, ETF flows), live Kraken/Coinbase portfolio reads, and saved ContextBundle snapshots. Structured JSON only — no LLM.","tags":["btc","eth","rebalance","allocation","crypto","portfolio","drift","bitcoin","agent-tools","mcp","sentiment","macro"],"resources":[{"url":"https://mcp.alloc-context.com/mcp","type":"http","description":"Deterministic BTC/ETH portfolio allocation context for AI agents: allocation drift and band checks, USD rebalance plans, fused market context (Fear & Greed, Kalshi sentiment, macro calendar, FRED indicators, ETF flows), live Kraken/Coinbase portfolio reads, and saved ContextBundle snapshots. Structured JSON only — no LLM.","tools":[{"name":"get_market_context","description":"Fused market backdrop for BTC/ETH allocation: Fear & Greed, Kalshi sentiment, macro calendar, FRED indicators, ETF flows, and breadth. Use freshness=cached for hosted cache; freshness=live runs ingest first (requires ingest API keys on the host).","inputSchema":{"type":"object","properties":{"scope":{"type":"string","enum":["daily","weekly"],"description":"Rollup horizon for macro and context bundle."},"freshness":{"type":"string","enum":["cached","live"],"description":"cached reads the ingest DB; live runs ingest first (requires ingest API keys on the host)."},"assets":{"type":"array","items":{"type":"string","enum":["BTC","ETH","CASH"]},"description":"Subset market and ETF fields (default BTC and ETH)."}}}},{"name":"get_context_bundle","description":"Full ContextBundle JSON: portfolio allocation drift vs target, market, sentiment, macro, regime hints, and delta vs the prior saved snapshot. Optional assets, target_pct, and band override server config for drift math.","inputSchema":{"type":"object","properties":{"scope":{"type":"string","enum":["daily","weekly"]},"freshness":{"type":"string","enum":["cached","live"]},"assets":{"type":"array","items":{"type":"string","enum":["BTC","ETH","CASH"]},"description":"Subset market and ETF fields (default BTC and ETH)."},"target_pct":{"type":"object","description":"Target weights keyed by BTC, ETH, CASH.","properties":{"BTC":{"type":"number"},"ETH":{"type":"number"},"CASH":{"type":"number"}},"required":["BTC","ETH","CASH"]},"band":{"type":"number","description":"Drift band width (for example 0.15 = 15%)."}}}},{"name":"get_rebalance_plan","description":"Compute USD deltas and exchange-style move lines to rebalance a BTC/ETH/CASH portfolio toward target allocation from current weights and NAV. Pure math — rebalance plan for btc/eth splits.","inputSchema":{"type":"object","properties":{"allocation_pct":{"type":"object","description":"Current weights keyed by BTC, ETH, CASH.","properties":{"BTC":{"type":"number"},"ETH":{"type":"number"},"CASH":{"type":"number"}},"required":["BTC","ETH","CASH"]},"target_pct":{"type":"object","description":"Target weights keyed by BTC, ETH, CASH.","properties":{"BTC":{"type":"number"},"ETH":{"type":"number"},"CASH":{"type":"number"}},"required":["BTC","ETH","CASH"]},"nav_usd":{"type":"number","description":"Portfolio NAV in USD."},"exchange":{"type":"string","enum":["kraken","coinbase"],"description":"Exchange-specific move wording (default kraken)."},"band":{"type":"number","description":"Drift band width (for example 0.15 = 15%)."}},"required":["allocation_pct","target_pct","nav_usd"]}},{"name":"get_portfolio_state","description":"Live portfolio read: NAV, BTC/ETH/CASH allocation, drift vs target, and band hint. Pass read-only kraken or coinbase credentials in the request; never stored server-side.","inputSchema":{"type":"object","properties":{"exchange":{"type":"string","enum":["kraken","coinbase"],"description":"Spot exchange to query."},"api_key":{"type":"string","description":"Read-only API key (CDP key name for Coinbase)."},"api_secret":{"type":"string","description":"Read-only API secret (Kraken base64 secret or Coinbase EC PEM)."},"target_pct":{"type":"object","description":"Optional target weights; defaults to server config.","properties":{"BTC":{"type":"number"},"ETH":{"type":"number"},"CASH":{"type":"number"}}},"band":{"type":"number","description":"Drift band width (default from server config)."}},"required":["exchange","api_key","api_secret"]}},{"name":"check_allocation_band","description":"Check whether BTC/ETH/CASH allocation is outside a drift band vs target and return hint (within_band, consider_rebalance, etc.).","inputSchema":{"type":"object","properties":{"allocation_pct":{"type":"object","properties":{"BTC":{"type":"number"},"ETH":{"type":"number"},"CASH":{"type":"number"}},"required":["BTC","ETH","CASH"]},"target_pct":{"type":"object","properties":{"BTC":{"type":"number"},"ETH":{"type":"number"},"CASH":{"type":"number"}},"required":["BTC","ETH","CASH"]},"band":{"type":"number","description":"Drift band width (default 0.15 = 15%)."}},"required":["allocation_pct","target_pct"]}},{"name":"get_context_at","description":"Load a saved ContextBundle snapshot from ingest history by ISO timestamp (match exact or at_or_before).","inputSchema":{"type":"object","properties":{"as_of":{"type":"string","description":"ISO timestamp."},"scope":{"type":"string","enum":["daily","weekly"]},"match":{"type":"string","enum":["exact","at_or_before"]},"assets":{"type":"array","items":{"type":"string","enum":["BTC","ETH","CASH"]},"description":"Subset market and ETF fields (default BTC and ETH)."}},"required":["as_of"]}},{"name":"get_context_delta","description":"Compare two ContextBundle snapshots and return notable_shifts.","inputSchema":{"type":"object","properties":{"prior_as_of":{"type":"string"},"scope":{"type":"string","enum":["daily","weekly"]},"current_as_of":{"type":"string"},"assets":{"type":"array","items":{"type":"string","enum":["BTC","ETH","CASH"]},"description":"Subset market and ETF fields (default BTC and ETH)."}},"required":["prior_as_of"]}},{"name":"check_allocation_bands","description":"Evaluate allocation drift against multiple target/band scenarios.","inputSchema":{"type":"object","properties":{"allocation_pct":{"type":"object","properties":{"BTC":{"type":"number"},"ETH":{"type":"number"},"CASH":{"type":"number"}},"required":["BTC","ETH","CASH"]},"scenarios":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"target_pct":{"type":"object","properties":{"BTC":{"type":"number"},"ETH":{"type":"number"},"CASH":{"type":"number"}}},"band":{"type":"number"}},"required":["target_pct"]}}},"required":["allocation_pct","scenarios"]}}]}],"payment":{"scheme":"exact","payTo":"0xC8e3ff2cd32a162027615f00DA7Aa68eF2F35df5","pricing":{"cached_context_and_math":"$0.02","live_ingest_or_portfolio":"$0.05","network":"eip155:8453","assets":["USDC","EURC"],"note":"Payer chooses one listed stable on Base; amounts are USD-pegged per call tier."}}}