Architecture
| Component | Purpose |
|---|---|
| LlmAgent | Wraps an LLM with instructions and tools |
| MCPToolset | Connects to Civic’s MCP Hub, discovers and invokes tools |
| Runner | Orchestrates agent execution and streams response events |
| SessionService | Manages conversation state |
Prerequisites
- A Civic account at app.civic.com with a configured toolkit
- A Civic token (how to get one)
Get Your Credentials
How to generate a Civic token and configure toolkit URL parameters
Environment Variables
All implementations require:- Python (Claude)
- TypeScript (Gemini)
- Go (Gemini)
Requirements: Python 3.10+, uv (recommended) or pip, an Anthropic API keyOpen http://localhost:8000 and select
Installation
Additional env var
Connecting to Civic
ADK has native Anthropic model support viagoogle.adk.models.anthropic_llm.Claude — no LiteLlm dependency needed. Register Claude with the model registry and reference the model by string:Running the Agent
Option A: ADK web consoleADK ships with a built-in development UI:civic_agent from the dropdown.Option B: Programmatic runnerUse
types.Part(text=...) — not types.Part.from_text(...). The from_text class method was removed in recent versions of the Google Gen AI SDK.Production Configuration
Lock to a specific toolkit using theprofile URL parameter:
Reference Implementation
google-adk-reference-implementation-civic
Complete implementations in Python, TypeScript, and Go with deployment guides
Next Steps
Agent Deployment
Production deployment guide: profile locking, URL params, authentication
Guardrails
Constrain what tools your agent can call
Audit Trail
Query what your agent did via Civic Chat
Get Credentials
Token generation and URL parameter reference

