Zero credential management: Civic Hub handles all OAuth tokens, token refresh, guardrails, audit logging, and instant revocation server-side. No Google credentials are stored in your project.
Prerequisites
- Python 3.13+
- Docker and Docker Compose
- A Civic account at app.civic.com with Google Calendar and/or Gmail servers connected
- A Civic token (generate from Install → MCP URL)
- An Anthropic API key
- A Telegram Bot Token from BotFather
Environment Variables
Get Your Credentials
How to generate a Civic token and configure toolkit URL parameters
Configuration
CianaParrot uses aconfig.yaml file for MCP server configuration. Point it at Civic Hub using Streamable HTTP transport:
config.yaml
Running with Docker
.env file with the variables above, then:
Architecture
Recommended Guardrails
Set these in Civic Chat to protect against unintended actions:| Server | Tools to Block | Why |
|---|---|---|
| Google Calendar | delete_event, modify_event | Prevents deleting events or modifying attendees |
| Gmail | delete_gmail_filter, create_gmail_filter | Prevents filter manipulation that could hide or redirect emails |
Configure Guardrails
Set up blocking rules via Civic Chat or the UI
Production Configuration
Lock to a Toolkit
For production bots, always lock to a specific toolkit:Pre-load Skills
Load specific Skills at session start:Reference Implementation
The full reference implementation with Docker Compose, configuration, and deployment patterns: github.com/civicteam/ciana-parrot-reference-implementation-civicNext Steps
Agent Deployment
Production deployment guide: profile locking, URL params, authentication
Guardrails
Constrain what tools your agent can use
Audit Trail
Query what your agent did via Civic Chat
Get Credentials
Token generation and URL parameter reference

