From a011409037108cf00738897cc3c53db8202d5359 Mon Sep 17 00:00:00 2001 From: Nathan Gillett Date: Mon, 1 Jun 2026 19:37:54 -0500 Subject: [PATCH] Lead public copy with holdings-scoped positioning. Refresh README, registry description, discovery strings, and exchange phrasing (examples, not a cap) ahead of org migration. --- README.md | 11 ++++++----- alloccontext/mcp/bazaar.py | 16 +++++++++------- alloccontext/mcp/server.py | 3 ++- docs/distribution.md | 12 ++++++------ pyproject.toml | 12 ++++++------ server.json | 2 +- 6 files changed, 30 insertions(+), 26 deletions(-) diff --git a/README.md b/README.md index 001cdbc..ae47247 100644 --- a/README.md +++ b/README.md @@ -5,9 +5,10 @@ mcp-name: io.github.negillett/alloc-context -**Portfolio-aware crypto context for agents** — discover holdings, market, -sentiment, macro, and regime; optional allocation analysis. Deterministic -JSON over MCP with x402 pay-per-call on Base. +**Portfolio-aware crypto context for whatever you hold** — discover your +holdings, holdings-scoped market data, sentiment, macro, and regime; optional +allocation analysis when you supply targets. Deterministic JSON over MCP with +x402 pay-per-call on Base. > **Privacy:** nothing stored · one-time read-only · pass-through only — your > keys and portfolio never persist on our servers. See [USE.md](docs/USE.md). @@ -69,7 +70,7 @@ Not financial advice. | **Discovery** | [llms.txt](https://mcp.alloc-context.com/llms.txt), [x402 manifest](https://mcp.alloc-context.com/.well-known/x402.json) | | **Pricing** | **$0.02** cached context/math · **$0.05** live ingest or portfolio | | **Payment** | x402 on Base — USDC or EURC | -| **Market scope** | Holdings-scoped (BTC/ETH OHLC; alt quote snapshots); bridge auto-scopes from portfolio | +| **Market scope** | Tailored to your holdings (band OHLC for BTC/ETH; alt quote snapshots); bridge auto-scopes from portfolio | Agents and wallets connect directly to the hosted endpoint — see [agent-integration.md](docs/agent-integration.md). The Cursor bridge above @@ -86,7 +87,7 @@ combines local portfolio reads with this upstream for market context. | `get_rebalance_plan` | USD rebalance moves from allocation, target, and NAV | | `check_allocation_band` | Drift vs target and whether allocation is outside the band | | `check_allocation_bands` | Batch band checks for multiple target scenarios | -| `get_portfolio_state` | Live NAV and holdings from Kraken or Coinbase | +| `get_portfolio_state` | Live NAV and holdings (e.g. Coinbase, Kraken read-only keys) | Market context is **holdings-scoped**: band assets (BTC/ETH) use OHLC bars; alt holdings (e.g. HYPE) use quote snapshots when cached. The bridge auto-scopes diff --git a/alloccontext/mcp/bazaar.py b/alloccontext/mcp/bazaar.py index c47f058..ed2948d 100644 --- a/alloccontext/mcp/bazaar.py +++ b/alloccontext/mcp/bazaar.py @@ -107,10 +107,11 @@ ) LISTING_DESCRIPTION = ( - "Portfolio-aware crypto context for AI agents: discover holdings, market, " - "sentiment, macro, and regime; optional allocation analysis and rebalance " - "math. Fused backdrop (Fear & Greed, Kalshi, ETF flows), optional live " - "Kraken/Coinbase reads. Structured JSON only — no LLM. " + "Portfolio-aware crypto context for AI agents: discover holdings and " + "holdings-scoped market, sentiment, macro, and regime; optional allocation " + "analysis and rebalance math. Fused backdrop (Fear & Greed, Kalshi, ETF " + "flows), optional live portfolio reads (e.g. Coinbase, Kraken). Structured " + "JSON only — no LLM. " f"{PRIVACY_COMPACT_COPY} " "Source-available (Elastic License 2.0); self-host friendly; official hosted " f"MCP at {OFFICIAL_HOSTED_MCP_URL} — see {USE_DOCS_PATH}." @@ -237,9 +238,10 @@ "tool_name": "get_portfolio_state", "description": ( "Fetch live read-only portfolio NAV, holdings[], and band weights from " - "Kraken or Coinbase credentials passed in this call (never stored). " - "Requires exchange, api_key, and api_secret. Returns available=false " - "with reason on invalid credentials — no side effects." + "a supported spot exchange (e.g. Kraken, Coinbase) using credentials " + "passed in this call (never stored). Requires exchange, api_key, and " + "api_secret. Returns available=false with reason on invalid " + "credentials — no side effects." ), "input_schema": { "type": "object", diff --git a/alloccontext/mcp/server.py b/alloccontext/mcp/server.py index 8649ccc..cff5c7b 100644 --- a/alloccontext/mcp/server.py +++ b/alloccontext/mcp/server.py @@ -209,7 +209,8 @@ def get_rebalance_plan( annotations=_tool_hints("get_portfolio_state"), description=( "Fetch live read-only portfolio NAV, holdings[], and band weights from " - "Kraken or Coinbase credentials passed in this call (never stored). " + "a supported spot exchange (e.g. Kraken, Coinbase) using credentials " + "passed in this call (never stored). " "Requires exchange, api_key, and api_secret. Use get_context_bundle " "for cached market and history without exchange keys. Optional " "target_pct attaches allocation_analysis; optional band sets drift " diff --git a/docs/distribution.md b/docs/distribution.md index 5ede56c..76f8204 100644 --- a/docs/distribution.md +++ b/docs/distribution.md @@ -13,18 +13,18 @@ Use this for directory forms, community posts, and registry descriptions. ```text AllocContext — portfolio-aware crypto context for AI agents over MCP. Discover -holdings, market, sentiment, macro, and regime; optional allocation -analysis. Privacy: nothing stored; one-time read-only; pass-through only. -Source-available (Elastic License 2.0); self-host friendly. Official hosted MCP: -https://mcp.alloc-context.com/mcp — see docs/USE.md. x402 on Base ($0.02 cached -/ $0.05 live). +holdings and holdings-scoped market, sentiment, macro, and regime; optional +allocation analysis. Privacy: nothing stored; one-time read-only; pass-through +only. Source-available (Elastic License 2.0); self-host friendly. Official +hosted MCP: https://mcp.alloc-context.com/mcp — see docs/USE.md. x402 on Base +($0.02 cached / $0.05 live). ``` ## GitHub repository metadata | Field | Value | |-------|-------| -| **Description** | Portfolio crypto context MCP for agents — holdings, market, optional drift. Hosted: https://mcp.alloc-context.com/mcp (x402). ELv2. | +| **Description** | Portfolio crypto context MCP — holdings-scoped market for agents. Hosted: https://mcp.alloc-context.com/mcp (x402). ELv2. | | **Topics** | `mcp`, `x402`, `bitcoin`, `ethereum`, `model-context-protocol`, `agents`, `portfolio` | | **Website** | `https://mcp.alloc-context.com/llms.txt` | diff --git a/pyproject.toml b/pyproject.toml index 64d5388..0ee7f11 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,24 +1,24 @@ [project] name = "alloc-context" version = "0.2.2" -description = "Portfolio-aware crypto context for agents — holdings, market, optional allocation analysis" +description = "Portfolio-aware crypto context for agents — holdings-scoped market, sentiment, optional allocation analysis" readme = "README.md" license = { text = "Elastic-2.0" } requires-python = ">=3.11" keywords = [ "mcp", "x402", - "bitcoin", - "ethereum", + "holdings", + "portfolio", "crypto", "cryptocurrency", - "portfolio", + "bitcoin", + "ethereum", + "agents", "allocation", - "holdings", "rebalance", "coinbase", "kraken", - "agents", ] classifiers = [ "Development Status :: 4 - Beta", diff --git a/server.json b/server.json index d340939..4a2f645 100644 --- a/server.json +++ b/server.json @@ -2,7 +2,7 @@ "$schema": "https://static.modelcontextprotocol.io/schemas/2025-12-11/server.schema.json", "name": "io.github.negillett/alloc-context", "title": "AllocContext", - "description": "Holdings-scoped MCP: Coinbase/Kraken portfolio, alt quotes, drift. x402 hosted. ELv2.", + "description": "Portfolio-aware MCP: holdings-scoped crypto context for agents. Market, sentiment. x402. ELv2.", "websiteUrl": "https://mcp.alloc-context.com/llms.txt", "repository": { "url": "https://github.com/negillett/alloc-context",