Centralized Enablement Agent
The canonical knowledge hub for all enablement content across Partner Core.
What it does
This agent ingests, indexes, and serves enablement content — user guides, FAQs, demo scripts, training decks, playbooks, and more. Anyone in Partner Core can query it for answers, search for content, and monitor content freshness.
Architecture
┌─────────────────────────────────────────────────────────────────┐
│ Content IN │
│ ┌──────────────┐ ┌──────────────┐ ┌────────────┐ ┌──────────┐ │
│ │ Delivery │ │ Manual │ │ Wiki │ │ Highspot │ │
│ │ Agent Push │ │ Upload │ │ Scraper │ │ Scraper │ │
│ └──────┬───────┘ └──────┬───────┘ └─────┬──────┘ └────┬─────┘ │
│ │ │ │ │ │
│ └────────────────┴───────────────┴──────────────┘ │
│ │ │
│ ┌───────▼───────┐ │
│ │ Orchestrator │ │
│ └───────┬───────┘ │
│ │ │
│ ┌────────────────────────┼────────────────────┐ │
│ │ │ │ │
│ ┌──────▼──────┐ ┌─────────────▼────────┐ ┌───────▼───────┐ │
│ │ S3 Bucket │ │ OpenSearch Serverless │ │ Content │ │
│ │ (raw files) │ │ (vector embeddings) │ │ Registry │ │
│ └─────────────┘ └──────────────────────┘ └───────────────┘ │
│ │
│ Content OUT (MCP Tools via SSE) │
│ ┌──────────────────────────────────────────────────────────┐ │
│ │ query · search · upload · status · stale · refresh │ │
│ │ check_permissions · request_access │ │
│ └──────────────────────────────────────────────────────────┘ │
└─────────────────────────────────────────────────────────────────┘
Quick Start (for users)
Install and configure in one step:
pip install enablement-agent
enablement-agent configure
Or if you use uvx (recommended):
uvx enablement-agent configure
This writes your ~/.kiro/settings/mcp.json with:
{
"mcpServers": {
"enablement-agent": {
"command": "uvx",
"args": ["enablement-agent", "serve"],
"env": {
"AWS_REGION": "us-east-1"
},
"disabled": false,
"autoApprove": ["ask", "status"]
}
}
}
Or add it manually — that's the whole config.
Prerequisites: AWS credentials configured (midway or ~/.aws/config) with access to the shared S3 bucket, OpenSearch, and Bedrock.
Deployment
Two modes:
Local (stdio) — current default
Users install from PyPI and run locally. Shared backend (S3, OpenSearch, Bedrock) is accessed directly via AWS credentials.
Centralized (SSE) — future
Once a domain + HTTPS cert is provisioned, the server can run on ECS Fargate with SSE transport. Users would just add a URL to their mcp.json.
Backend Infrastructure (shared, required for both modes)
Deploy with CDK:
cd infra/
pip install aws-cdk-lib constructs
cdk deploy
Environment Variables
| Variable | Description |
|---|---|
OPENSEARCH_ENDPOINT |
OpenSearch Serverless collection endpoint |
S3_BUCKET |
S3 bucket name for content storage |
AWS_REGION |
AWS region (default: us-east-1) |
HIGHSPOT_API_KEY |
Highspot API key (or loaded from Secrets Manager) |
LOG_LEVEL |
Logging level (default: INFO) |
Development
# Install with dev dependencies
pip install -e ".[dev]"
# Run tests
pytest
# Lint
ruff check .
# Type check
mypy enablement_agent/
Modules
| Module | Purpose |
|---|---|
orchestrator.py |
Central coordinator, request routing, background jobs |
mcp_tools.py |
FastMCP tool registration (9 tools) |
search.py |
Hybrid BM25 + vector + metadata search engine |
vector_store.py |
OpenSearch Serverless knn integration |
query_handler.py |
NL question answering with LLM synthesis |
ingestion.py |
4 ingestion pipelines |
content_registry.py |
Metadata store with CRUD and bulk queries |
freshness_monitor.py |
Staleness detection and auto-refresh |
rls_guard.py |
Unified RLS enforcement via Galaxi |
permissions_cache.py |
TTL cache for RLS permission lookups |
wiki_scraper.py |
Wiki page discovery and change detection |
highspot_scraper.py |
Highspot spot monitoring |
config.py |
All configuration constants and enums |
cli.py |
CLI entry point (serve, configure, health) |
RLS (Row-Level Security)
Content containing customer data is automatically classified:
- NONE — General enablement, open to all ASP/SMGS
- TERRITORY — Contains territory-level customer data
- PARTNER — Contains partner-specific data (SPMS IDs)
- BROAD — Requires Geo+ level access (L8 approval)
Blocked content is always visible (title + lock icon) but redacted. Users get links to request access.
Freshness
Content is flagged stale after 4 months (120 days) without update. Wiki and Highspot sources auto-refresh when the source changes. Notifications go to the enablement-freshness-alerts channel.
Release files for enablement-agent 1.8.5
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| enablement_agent-1.8.5.tar.gz | 235.4 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| enablement_agent-1.8.5-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 502.5 kB
Release files / enablement_agent-1.8.5.tar.gz
| Download URL | enablement_agent-1.8.5.tar.gz |
|---|---|
| Size | 235.4 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
2903df2d62f9873fe6323e62505b7da2f83c2bb67599d6f6fb621617c0296d43
|
|
BLAKE2b-256 checksum How to use checksums |
9fd1a226f1e74abdea272da385fc971e0b4a10d94c36c7c6b7197b9d1953e6a3
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.11.18 {"installer":{"name":"uv","version":"0.11.18","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":null,"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
|
Release files / enablement_agent-1.8.5-py3-none-any.whl
| Download URL | enablement_agent-1.8.5-py3-none-any.whl |
|---|---|
| Size | 267.1 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
9fe24c2405640279c33da97923e0d99d1deee682dcdd7923e9ed36ccb2ae0330
|
|
BLAKE2b-256 checksum How to use checksums |
c667f76d3537c80d9a8310606ce47ed4a17e65249bb86d546a931440ceab7009
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.11.18 {"installer":{"name":"uv","version":"0.11.18","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":null,"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
|