rmi-backend/app/caching_shield/platform_manifest.py
opencode c762564d40 style(rmi-backend): complete lint cleanup — 1175→0 ruff errors
- Fix 71 invalid-syntax files (class-body newline-broken assignments)
- Add from/None chain to 307 B904 raise-without-from sites
- Add B008 ignore to ruff.toml (already in pyproject.toml)
- Noqa F401 on __init__.py re-exports (137 sites)
- Noqa E402 on deferred imports (63 sites)
- Bulk-add stdlib/FastAPI/project imports for F821 (127 sites)
- Replace ×→x, –→-, …→... in docstrings (4093 chars)
- Manual refactor of 5 SIM103/SIM116 patterns

Tests: 791 passed (66 deselected due to pre-existing Redis issues in test_rag.py)
Co-authored-by: opencode <opencode@rugmunch.io>
2026-07-06 15:43:20 +02:00

185 lines
8.8 KiB
Python

"""
RMI Platform Manifest - Single source of truth for all platform descriptions.
Every external-facing surface reads from here: MCP discovery, docs,
directory listings, READMEs, Smithery, Glama, mcp.so, Open WebUI.
Update ONCE here, everything else auto-syncs.
"""
from datetime import UTC, datetime
from app.caching_shield.agent_skills_extended import get_all_agent_skills
from app.caching_shield.membership_plans import get_membership_catalog
from app.caching_shield.tool_registry import TOOL_COUNTS
from app.routers.x402_enforcement import CHAIN_USDC, TOOL_PRICES
def get_platform_manifest() -> dict:
"""The ONE source of truth. Every platform surface reads from this."""
tools = dict(TOOL_PRICES)
counts = TOOL_COUNTS
membership = get_membership_catalog()
skills = get_all_agent_skills()
return {
# ═══ IDENTITY ═══
"name": "Rug Munch Intelligence",
"tagline": "The Bloomberg Terminal of Shitcoins",
"version": "3.3.0",
"updated": datetime.now(UTC).isoformat(),
# ═══ TOOL COUNTS (auto from tool_registry) ═══
"tools": {
"total": counts["total"],
"paid": len(tools),
"with_free_trials": len(tools), # every paid tool has free trials
"free_trial_calls": "1-5 per tool, fingerprint-gated anti-abuse",
"local_mcp": counts["local_mcp_svm"] + counts["local_mcp_evm"],
"free_public": counts["free_mcp_boar"],
"categories": len({p.get("category", "analysis") for p in tools.values()}),
"chains": len(CHAIN_USDC),
"facilitators": 8,
},
# ═══ PRICING ═══
"pricing": {
"individual": "$0.01 - $0.40 per call",
"scan_packs": {
"count": membership["stats"]["total_bundles"],
"range": "$0.09 - $0.17",
"discount": "50-53% off individual tools",
},
"memberships": {
"tiers": membership["stats"]["subscription_tiers"],
"range": "$4.99 - $199.99/month",
"daily_calls": "50 - 5,000",
"discount": "60-90% vs pay-per-use",
},
"streams": {
"count": membership["stats"]["total_streams"],
"range": "$0.30 - $0.75/hour or $5.99 - $14.99/day",
},
"research": {
"count": membership["stats"]["total_research"],
"range": "$0.25 - $1.50 per report",
},
"batch": {
"count": membership["stats"]["total_batch"],
"discount": "75-90% off bulk scanning",
},
"refund_policy": "Full automatic refund within 48h if tool returns no data",
},
# ═══ SKILLS ═══
"agent_skills": {
"total": len(skills["skills"]),
"categories": {
"security_vetting": [
"token_vetting",
"scam_investigation",
"rugpull_forensics",
"compliance_screen",
],
"trading_execution": [
"launch_sniper",
"mev_avoidance",
"market_maker",
"portfolio_defense",
],
"alpha_discovery": [
"alpha_discovery",
"whale_tracking",
"cex_listing_predictor",
"insider_trading",
],
"defi_yield": ["defi_yield_optimizer", "bridge_monitor", "dao_governance"],
"nft_influencer": ["nft_sniper", "kols_detector", "airdrop_hunting"],
},
"agent_prompts": len(skills["agent_prompts"]),
},
# ═══ ACCESS ═══
"endpoints": {
"mcp": "https://mcp.rugmunch.io/mcp",
"discovery": "https://mcp.rugmunch.io/.well-known/mcp",
"tools": "https://mcp.rugmunch.io/mcp/tools",
"membership": "https://mcp.rugmunch.io/mcp/membership",
"skills": "https://mcp.rugmunch.io/mcp/skills",
"docs": "https://rugmunch.io/docs",
"investigate": "https://rugmunch.io/investigate",
},
# ═══ INTEGRATIONS ═══
"integrations": {
"mcp_clients": [
"Claude Desktop",
"Cursor",
"Windsurf",
"Cline",
"OpenAI Agents",
"LangChain",
],
"sdks": [
"Python (pip install rmi-agent-sdk)",
"TypeScript (npm install @rugmunch/agent-sdk)",
],
"directories": {
"smithery": "https://smithery.ai/server/@cryptorugmuncher/rug-munch-intelligence",
"glama": "https://glama.ai/mcp/servers/@cryptorugmuncher/rug-munch-intelligence",
"mcp_so": "https://mcp.so/server/rug-munch-intelligence",
"github": "https://github.com/Rug-Munch-Media-LLC/rug-munch-intelligence-mcp",
},
},
# ═══ WHAT'S NEW ═══
"changelog": [
"18 agent skills with workflow guides and anti-abuse rules",
"4 membership tiers with daily call limits (60-90% discount)",
"4 scan packs with 50-53% off individual tools",
"4 real-time streaming feeds (WebSocket + webhook delivery)",
"4 deep research report products",
"3 batch scanning products (75-90% off bulk)",
"3 AI-optimized data feeds for LLM consumption",
"85 local MCP tools (Solana RPC + EVM across 86 networks)",
"50 free Boar blockchain tools (ETH, ENS, contracts)",
"Multi-provider caching shield on every data call",
],
# ═══ DESCRIPTIONS (formatted for different contexts) ═══
"descriptions": {
"short": f"{counts['total']} crypto intelligence tools with free trials. Token security, wallet forensics, whale tracking, market data. Pay-per-use via x402 micropayments. Scan packs and membership tiers available.",
"medium": f"Rug Munch Intelligence provides {counts['total']} crypto intelligence tools across {len(CHAIN_USDC)} blockchains. Every tool includes free trials (1-5 calls). Scan packs from $0.09 (53% off). Membership tiers from $4.99/month. Real-time streams, deep research reports, batch scanning, and AI-optimized data feeds. Full refund if no data returned. 18 agent skills with workflow guides included.",
"long": f"Rug Munch Intelligence is a unified crypto intelligence platform serving {counts['total']} tools. Every data call routes through a multi-layer caching shield with automatic provider fallback across 20+ data sources.\n\nTOOLS: Token security (rug pulls, honeypots, audits), wallet intelligence (PnL, clustering, insider networks), whale tracking, market data, DeFi analytics, social signals.\n\nPRICING: Pay-per-use from $0.01. Scan packs from $0.09 (50-53% off). Membership tiers from $4.99-$199.99/month (60-90% discount). Real-time streams from $0.30/hr. Deep research reports from $0.25. Batch scanning at 75-90% off.\n\nFREE TRIALS: Every paid tool includes 1-5 free calls. Fingerprint-gated anti-abuse. Monthly reset.\n\nAGENT SKILLS: 18 workflow guides teaching agents how to vet tokens, track whales, investigate scams, discover alpha, and manage portfolios.\n\nCHAINS: {', '.join(sorted(CHAIN_USDC.keys())[:8])} and 80+ more via local MCP servers.\n\nACCESS: MCP endpoint at https://mcp.rugmunch.io/mcp. REST API at https://rugmunch.io/api. Python and TypeScript SDKs available.",
},
}
# ═══ AUTO-SYNC ═══
def sync_to_mcp_discovery() -> dict:
"""Generate the MCP discovery JSON fragment that should be merged into _build_discovery()."""
m = get_platform_manifest()
return {
"description": m["descriptions"]["short"],
"tools_count": m["tools"]["total"],
"free_trial_tools": m["tools"]["with_free_trials"],
"pricing": m["pricing"],
"skills_count": m["agent_skills"]["total"],
"membership_endpoint": m["endpoints"]["membership"],
"skills_endpoint": m["endpoints"]["skills"],
}
def sync_to_readme() -> str:
"""Generate a README.md section."""
m = get_platform_manifest()
return m["descriptions"]["long"]
def sync_to_directory_listing() -> dict:
"""Generate fields for Smithery/Glama/mcp.so listings."""
m = get_platform_manifest()
return {
"name": m["name"],
"description": m["descriptions"]["short"],
"tools_count": m["tools"]["total"],
"chains": m["tools"]["chains"],
"pricing": "Free trials + pay-per-use + memberships",
"version": m["version"],
"endpoint": m["endpoints"]["mcp"],
}