A connector is just an MCP server, and Aggrete governs any MCP server, so adding a system is not a plugin you wait for: reads map to a policy domain, writes are named with a write verb and governed as egress. The connector SDK removes the boilerplate, and Google Drive ships as the folder-fenced reference.
# a connector in ~20 lines, on aggrete.connectors.base from aggrete.connectors.base import Connector c = Connector("crm") @c.read("search_accounts", "Search CRM accounts by name.") def search(query): return my_crm.search(query) @c.write("create_note", "Add a note to an account.") def create_note(account_id, text): return my_crm.add_note(account_id, text) c.run() # .write() refuses a name with no write verb, which is what keeps it governed
The SDK, the guide and the Drive reference are Apache-2.0. Map the tools to a domain in proxy.config.yaml and the code of conduct governs them like the built-ins.
# the full guide + a copy-paste template
docs/CONNECTORS.md
examples/connectors/Slack, GitHub, Drive, Jira, Salesforce and Notion ship in the package, governed by the same packs as the built-ins. Confluence, Microsoft 365, ServiceNow, Box and Zendesk are next.
# included connectors slack__post_legal → egress github__create_issue_* → egress