Thanks for your interest in contributing. AdLoop is early-stage and contributions are welcome.
git clone https://github.com/kLOsk/adloop.git
cd adloop
uv sync --all-extrasThis installs both runtime and dev dependencies (pytest, pytest-asyncio).
uv run pytestTests in tests/ cover config loading and safety guards. Integration tests against live Google APIs require credentials and are not run in CI.
- Fork the repo and create a branch from
main - Make your changes
- Run
uv run pytestto make sure nothing breaks - Open a pull request with a clear description of what changed and why
Check open issues for things that need help. If you want to work on something not listed, open an issue first to discuss the approach.
Areas where contributions are especially useful:
- Bug reports — if something doesn't work with your Google Ads/GA4 setup, file an issue with as much context as possible (error messages, account type, API access level)
- Documentation — setup guides, usage examples, troubleshooting tips
- New read tools — additional analytics or ads queries that would be useful
- Testing — expanding test coverage for safety guards and config edge cases
Changes to write tools (anything that mutates Google Ads accounts) require extra scrutiny. If you're modifying the safety layer, explain your reasoning in detail in the PR description.
- Python 3.11+ with type hints
- Use
from __future__ import annotationsin all modules - Keep imports lazy in tool functions (import inside the function body) — this is intentional for MCP server startup speed
By contributing, you agree that your contributions will be licensed under the MIT License.