GitHub ACTION
Merge Pull Request
Merge an open pull request into its base branch. Choose the
mergeMethod: merge (a merge commit, the default), squash (combine all commits into one), or rebase. The merge fails if the PR is not mergeable (conflicts, failing required checks, or required reviews missing) — check mergeable state and CI with Get Pull Request first. Provide the repository as an owner/repo string and the PR number. To create the PR first, use Create Pull Request. See the documentation- Action
- Writes data
- OAuth
- SDK
- MCP
IMPLEMENTATION
Call this tool
Connect a user's GitHub account once, then configure and run Merge Pull Request from your backend or agent.
import { PipedreamClient } from "@pipedream/sdk"
const pd = new PipedreamClient({
projectId: process.env.PIPEDREAM_PROJECT_ID!,
clientId: process.env.PIPEDREAM_CLIENT_ID!,
clientSecret: process.env.PIPEDREAM_CLIENT_SECRET!,
projectEnvironment: "production",
})
const result = await pd.actions.run({
id: "github-merge-pull-request",
externalUserId: "{external_user_id}", // any stable ID for this user in your system
configuredProps: {
github: { authProvisionId: "apn_xxxxxxx" },
repoFullname: "Repository",
pullNumber: 10,
},
})
console.log(result)curl -X POST https://api.pipedream.com/v1/connect/{project_id}/actions/run \
-H "Content-Type: application/json" \
-H "X-PD-Environment: production" \
-H "Authorization: Bearer {access_token}" \
-d '{
"external_user_id": "{external_user_id}",
"id": "github-merge-pull-request",
"configured_props": {
"github": { "authProvisionId": "apn_xxxxxxx" },
"repoFullname": "Repository",
"pullNumber": 10
}
}'// accessToken: mint a short-lived token with the Connect SDK — see the MCP guide
const transport = new StreamableHTTPClientTransport(
new URL("https://remote.mcp.pipedream.net/v3"),
{
requestInit: {
headers: {
Authorization: `Bearer ${accessToken}`,
"x-pd-project-id": "{project_id}",
"x-pd-environment": "production",
"x-pd-external-user-id": "{external_user_id}", // any stable ID for this user in your system
"x-pd-app-slug": "github",
},
},
},
)
const mcp = new Client({ name: "my-agent", version: "1.0.0" })
await mcp.connect(transport)
const { tools } = await mcp.listTools()
// listTools() hands your model this tool's input schema, so it can
// fill the arguments itself:
const result = await mcp.callTool({
name: "github-merge-pull-request",
arguments: {
repoFullname: "Repository",
pullNumber: 10,
},
})SCHEMA
Inputs
Pipedream supplies the connected account. Your application provides the operation-specific values below. Dynamic inputs are resolved against that user's account.
| Property | Type | Description |
|---|---|---|
repoFullname Repository | string | The repository in owner/repo format, for example PipedreamHQ/pipedream (not case sensitive). If you pass just a repository name with no owner (e.g. my-repo), the authenticated user is assumed as the owner — convenient for "my repo" requests. Do NOT repeat the repository name as the owner (e.g. my-repo/my-repo); if you don't know the owner, pass only the name or run List Repositories to find it. Required |
pullNumber Pull Request Number | integer | The pull request number — the #N shown in the GitHub UI. Use Search Issues and Pull Requests with is:pr or Get Pull Request to find it when you only know the title. Required |
mergeMethod Merge Method | string | How to merge the pull request. Defaults to merge. Optional |
commitTitle Commit Title | string | Title for the merge commit. Defaults to GitHub's automatic title. Optional |
commitMessage Commit Message | string | Extra detail appended to the merge commit message. Optional |
REFERENCE
Tool details
Behavior hints are published with the component in the Pipedream registry and surface as MCP tool annotations, so an agent can reason about a tool before it calls it.
- Registry key
- github-merge-pull-request
- Version
- 0.0.3
- App
- GitHub
- Authentication
- OAuth
- Read-only
- No
- Destructive
- No
- Open world
- Yes
- Source
- View on GitHub ↗