Skip to main content

Documentation Index

Fetch the complete documentation index at: https://docs.manticscore.com/llms.txt

Use this file to discover all available pages before exploring further.

The GitHub integration is the backbone of ManticScore’s code automation. Once connected, you can link any repository to a Forge run, push code from a build node directly to a pull request, browse your repos and branches, and create new repositories — all through your connected GitHub account. ManticScore uses a native PKCE OAuth flow for GitHub, separate from the Composio path used by other integrations.

Connecting GitHub

1

Start the OAuth flow

Call POST /auth/github/start to get an authorization URL. The URL expires in 10 minutes.
curl -X POST https://api.manticscore.com/auth/github/start \
  -H "Authorization: Bearer <token>"
{
  "auth_url": "https://github.com/login/oauth/authorize?client_id=...&state=...&code_challenge=...",
  "expires_in": 600
}
2

Open the URL in a browser

Navigate to auth_url. Sign in to GitHub and authorize the ManticScore app. GitHub redirects back to the app with the connection confirmed.
3

Verify the connection

Check your connection status at any time with GET /auth/github/status.
curl https://api.manticscore.com/auth/github/status \
  -H "Authorization: Bearer <token>"
{
  "connected": true,
  "github_login": "octocat",
  "github_name": "Mona Lisa",
  "avatar_url": "https://avatars.githubusercontent.com/u/583231"
}
To disconnect, call POST /auth/github/disconnect. This revokes the token at GitHub as well.
curl -X POST https://api.manticscore.com/auth/github/disconnect \
  -H "Authorization: Bearer <token>"

Configuring defaults

After connecting, set a default repository and branch configuration so ManticScore knows where to ship code without requiring these values on every call.
curl -X PATCH https://api.manticscore.com/profile/integrations/github/defaults \
  -H "Authorization: Bearer <token>" \
  -H "Content-Type: application/json" \
  -d '{
    "repo": "acme/my-app",
    "default_branch": "main",
    "branch_prefix": "mc/",
    "pr_reviewers": ["alice", "bob"]
  }'
{
  "toolkit": "github",
  "defaults": {
    "repo": "acme/my-app",
    "default_branch": "main",
    "branch_prefix": "mc/",
    "pr_reviewers": ["alice", "bob"]
  }
}
FieldDescription
repoDefault repository in owner/name format
default_branchBase branch for pull requests (default: main)
branch_prefixPrefix applied to all ManticScore-created branches (default: mc/)
pr_reviewersGitHub usernames to request as reviewers on every PR

Browsing your repositories

All /github/* endpoints proxy through your connected GitHub account via Composio.

List repositories

curl "https://api.manticscore.com/github/repos?per_page=100" \
  -H "Authorization: Bearer <token>"
[
  {
    "name": "my-app",
    "full_name": "acme/my-app",
    "default_branch": "main",
    "private": true,
    "html_url": "https://github.com/acme/my-app"
  }
]

List branches

curl https://api.manticscore.com/github/repos/acme/my-app/branches \
  -H "Authorization: Bearer <token>"
[
  { "name": "main", "sha": "a1b2c3d4" },
  { "name": "mc/auth-feature", "sha": "e5f6a7b8" }
]

List open pull requests

curl "https://api.manticscore.com/github/repos/acme/my-app/pulls?state=open" \
  -H "Authorization: Bearer <token>"
[
  {
    "number": 42,
    "title": "Add user authentication",
    "state": "open",
    "html_url": "https://github.com/acme/my-app/pull/42"
  }
]

Creating repositories

curl -X POST https://api.manticscore.com/github/repos \
  -H "Authorization: Bearer <token>" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "new-project",
    "description": "Created from ManticScore",
    "private": true,
    "auto_init": true
  }'
{
  "name": "new-project",
  "full_name": "acme/new-project",
  "html_url": "https://github.com/acme/new-project"
}

Creating pull requests

Push files and open a PR in one call

The push-and-pr endpoint atomically creates a branch, commits your files, and opens a pull request — all in a single request.
curl -X POST https://api.manticscore.com/github/repos/acme/my-app/push-and-pr \
  -H "Authorization: Bearer <token>" \
  -H "Content-Type: application/json" \
  -d '{
    "title": "Add rate limiting middleware",
    "body": "Implements token bucket rate limiting on all public endpoints.",
    "branch_name": "mc/rate-limiting",
    "base_branch": "main",
    "commit_message": "feat: add rate limiting middleware",
    "files": [
      {
        "path": "src/middleware/rate_limit.py",
        "content": "# rate limiting implementation"
      }
    ]
  }'
{
  "branch": "mc/rate-limiting",
  "commit_sha": "a1b2c3d4e5f6",
  "pr_number": 43,
  "pr_url": "https://github.com/acme/my-app/pull/43"
}

Shipping a build plan to GitHub

The most powerful GitHub action is shipping an entire build plan as a Forge run. ManticScore takes your build graph, generates code for the selected tasks, and opens pull requests autonomously.
curl -X POST https://api.manticscore.com/build-graphs/graph-uuid/ship \
  -H "Authorization: Bearer <token>" \
  -H "Content-Type: application/json" \
  -d '{
    "target": "github",
    "repo": "acme/my-app"
  }'
{
  "target": "github",
  "run_id": "forge-run-uuid",
  "repo": "acme/my-app",
  "status": "queued"
}
Shipping to GitHub kicks off a Forge run. Track progress with GET /forge/runs/{run_id}/events. See the Forge documentation for the full run lifecycle.

Implementing a single build node

To implement one specific build node rather than a whole build plan:
curl -X POST https://api.manticscore.com/build-nodes/node-uuid/implement \
  -H "Authorization: Bearer <token>" \
  -H "Content-Type: application/json" \
  -d '{
    "repo": "acme/my-app",
    "branch": "mc/auth-feature",
    "notes": "Use bcrypt for password hashing",
    "mode": "create_pr"
  }'
{
  "node_id": "node-uuid",
  "run_id": "forge-run-uuid",
  "task_id": "task-uuid",
  "repo": "acme/my-app",
  "mode": "create_pr",
  "status": "queued"
}
ManticScore requires push access to the target repository. If you receive a 403 error, verify that your connected GitHub account has write permissions on the repo.