If you're building AI agents that touch cross-border logistics, trade finance, or procurement workflows and need structured risk triage before human review, this is a trust-routing layer that takes evidence packs and returns auditable escalation decisions. It exposes three vertical workers over MCP: Middle Corridor deal risk gates for Kazakhstan routes, CIS secondary sanctions exposure checks, and agentic interaction trust scoring. Each worker validates evidence against schemas, flags gaps, and routes to allow, step up, escalate, or not-decision-ready outcomes without making factual determinations. Ships with HTTP API, A2A adapter, and Cloudflare Worker baselines, plus optional live retrieval against Watchman or OpenSanctions for sanctions screening. Good fit if you need reproducible geopolitical risk memos with source coverage audit trails baked in.
Product runtime and evidence-discipline layer for strategic intelligence agents. One core service layer behind four delivery surfaces — MCP server, HTTP API, A2A adapter, and a deployable Cloudflare Worker baseline — plus structured per-product contracts, geography-routed reasoning, schema validation, evidence audit, and scoring. Ships with five vertical workers, all deployed: Middle Corridor Deal Risk Gate, CIS Secondary-Sanctions Exposure, Agentic Interaction Trust Gate, Gulf Maritime Exposure Gate, and Kazakhstan Market-Entry Readiness Gate.
Read it as a trust-routing layer for agent-mediated decisions: it turns a partial evidence pack into a structured routing decision — allow, step up, escalate, or not-decision-ready — surfaces the specific missing evidence, and always requires human review for high-stakes actions. It does not approve, clear, or make a factual determination, and does not verify factual truth. Live retrieval is off by default and opt-in per worker profile (see the CIS worker and ADR 0014). Evaluate any worker in a few minutes with live curl calls: docs/agenstry/demo-pack.md.
The skills under skills/ and the canon docs are source, not documentation — a SKILL.md is instructions an agent loads and executes, the way a runtime loads a module. The Python in src/ is the runtime that composes them: global-think-tank-analyst as the reasoning method, central-asia-caspian and gulf-middle-east as regional layers (module roles in llms.txt / agent-manifest.json). Both are version-controlled for the same reason — they're what runs.
pip install agenda-intelligence-md
agenda-intelligence doctor
agenda-intelligence validate-brief examples/agenda-brief.json
agenda-intelligence score examples/agenda-brief.json --evidence examples/source/evidence-pack.json
doctor reports package and MCP-server status; validate-brief confirms a brief matches agenda-brief.schema.json; score returns a heuristic 0–100 number with a structure / evidence / decision-readiness breakdown. Full end-to-end analyze trace (request → routing → memo → validation → audit → score) with reproducibility script: examples/product-shell/full-analyze-trace/.
Optional, only if you want analyze to call the Anthropic API itself rather than letting your host model complete from the returned system prompt:
pip install "agenda-intelligence-md[llm]"
export ANTHROPIC_API_KEY=...
Longer guided tutorial: docs/quickstart.md. MCP client setup: docs/integrations/mcp.md.
A free Cloudflare Workers wrapper is live for discovery, uptime checks, lightweight strategic-risk triage, and A2A/JSON-RPC routing. Six workers are deployed (general triage + the five vertical workers); per-worker endpoints live in each worker section below and in the Status table.
docs/agenstry/demo-pack.md · repeatable Kazakhstan test: docs/agenstry/kazakhstan-live-test.md · announcement: docs/announcements/live-a2a-wrapper.mdTry the flagship live:
curl -X POST https://middle-corridor-deal-risk-gate-a2a.vassiliy-lakhonin.workers.dev/message/send \
-H 'content-type: application/json' \
-H 'x-client-id: live-demo' \
-d @examples/kazakhstan-middle-corridor/live-agent-request.json
Expected: JSON-RPC 2.0 with triage_recommendation: "escalate_before_signature", route/cargo/value extraction, supplied-source detection, the minimum evidence still missing before go, and human-review escalation.
The hosted wrapper is intentionally limited: no payments, no wallets, no factual-truth verification, and no legal/financial/compliance advice. Live retrieval is off by default and opt-in per vertical-worker profile only (currently cis_secondary_sanctions; see ADR 0014 and SOURCE_POLICY.md). Private usage stats: deploy/cloudflare-worker/README.md. Full product behavior remains in the installable stdio MCP server.
Kazakhstan / Middle Corridor Deal Risk Gate is the focused commercial proposition for logistics, trade-finance, procurement, insurance, and compliance-adjacent workflows:
Route + cargo + counterparties + dated sources -> auditable corridor-risk triage, evidence gaps, source coverage, watch-next indicators, and human-review escalation.
The structured response also presence-flags sanctions-relevant / high-risk and re-export / circumvention-watch counterparty jurisdictions, decomposes risk into a domestic-legal vs foreign-sanctions exposure view, and surfaces a vessel deceptive-shipping-practice checklist for the maritime leg. All of this is presence-flagging and evidence triage routed to human review — not a sanctions determination.
Live A2A listing:
docs/use-cases/kazakhstan-middle-corridor.mdexamples/kazakhstan-middle-corridor/docs/agenstry/kazakhstan-live-test.mdThis use case is a pre-compliance evidence and decision-readiness gate. It is not legal, compliance, sanctions, financial, investment, or insurance advice.
The product-grade structured JSON contract is documented in docs/use-cases/kazakhstan-middle-corridor.md, with schemas and fixtures under examples/kazakhstan-middle-corridor/contract/.
Kazakhstan Market Entry Readiness Gate is a structured contract pack for distribution, import, service, showroom, EPC, renewable-energy, infrastructure, technology-transfer, and partner-entry files:
Company + project + Kazakhstan objective + counterparties + supplied sources -> gate decision, readiness label, evidence gaps, claim audit, owner actions, watch-next indicators, and human-review routing.
It is a live vertical worker: a kazakhstan_market_entry_readiness service function, an HTTP route, an A2A profile, and a deployed Cloudflare Worker at https://kazakhstan-market-entry-readiness-a2a.vassiliy-lakhonin.workers.dev. It is not legal, compliance, customs, tax, financial, investment, insurance, sanctions, or launch-authorization advice.
docs/use-cases/kazakhstan-market-entry-readiness.mdschemas/v1/market-entry-readiness-request.schema.jsonschemas/v1/market-entry-readiness-response.schema.jsonsource-requirements/kazakhstan-market-entry-readiness.jsonexamples/kazakhstan-market-entry-readiness/contract/POST /v1/market-entry/readinesskazakhstan_market_entry_readinessFor EU / UK / UAE / Singapore enhanced due diligence on CIS, Caucasus, and Central Asia counterparties (Kazakhstan, Uzbekistan, Kyrgyzstan, Tajikistan, Turkmenistan, Georgia, Armenia, Azerbaijan, Moldova). Structured secondary-sanctions exposure evidence triage against OFAC EO 14114, EU sanctions package, UK OFSI, UN, and FATF / EAG typologies.
This profile declares the capability for per-profile live retrieval with two upstream options, per ADR 0014:
moov-io/watchman Apache-2.0 self-host on a free-tier container (Fly.io, Railway, Render). Set WATCHMAN_URL to activate.OPENSANCTIONS_API_KEY (30-day business-email trial at https://www.opensanctions.org/api/, then per-call billing).Both are currently deferred — the project has not committed to either, and no buyer has been confirmed. When both env vars are set, Watchman wins. When neither is set, the service degrades gracefully and triage is based on user-supplied evidence only — live_retrieval_status: disabled in the response and boundaries.live_retrieval: false in /status.
POST /v1/cis-secondary-sanctions/exposurecis_secondary_sanctions; capability cis_secondary_sanctions_exposuredocs/use-cases/cis-secondary-sanctions.mdexamples/cis-secondary-sanctions/source-requirements/cis-secondary-sanctions.jsonHonest traction: zero paying customers, zero named pilots. Shipped as a portfolio-grade vertical worker for technical evaluators and as a contract real practitioners can inspect, not as a claim of production traction. Boundaries unchanged from the rest of the runtime: not_advice: true, factual_verification: false, human_review_required: true always.
The structured response includes a decision_readiness_score from 0-100, so a buyer can see whether the evidence pack is ready for human review or still missing required source categories.
For trust-and-safety, fraud-risk, product-security, and platform teams reviewing agent-mediated actions across checkout, account, API, MCP tool, and A2A endpoint surfaces.
This worker does not decide whether an actor is a bot. It asks whether the supplied evidence is sufficient to route a specific automated or agentic action: allow_low_risk, require_step_up, escalate_to_human_review, block_until_verified, not_decision_ready, or insufficient_information.
POST /v1/agentic-interaction/trustagentic_interaction_trustdocs/use-cases/agentic-interaction-trust.mdexamples/agentic-interaction-trust/source-requirements/agentic-interaction-trust.jsonBoundaries: no cybersecurity monitoring, fraud adjudication, identity verification, transaction authorization, legal advice, compliance advice, or financial advice. The worker returns evidence gaps, readiness scoring, watch-next indicators, and human_review_required: true.
For trade-finance, marine-insurance, P&I, chartering, and compliance teams reviewing a vessel or voyage transiting the Strait of Hormuz, Persian/Arabian Gulf, Gulf of Oman, Bab-el-Mandeb, or Red Sea.
Structured triage of maritime sanctions and chokepoint-disruption exposure — Iran-oil, Russia price-cap, dark-fleet, STS transfer, flag-hopping, P&I gap, AIS manipulation, ownership/control, dual-use cargo — into an evidence-sufficiency routing decision: insufficient_information, escalate_before_fixture, escalate_before_voyage, not_decision_ready, or ready_for_human_review.
POST /v1/gulf-maritime/exposuregulf_maritime_exposuredocs/use-cases/gulf-maritime-exposure.mdexamples/gulf-maritime-exposure/source-requirements/gulf-maritime-exposure.jsonBoundaries: no live retrieval, does not resolve vessel ownership or verify identity, no legal or sanctions advice. Returns exposure dimensions, evidence gaps, a chokepoint-disruption watch, decision_readiness_score, and human_review_required: true.
| Layer | Repo | Role |
|---|---|---|
| Product runtime (this repo) | agenda-intelligence-md | Core service layer + MCP / HTTP / A2A surfaces, request/memo schemas, geography routing, evidence audit, scoring, vertical workers |
| Reasoning method | global-think-tank-analyst | Strategic-risk reasoning contract; loaded by analyze as the default method |
| Vertical specialist | central-asia-caspian-hybrid-intelligence-skill | Central Asia / Caspian / Middle Corridor domain depth; routed by geography |
| Vertical specialist | gulf-middle-east-hybrid-intelligence-skill | Iran / GCC / maritime chokepoint domain depth; routed by geography |
The product runtime is the integration point: agents call analyze via any surface (MCP, HTTP, A2A), geography routes to the relevant specialist, and the GTTA method frames the reasoning. Each canonical repo (GTTA, vertical specialists) is also usable standalone (paste/attach into any agent). Vertical workers (currently: Middle Corridor Deal Risk Gate, CIS Secondary-Sanctions Exposure, Agentic Interaction Trust Gate, and Gulf Maritime Exposure Gate) live inside this runtime as productized service functions with their own schemas and HTTP/A2A profiles — see AGENTS.md for the spin-off rule.
audit_claims, source_coverage, score_output, middle_corridor_deal_risk, agentic_interaction_trust, etc.) vendor-neutral, no transport, no marketplaceanalyze accepts a structured request (agenda-request.schema.json), routes geography, assembles a system prompt, returns a memo validated against agenda-memo.schema.jsondocs/deployment/http-api.mdmessage/send over the HTTP/service layer; contract in docs/product/a2a-adapter-plan.mddeploy/cloudflare-worker/; six live workers (general triage + the five vertical workers below)Agenda-Intelligence.md)middle-corridor-deal-risk-*) + validators for briefs, evidence packs, audits, signals, memory cards, lensesvalidate-brief, validate-evidence, source-categories, source-coverage, audit-claims, score, bench, doctor (30+ commands)If your environment cannot run an MCP / A2A server but can run a plain HTTP service, install the package and start the HTTP shell:
pip install agenda-intelligence-md
agenda-intelligence-http --host 127.0.0.1 --port 8080
The HTTP API is a portable JSON wrapper over the same core service layer that the MCP, A2A, and Cloudflare Worker surfaces use — same schemas/v1/ contract, same evidence audit, same source coverage logic, same Middle Corridor deal-risk gate. Switching surfaces does not change input/output shape.
Endpoints:
GET /healthz, GET /readyz — liveness / readiness probesPOST /v1/audit-claims — claim-level evidence auditPOST /v1/source-coverage — evidence-pack diagnostics against category source requirementsPOST /v1/score — heuristic before/after scorePOST /v1/middle-corridor/deal-risk — Middle Corridor Deal Risk Gate (middle-corridor-deal-risk-request.schema.json)POST /v1/agentic-interaction/trust — Agentic Interaction Trust Gate (agentic-interaction-trust-request.schema.json)POST /v1/cis-secondary-sanctions/exposure — CIS Secondary-Sanctions Exposure triage (cis-secondary-sanctions-request.schema.json); set OPENSANCTIONS_API_KEY to enable live retrieval, otherwise the profile degrades gracefully to user-supplied evidence onlyOne-call probe:
curl -sS http://127.0.0.1:8080/v1/middle-corridor/deal-risk \
-H 'content-type: application/json' \
-d @examples/kazakhstan-middle-corridor/contract/pre_signature_escalate.request.json
Container build (Dockerfile.api):
docker build -f Dockerfile.api -t agenda-intelligence-md-api:1.1.0 .
docker run --rm -p 8080:8080 agenda-intelligence-md-api:1.1.0
Full HTTP deployment guide, including environment defaults (AGENDA_INTELLIGENCE_HTTP_HOST, AGENDA_INTELLIGENCE_HTTP_PORT), logging discipline, and boundary statements: docs/deployment/http-api.md.
The HTTP shell is portable but not a hardened internet-facing server. No built-in authentication, rate limiting, or TLS — front it with a reverse proxy (nginx, Caddy, Cloudflare Tunnel) and your existing auth layer before exposing it beyond localhost / private network.
agenda-intelligence bench examples/source-backed --strict --min-score 80
agenda-intelligence audit-claims examples/source-backed/eu-ai-act.audit.json --strict
agenda-intelligence mcp-config --client cursor
Pinned-wheel install (instead of PyPI):
pip install https://github.com/vassiliylakhonin/agenda-intelligence-md/releases/download/v1.1.0/agenda_intelligence_md-1.1.0-py3-none-any.whl
20 source-backed cases, reproduced with agenda-intelligence bench examples/source-backed/. The score below measures structural completeness — schema validity, evidence labeling, source-coverage diagnostics, and decision-readiness — not factual accuracy. A high score means a brief is well-formed and audit-ready, not that its claims are true in the world.
| Metric | Value |
|---|---|
| Cases | 20 |
| Mean structural-completeness score | 87.6 / 100 |
| Min / max | 84 / 91 |
| Schema-valid | 100% |
| With evidence pack | 100% |
| With claim-level audit | 100% |
| With source category | 100% |
| Mean source coverage | 14.8% |
| Source coverage gap cases | 20 |
| Orphan evidence refs | 0 |
Heuristic scores are uncalibrated and not validated against expert judgment. They evaluate structure, evidence labeling, source-coverage diagnostics, and decision-readiness — not factual truth.
Benchmark your own output. The same harness scores your agent's briefs and compares them to this baseline — point bench at a directory of your <name>.brief.json cases. No LLM, no network: docs/benchmark-your-output.md.
Flagship example: examples/source-backed/eu-ai-act.md — brief + evidence pack + claim-level audit using illustrative sources. Before / after pairs: examples/before-after/.
verify-quotes checks whether a cited quote or excerpt appears in supplied local text, or in text fetched from an already-specified URL when --fetch is used. It does not discover sources, score source reputation, gather live news, or decide whether a claim is true in the world.
| Schema | Purpose |
|---|---|
agenda-brief.schema.json | Brief structure |
evidence-pack.schema.json | Evidence pack |
evidence-audit.schema.json | Claim-level audit |
signal-tracker.schema.json | Signal lifecycle |
memory-card.schema.json | AnalysisBank cards |
lens-manifest.schema.json | Lens manifest |
signal-classification.schema.json | Signal taxonomy |
Stdio MCP server with 21 tools. Full docs and wire-protocol verification: MCP.md. Client setup: docs/integrations/mcp.md.
| Tool | What it does |
|---|---|
validate_brief | Validate a brief dict against agenda-brief.schema.json |
validate_evidence | Validate an evidence-pack dict against evidence-pack.schema.json |
audit_claims | Check claim-level audit: support distribution, orphan refs, unsupported claims |
score_output | Heuristic score for structure, evidence labeling, decision-readiness |
get_protocol | Return the full Agenda-Intelligence.md reasoning protocol |
get_schema | Return a packaged JSON Schema by name (or list all) so an agent can construct a valid payload before validating |
list_source_categories | List source requirement categories before calling source_plan |
source_plan | Generate a source plan for a given topic |
source_coverage | Diagnose evidence-pack coverage against category source requirements |
verify_quotes | Check cited quote fragments in caller-provided text |
list_lenses | List available lens packs |
get_lens | Return a specific lens pack by name |
analyze | Product-shell pipeline: validate request, route modules, assemble prompt, optionally call LLM, validate memo |
validate_memo | Validate an Agenda memo against agenda-memo.schema.json |
list_signals | List vendored signal archive entries |
get_signal | Return a vendored signal markdown file by id |
deep_dive | Planned v2 placeholder directing callers to analyze depth modes |
middle_corridor_deal_risk | Kazakhstan / Middle Corridor deal-risk gate: structured request → triage, decision-readiness, evidence gaps, human-review flag |
cis_secondary_sanctions_exposure | CIS counterparty secondary-sanctions exposure triage for EU/UK/UAE/Singapore EDD; local stdio runs on user-supplied evidence only |
agentic_interaction_trust | Trust-evidence triage for an agent-mediated interaction before a high-stakes action |
gulf_maritime_exposure | Maritime sanctions / chokepoint-disruption exposure triage for a vessel or voyage (Hormuz, Gulf, Bab-el-Mandeb, Red Sea) |
| Component | Status |
|---|---|
| Markdown protocol, JSON schemas | Stable |
| CLI (validate, score, bench, audit, doctor) | Stable |
| MCP stdio server | Stable |
| HTTP API shell | Shipped (self-host); contract early — see docs/deployment/http-api.md |
| A2A adapter | Shipped (Cloudflare Worker baseline); contract in docs/product/a2a-adapter-plan.md |
| Cloudflare Worker deployment | Live (6 workers: general triage + Middle Corridor Deal Risk Gate + CIS Secondary-Sanctions Exposure + Agentic Interaction Trust Gate + Gulf Maritime Exposure + Kazakhstan Market-Entry Readiness Gate) |
| Middle Corridor Deal Risk Gate (vertical worker) | Live, no paying customers yet — illustrative usage only |
| Kazakhstan Market-Entry Readiness Gate (vertical worker) | Live, no paying customers yet — illustrative usage only |
| Evidence-audit schema (claim-level) | Stable |
| Signal-tracker schema (lifecycle) | Stable |
| Heuristic scoring | Stable (uncalibrated) |
| Live source retrieval | Not implemented |
| Factual-truth verification | Not in scope |
verify-quotes --fetch) is opt-in and bounded (1 MB cap, 10 s timeout, stdlib HTTP only).Full threat model: docs/threat-model.md. Retrieved-content trust rule: AGENTS.md.
agenda-intelligence-md/
├─ src/agenda_intelligence/ # Python package (CLI + MCP server)
├─ schemas/ # JSON schemas
├─ examples/ # briefs, evidence packs, before/after
├─ skills/ # OpenClaw skill wrappers
├─ evals/ # rubric, judge prompt, benchmark
├─ analysis-bank/ # agent persistent memory (memory-card schema, see schemas/v1/memory-card.schema.json)
├─ docs/ # guides, integrations, use-cases
├─ scripts/ # dev and CI helpers
└─ tests/ # pytest suite
New contributors: CONTRIBUTING.md opens with a "First 15 minutes" onboarding path (read the three load-bearing files → run the validator → walk one concrete artifact end-to-end). The portfolio glossary at docs/glossary.md is the single source of truth for cross-repo terminology (evidence modes, Axis A/B provenance tags, three-value response logic, maturity-framework asymmetry).
Before editing any of the dual-copy files — Agenda-Intelligence.md, SOURCE_POLICY.md, llms.txt, agent-manifest.json, schemas/, skills/, source-requirements/ — read the "Critical invariant: dual-copy sync" section in CONTRIBUTING.md. Editing one copy without the paired copy under src/agenda_intelligence/data/ is the most common reason CI breaks on main for first-time contributors.
Vassiliy Lakhonin — Almaty, Kazakhstan (UTC+5)
Portfolio · For analysts · Email · LinkedIn · GitHub
Issues, PRs, and eval-case contributions are welcome.
MIT.
Disclaimer. This toolkit is for informational and educational purposes only. It does not constitute investment, financial, legal, compliance, or trading advice. It does not verify factual truth, predict outcomes, or replace professional judgment. Use at your own risk.
mcp-name: io.github.vassiliylakhonin/agenda-intelligence-md
ANTHROPIC_API_KEYsecretOptional. When set together with the [llm] extra (pip install 'agenda-intelligence-md[llm]'), the `analyze` tool calls the Anthropic API directly and returns a schema-validated memo. Without this key, `analyze` returns the assembled system_prompt for the host model to complete.
AGENDA_INTELLIGENCE_MODELOptional. Anthropic model identifier used when ANTHROPIC_API_KEY is set. Defaults to a current Claude model.
AGENDA_INTELLIGENCE_MAX_TOKENSOptional. Max tokens for the Anthropic call from `analyze`. Defaults to 4096.