Built for machines
Your agent's new favorite tool
Structured JSON. Schema introspection. Dry-run safety rails. Three integration levels. Built for the machines that build your software.
Three levels
Meet your agent where it is
Every agent has different capabilities. Quonfig works with all of them — from a basic git client to a full MCP-native tool caller.
Git + JSON
The Foundation
Your agent already knows git. That's enough. Edit a JSON file, commit, push. Pre-receive hooks validate the structure. No CLI needed.
# Create a feature flag — no CLI needed$ cat > feature-flags/checkout-v2.json << 'EOF'{"key": "checkout-v2","type": "feature_flag","valueType": "bool","default": {"rules": [{"criteria": [{ "operator": "ALWAYS_TRUE" }],"value": { "type": "bool", "value": false }}]}}EOF$ git add feature-flags/checkout-v2.json$ git commit -m "Create checkout-v2 feature flag"$ git push# Pre-receive hooks validate the JSON structure
qf CLI
The Sweet Spot
Structured output. Validation. Dry-run. Every command returns JSON when piped. Your agent parses it, reasons about it, and acts on it.
$ qf flag create checkout-v2 --type bool --default false --dry-run{"action": "create","path": "feature-flags/checkout-v2.json","validation": "passed","wouldCommit": true,"preview": {"key": "checkout-v2","type": "feature_flag","valueType": "bool"}}# Looks good — apply it$ qf flag create checkout-v2 --type bool --default false{"data": {"key": "checkout-v2","path": "feature-flags/checkout-v2.json","commitSha": "e7f8a9b"},"meta": { "action": "created" }}
MCP Server
Zero Friction
Typed JSON-RPC. No shell escaping. No output parsing. Your agent calls functions, not commands.
{"name": "qf_flag_create","description": "Create a new feature flag","inputSchema": {"type": "object","properties": {"key": { "type": "string", "description": "Flag key" },"valueType": {"type": "string","enum": ["bool", "string", "int", "double", "json"]},"default": { "description": "Default value" },"dryRun": { "type": "boolean", "default": true }},"required": ["key", "valueType"]}}
Structured output
JSON your agent can actually parse
No more regex. No more table-scraping. Every response is a typed JSON envelope with data and metadata.
Typical CLI output
NAME TYPE ENV VALUEcheckout-v2 bool production truenew-pricing string staging $39dark-mode bool production falseapi-limits int staging 1000onboarding bool production true
Quonfig output
{"data": [{ "key": "checkout-v2", "valueType": "bool", "value": true },{ "key": "new-pricing", "valueType": "string", "value": "$39" },{ "key": "dark-mode", "valueType": "bool", "value": false },{ "key": "api-limits", "valueType": "int", "value": 1000 },{ "key": "onboarding", "valueType": "bool", "value": true }],"meta": { "count": 5, "environment": "production" }}
Dry-run safety rails
Every mutation supports --dry-run. The agent sees exactly what would change, validates the diff, checks for production warnings, and only then commits.
The agent sees the production warning, verifies it's intentional, and proceeds. No incident. No rollback. No pager going off at 3am.
$ qf flag set checkout-v2 --env production --value true --dry-run{"action": "update","path": "feature-flags/checkout-v2.json","validation": "passed","diff": {"before": { "value": false },"after": { "value": true }},"wouldCommit": true,"warning": "This changes a flag in the production environment"}# Agent sees the warning, verifies intent, then applies$ qf flag set checkout-v2 --env production --value true{"data": { "key": "checkout-v2", "commitSha": "a7f3c2d" },"meta": { "action": "updated", "environment": "production" }}
Self-describing
Your agent never needs to Google the docs
Every command describes itself. Every schema is queryable. Your agent discovers what it can do at runtime.
Discover available operators
{"data": [{ "name": "ALWAYS_TRUE", "description": "Matches all contexts" },{ "name": "PROP_IS_ONE_OF", "description": "Property in list" },{ "name": "IN_SEG", "description": "In segment" },{ "name": "IN_INT_RANGE", "description": "Integer in range" },{ "name": "PROP_ENDS_WITH_ONE_OF", "description": "Property ends with" },{ "name": "HIERARCHICAL_MATCH", "description": "Namespace match" }]}
Describe any command
{"command": "qf flag create","requiredArgs": ["key"],"options": {"--type": {"values": ["bool", "string", "int", "double", "json", "string_list"]},"--default": {"description": "Default value"},"--env": {"description": "Target environment"},"--dry-run": {"description": "Preview without applying"}}}
# Create a feature flag — no CLI needed$ cat > feature-flags/dark-mode.json << 'EOF'{"key": "dark-mode","type": "feature_flag","valueType": "bool","default": {"rules": [{"criteria": [{ "operator": "ALWAYS_TRUE" }],"value": { "type": "bool", "value": false }}]}}EOF$ git add feature-flags/dark-mode.json$ git commit -m "Create dark-mode feature flag"$ git push# Pre-receive hooks validate the JSON structure
The git escape hatch
Your agent can manage feature flags the same way it manages code. Git is the API. JSON is the schema. Every tool that works with files works with Quonfig.
No CLI to install. No SDK to learn. No API keys to manage. Just files in a repo with pre-receive hooks that validate the JSON structure.
Agent context file
Ship a .qf/agent-context.md in your repo. Your agent auto-discovers it and follows the invariants, workflows, and guardrails you define.
Encode your team's policies as instructions your agent actually reads. No dashboards to configure. No RBAC policies to maintain. Just a markdown file in version control.
# Quonfig Agent Context## Invariants- Always --dry-run before production mutations- Never delete flags without checking evaluation stats- Use qf eval to verify targeting before deploying## Common Workflows- Create flag: qf flag create <key> --type bool --default false- Enable for segment: qf flag update <key> --json '...'- Check who's affected: qf eval <key> --env production --context '...'## Guardrails- Production changes require --dry-run first- Flags with >1000 daily evaluations need team review- Segment changes must be tested with qf eval
Give your agents real tools
Three integration levels. Structured JSON everywhere. Safety rails built in. Your agents deserve better than REST APIs and table scraping.