Docs
Upload coverage, then connect your coding agent.
Generate an LCOV, Cobertura, or JaCoCo report in CI. 9to5 turns it into GitHub feedback for people and exact read-only coverage context for MCP clients.
Coverage status badges
Add default-branch or branch-specific project coverage to a repository README.
MCP for Codex and Claude
OAuth, API tokens, client configuration, tool contracts, pagination, and agent workflow.
JavaScript / TypeScript
Jest and Vitest examples that upload coverage/lcov.info.
Python
pytest and coverage.py XML output for a Cobertura-compatible upload.
Java
Maven and Gradle examples that upload native JaCoCo XML.
PHP
PHPUnit Cobertura output and GitHub Actions upload setup.
Go
Go cover profiles converted to LCOV for upload.
Xcode / Swift
Xcode Cloud scripts that convert xccov output to LCOV.
API reference
Authentication, artifact URL uploads, multipart upload fields, responses, and errors.
API reference
Current upload API
Use the reusable GitHub Action for GitHub Actions setup. The same endpoint also supports bearer-token multipart uploads for other CI providers and JSON artifact URL submissions for the Action.
Authentication
Send Authorization: Bearer COVERAGE_UPLOAD_TOKEN. Repository and organization tokens are supported.
Upload endpoint override
POST /api/v1/repos/:owner/:repo/coverage
The GitHub Action's endpoint input is optional and only needed when overriding the default upload host. Multipart fields: commit_sha, branch, and coverage or file.
Artifact JSON
JSON submissions use commit_sha, branch, artifact_url, and coverage_path. Artifact URLs must point to a GitHub Actions artifact for the same repository.
Optional fields
Include base_sha, base_branch, pull_request_number, and run_url for richer pull request reporting.
Success response
Multipart uploads return status, coverage_run_id, project and patch coverage percentages, and project/patch conclusions. Artifact JSON submissions return status: queued, upload_id, and job_id; processing status is visible on the repository page.
Error responses
400: commit SHA, branch, coverage file, or artifact URL is missing or invalid.
401: upload token is invalid for the requested repository.
422: the coverage file cannot be downloaded, found, parsed, or persisted.
Planned direct upload flow
The reliable-upload milestone will add POST /api/v1/repos/:owner/:repo/coverage_uploads, POST /api/v1/coverage_uploads/:id/complete, and a status endpoint that returns processing state plus the resulting coverage run ID.