Portfolio-aware crypto context — CEX or wallet holdings, holdings-scoped market, optional allocation analysis
Project description
AllocContext
mcp-name: io.github.AllocContext/alloc-context
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.
New here? Agent on-ramp (~2 min) — copy-paste path to your first ContextBundle. Organization: AllocContext on GitHub — overview and integration links.
Privacy: nothing stored · one-time read-only · pass-through only — your keys and portfolio never persist on our servers. See USE.md.
Quick start (Cursor)
1. Install
pip install "alloc-context[mcp,hosted]"
# From source: pip install -e ".[mcp,hosted]"
2. User config
Copy config/user.example.yaml to
~/.config/alloc-context/user.yaml. For portfolio discovery (optional): read-only
CEX keys (e.g. Coinbase, Kraken) in user config, or call hosted
get_portfolio_state with exchange=wallet and a public EVM address. Add an x402
payer for hosted market context. See user-config.md.
3. MCP config
Add to your Cursor mcp.json (or project .cursor/mcp.json):
{
"mcpServers": {
"alloc-context": {
"command": "alloc-context",
"args": [
"mcp",
"--user-config",
"/Users/you/.config/alloc-context/user.yaml"
]
}
}
}
Use an absolute path for --user-config. Example:
cursor-mcp-bridge.example.json.
4. Ask your agent
Call get_context_bundle for a full snapshot (holdings when a portfolio source
is configured, market/sentiment/macro via hosted upstream). Pure math tools
(check_allocation_band, get_rebalance_plan) work without portfolio credentials.
Full setup guide: cursor-mcp.md. Sample responses: examples.md.
Not financial advice.
Hosted MCP
| URL | https://mcp.alloc-context.com/mcp |
| Discovery | llms.txt, x402 manifest |
| Pricing | $0.02 cached context/math · $0.05 live ingest or portfolio |
| Payment | x402 on Base — USDC or EURC |
| 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. The Cursor bridge above combines local portfolio reads with this upstream for market context.
MCP tools
| Tool | Purpose |
|---|---|
get_context_bundle |
Full ContextBundle — holdings, market, sentiment, macro, delta, regime; optional allocation_analysis |
get_market_context |
Sentiment, macro, ETF, breadth, and market fields (no portfolio) |
get_context_at |
Saved snapshot from ingest history at a given as_of |
get_context_delta |
Notable shifts between two saved snapshots |
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 (CEX keys or public EVM wallet address) |
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
assets from your portfolio (symbols only upstream). See
context-bundle.md#market-coverage.
See mcp.md for arguments, pricing, and resources.
Self-host and development
Run ingest and MCP entirely on your machine — no x402 upstream required.
See self-hosting.md (self_host: true in user config),
local-dev.md for the native dev stack (./scripts/dev-up.sh),
or ./docker/up.sh / docker-self-host.md for Docker
on loopback :8000.
git clone git@github.com:AllocContext/alloc-context.git
cd alloc-context
python3.11 -m venv .venv && source .venv/bin/activate
pip install -e ".[dev]"
cp .env.example .env
cp config/config.example.yaml config/config.yaml
python -m alloccontext ingest --dry-run
python -m alloccontext rollup --scope daily --stdout
pytest
| Command | Purpose |
|---|---|
python -m alloccontext ingest |
Pull configured sources → SQLite |
python -m alloccontext rollup --scope daily --stdout |
ContextBundle JSON (facts) |
python -m alloccontext status |
Per-source ingest ages, snapshots, MCP /health |
alloc-context mcp |
MCP server (stdio or HTTP) |
HTTP MCP + x402: mcp-http.md. CLI entry point:
alloc-context (same as python -m alloccontext).
Documentation
| Document | Purpose |
|---|---|
| docs/agent-onramp.md | Start here — ~2 min to first ContextBundle |
| docs/deterministic-context-mcp-pattern.md | Reusable ingest → rollup → MCP → x402 pattern |
| docs/langchain-integration.md | LangChain tools for hosted MCP (x402) |
| docs/docker-self-host.md | Docker Compose self-host evaluation |
| docs/cursor-mcp.md | Cursor stdio MCP (bridge default) |
| docs/user-config.md | Bridge user.yaml reference |
| docs/mcp.md | MCP tools and x402 |
| docs/agent-integration.md | Paid HTTP MCP + Bazaar for agents |
| docs/examples.md | Sample tool JSON (redacted) |
| docs/context-bundle.md | ContextBundle schema |
| docs/USE.md | Self-host vs hosted MCP (plain language) |
| docs/mcp-http.md | HTTP MCP + x402 setup |
| docs/mcp-discovery.md | Bazaar and agent discovery |
| docs/self-hosting.md | Optional Linux/systemd ingest + MCP |
| docs/local-dev.md | Local internal MCP + dev ingest |
| docs/architecture.md | Pipeline and trust boundaries |
| docs/data-sources.md | Ingest sources |
| docs/distribution.md | GitHub, PyPI, MCP Registry, directories |
| docs/publishing.md | Release workflow and version bumps |
| docs/security-ci.md | CI coverage, Bandit, and pip-audit gates |
Contributing
GitHub Issues are welcome for bugs, schema feedback, and MCP API suggestions. Unsolicited pull requests are not expected — see CONTRIBUTING.md.
License
Elastic License 2.0 — source-available, self-host friendly. See docs/USE.md for plain-language allowed uses.
Official hosted MCP: https://mcp.alloc-context.com/mcp
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file alloc_context-0.2.12.tar.gz.
File metadata
- Download URL: alloc_context-0.2.12.tar.gz
- Upload date:
- Size: 179.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
4c8aea71508c6526a02522b3ecda84dc1c1cb22e35a94de2cfed615c619b7678
|
|
| MD5 |
bf7a4253924509a7e2a117157475854a
|
|
| BLAKE2b-256 |
6828a036f850304f7701ebd0f1170b467e73db98ba3b10ecec8012570936013e
|
Provenance
The following attestation bundles were made for alloc_context-0.2.12.tar.gz:
Publisher:
release.yml on AllocContext/alloc-context
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
alloc_context-0.2.12.tar.gz -
Subject digest:
4c8aea71508c6526a02522b3ecda84dc1c1cb22e35a94de2cfed615c619b7678 - Sigstore transparency entry: 1870856963
- Sigstore integration time:
-
Permalink:
AllocContext/alloc-context@fd89074f6052f2641c3c32d153ead0fcb2d2c36b -
Branch / Tag:
refs/heads/main - Owner: https://github.com/AllocContext
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@fd89074f6052f2641c3c32d153ead0fcb2d2c36b -
Trigger Event:
push
-
Statement type:
File details
Details for the file alloc_context-0.2.12-py3-none-any.whl.
File metadata
- Download URL: alloc_context-0.2.12-py3-none-any.whl
- Upload date:
- Size: 170.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
3f565cace7ca7d3e6a206849e861d6618617d1f11d2eeb34fd255567b7e34dfa
|
|
| MD5 |
9f04cdeaef11069e4b007713b7c4af62
|
|
| BLAKE2b-256 |
f19a14319d45937f929590fa46086ce816793524e0d0d3f6f5753f19a3725a42
|
Provenance
The following attestation bundles were made for alloc_context-0.2.12-py3-none-any.whl:
Publisher:
release.yml on AllocContext/alloc-context
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
alloc_context-0.2.12-py3-none-any.whl -
Subject digest:
3f565cace7ca7d3e6a206849e861d6618617d1f11d2eeb34fd255567b7e34dfa - Sigstore transparency entry: 1870856974
- Sigstore integration time:
-
Permalink:
AllocContext/alloc-context@fd89074f6052f2641c3c32d153ead0fcb2d2c36b -
Branch / Tag:
refs/heads/main - Owner: https://github.com/AllocContext
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@fd89074f6052f2641c3c32d153ead0fcb2d2c36b -
Trigger Event:
push
-
Statement type: