Skip to main content

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.7

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for enablement-agent 1.8.7
File Size Uploaded
enablement_agent-1.8.7.tar.gz 236.5 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for enablement-agent 1.8.7
File Interpreter ABI Platform
enablement_agent-1.8.7-py3-none-any.whl Python 3 none any Details

Total release size: 504.4 kB

Release files / enablement_agent-1.8.7.tar.gz

Download URL enablement_agent-1.8.7.tar.gz
Size 236.5 kB
Tags Source
SHA-256 checksum
How to use checksums
b95370d48768b203c88e7733a7ce3bb8f041a66a7ea0cee6c3a798f27529b2e9
BLAKE2b-256 checksum
How to use checksums
d091b74f2b9d27c271b537c5fbf3bc7b5d81b0b45aa2af8e974982d7bd4fec08
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.7-py3-none-any.whl

Download URL enablement_agent-1.8.7-py3-none-any.whl
Size 267.9 kB
Tags Python 3
SHA-256 checksum
How to use checksums
adfded3438f10f5e28e1564e14f2e4d6782a5f8fff7082e184f7ee4355c67f81
BLAKE2b-256 checksum
How to use checksums
fe3a7f8ff3614e9192bc57d11f606fb4bdae95a2b5ad34583eb4c40d1ff26c50
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 history Release notifications | RSS feed

This release

1.8.7 This release

2 release files

1.8.5

2 release files

1.8.4

2 release files

1.8.3

2 release files

1.8.2

2 release files

1.8.0

2 release files

1.7.1

2 release files

1.7.0

2 release files

1.6.3

2 release files

1.6.1

2 release files

1.6.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page