github_pulls
GitHub — pull requests: diff, reviews, reviewers, merging.
A PR's THREAD comments, labels and assignments go through
github_issues with the same number — this is intended on GitHub's side. What lives here
is what is specific to a PR: the diff, reviews, line-by-line
comments, and merging.
⚠️ A merged PR is closed: there is no merged state.
To tell them apart, read merged_at (null = closed without merging), or
op='merged'.
⚠️ mergeable may be null on op='get': GitHub computes it
in the background on the first call. null means "not known yet" —
ask again, above all do not read it as "not mergeable".
⚠️ op='merge' writes to the target branch and cannot be undone with
one click. The three methods differ: merge adds a merge
commit, squash squashes the branch into a single commit, rebase rewrites
the commits. Passing sha protects against the race: if the head moved
since the read, GitHub refuses instead of merging something else.
⚠️ A review without event stays PENDING (PENDING): nothing is
published, nobody is notified, and it is only visible to its author.
This is useful for preparing, and a trap when you thought you were approving.
APPROVE can unblock a protected merge: it is an act of
governance, not a comment.
⚠️ op='files' is capped at 3,000 files and omits big patches;
op='commits' at 250. A massive PR is returned incomplete, without error.
Tool call template
This tool declares no required parameters. Add optional parameters from the input schema as needed.
{
"id": 1,
"jsonrpc": "2.0",
"method": "tools/call",
"params": {
"arguments": {},
"name": "github_pulls"
}
}Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| op | No | the operation, see above. | search |
| sha | No | op='merge' — the expected head (race protection). | |
| _org | No | Org (id) de CET APPEL. `oto_list_orgs()`. | |
| base | No | op='search'/'create' — the target branch. | |
| body | No | op='review'/'submit_review' — the review text. | |
| full | No | list ops only (search | files | commits | reviews | review_comments) — the page as GitHub sends it. Default: the index view (no API links; users, labels, milestones, repositories by name; a body by its `_length`). | |
| head | No | op='search'/'create' — the source branch. | |
| page | No | page number. | |
| repo | No | repository name. | |
| sort | No | op='search' — created | updated | popularity | long-running. | |
| event | No | op='review'/'submit_review' — APPROVE | REQUEST_CHANGES | COMMENT. | |
| owner | No | repository owner. | |
| state | No | op='search' — open | closed | all. | |
| _group | No | Équipe (id) de CET APPEL, sous son org parente. | |
| fields | No | op='create'/'update'/'review_comment' — the body. | |
| number | No | the PR's number. | |
| _run_id | No | OBLIGATOIRE à chaque appel dès `run_start` ou `data_claim_next` : sans lui, l'écriture sur une ligne réservée est refusée. Hérité seulement si le serveur tient un run actif — n'y compte pas. | |
| _account | No | Compte à OPÉRER parmi : `Julien` (org), `Tulina front` (org). `oto_identity(op='list')`. | |
| _project | No | Projet (id) de CET APPEL — jeton PRIMAIRE. `oto_project(op='list')`. | |
| per_page | No | rows per page (1-100, default 30). | |
| _instance | No | Instance de connecteur PRÉCISE (un credential exact). `oto_instance(op='list')`. | |
| review_id | No | op='submit_review' — the pending review to publish. | |
| reviewers | No | op='request_review'/'remove_reviewers' — accounts. | |
| commit_title | No | op='merge' — merge commit title. | |
| merge_method | No | op='merge' — merge | squash | rebase. | |
| team_reviewers | No | op='request_review'/'remove_reviewers' — team slugs. |