CLI, Python SDK, and MCP server for the GlassFrog API v3.
Manage Holacracy governance — circles, roles, people, policies, and more — from the command line or through AI agents.
git clone git@github.com:PrecisionNutrition/frogger.git
cd frogger
python3 -m venv .venv && source .venv/bin/activate
pip install -e ".[dev]"mkdir -p ~/.config/glassfrog
echo "YOUR_API_KEY" > ~/.config/glassfrog/api_key.txtOr set the GLASSFROG_API_KEY environment variable.
# List resources
frogger circles list
frogger roles list --circle-id 272
frogger people list --circle-id 272
frogger policies list --circle-id 272
# Get a single resource
frogger circles get 272
frogger people get 1082
frogger people get alaina@precisionnutrition.com # lookup by email
# JSON output (for scripting / agents)
frogger --json circles list
# Full backup
frogger backup
# Organization info
frogger orgfrogger people create --name "Jane Doe" --email "jane@example.com"
frogger projects create --description "New project" --circle-id 272 --role-id 2670 --person-id 1082
frogger people update 1082 --name "New Name"Deletes always require --force and automatically back up the record first:
frogger people delete 12345 --forceUse --dry-run to preview without executing:
frogger --dry-run people delete 12345 --forceSince policies can't be created via the API, generate a formatted proposal document:
frogger policies propose 272 --title "My Policy" --body "Policy text here"This saves a markdown file to ./proposals/ with circle context and existing policies for reference.
| Command | Operations |
|---|---|
circles |
list, get |
roles |
list, get |
people |
list, get, create, update, delete |
assignments |
list, create, update, delete |
projects |
list, create, update, delete |
metrics |
list, create, update, delete |
checklist-items |
list, create, update, delete |
custom-fields |
list, create, update, delete |
policies |
list, propose |
domains |
list |
actions |
list, create, update, delete |
tensions |
list, create, update |
proposals |
list, create |
backup |
full backup |
org |
show org info |
| Flag | Description |
|---|---|
--json |
Machine-readable JSON output |
--no-backup |
Skip the full-backup prompt on writes |
--dry-run |
Preview write/delete without executing |
--verbose |
Show HTTP request details |
--api-key |
Override API key |
| ID | Circle |
|---|---|
| 272 | PN Company (top-level) |
| 432 | Financial Operations |
| 1281 | People Operations |
| 7215 | Coaching and Education Operations |
| 100741 | Growth & Customer Experience |
| 100747 | Technology |
Use the SDK directly in Python:
from glassfrog import GlassFrogClient
from glassfrog.resources import circles, policies
client = GlassFrogClient.from_key_file()
# List all circles
for circle in circles.list_circles(client):
print(f"{circle.id}: {circle.name}")
# Get policies for PN Company
for policy in policies.list_policies(client, circle_id=272):
print(f"{policy.title}: {policy.body[:80]}")Expose GlassFrog as tools for Claude and other AI agents.
claude mcp add --transport stdio glassfrog -- python -m glassfrog_mcp
# Or user-wide (all projects):
claude mcp add --transport stdio --scope user glassfrog -- python -m glassfrog_mcpAdd to ~/Library/Application Support/Claude/claude_desktop_config.json:
{
"mcpServers": {
"glassfrog": {
"command": "python",
"args": ["-m", "glassfrog_mcp"],
"env": {}
}
}
}The MCP server provides 41 tools (glassfrog_circles_list, glassfrog_people_get, etc.) and a glassfrog_guide prompt describing all capabilities.
# Unit tests (mocked HTTP)
pytest tests/unit/ -v
# Integration tests (live API, GET-only)
pytest tests/integration/ -m integration -v -s
# All tests
pytest -v
# Coverage (SDK)
pytest tests/unit/ --cov=src/glassfrog --cov-report=term-missing- Deletes require
--forceand always back up the record first - Per-record backup on delete is mandatory and cannot be skipped
frogger backupcreates a full timestamped snapshot of all data- Backups are stored in
~/.config/glassfrog/backups/ - Integration tests only use GET — no writes against the live API