io.github.Patrax/review-router
Enables AI agents to securely create and manage GitHub-to-Slack review routing setups through Tenpace, using OIDC-verified browser authorization and short-lived links.
README
Review Router Setup
Create a GitHub-to-Slack Review Router connection from a workflow or AI coding session. The Action produces one short-lived browser link. Open it and sign in to Tenpace to claim and lock the exact repository, Slack destination, routing preset, and reviewer mention policy.
The Action never receives GitHub App credentials, Slack OAuth tokens, provider authorization codes, or the human's Tenpace session.
Use the Action
Create .github/workflows/review-router-setup.yml:
name: Set up Review Router
on:
workflow_dispatch:
permissions:
contents: read
id-token: write
jobs:
setup:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v7
- uses: tenpace-app/review-router-setup@v1
with:
slack-channel: pull-requests
preset: repo-watch
reviewer-mentions: all
Run the workflow. The same GitHub user who started it opens the Continue Review Router setup link in the job summary, signs in to Tenpace, completes the GitHub and Slack steps, and lets the page reconcile and verify the route with a real Slack delivery.
Config as code
Instead of inputs, commit .tenpace/review-router.yml:
version: 1
route:
slack-channel: pull-requests
preset: repo-watch
reviewer-mentions: all
You can also set slack-workspace when the Tenpace team has more than one connected workspace. Explicit Action inputs override the file.
Inputs
slack-channel: Slack channel name, with or without#. Required unless present in the config file.slack-workspace: Optional exact workspace name, Slack team ID, or Tenpace workspace ID.preset:repo-watch,full-coverage, orteam-activity. Default:repo-watch.reviewer-mentions:all,connected-only, ornone. Default:all.config: Config path. Default:.tenpace/review-router.yml.
Outputs
setup-id: Public setup-session ID.setup-url: Short-lived human authorization URL.status: Initial status, normallyawaiting_human.
The machine setup token is masked and deliberately not exposed as an Action output. The displayed URL contains no claim secret: it is bound to the GitHub actor in the signed OIDC token, and that same GitHub user must open it. The browser flow can finish setup without putting a secret into another workflow step.
Security model
GitHub Actions OIDC proves the repository and actor for the workflow run. It does not grant provider authority. Tenpace verifies the OIDC issuer, signature, audience, time window, repository and owner IDs, actor ID, subject, and repository binding. Action URLs contain no claim secret and can only be claimed by that GitHub actor.
The server creates an inert intent. A Tenpace user signs in and claims the setup URL, which atomically locks that exact intent version. The machine token cannot edit after claim; the person who claimed the setup can edit it, and saving creates and locks the new version in the same action. Provider OAuth stays in the browser and encrypted credentials stay on Tenpace.
Setup creation and application are idempotent. The final check sends one message through the same Slack delivery path used for pull request notifications.
See SECURITY.md for reporting and operational details.
For coding agents
Read AGENTS.md before automating setup. Canonical machine-readable surfaces:
No AI-discovery convention is universal, so the same workflow is described in the Action metadata, README, AGENTS.md, linked HTML/Markdown docs, OpenAPI, MCP, and well-known descriptor.
The remote MCP server is also published to the official MCP Registry as
io.github.tenpace-app/review-router
License
MIT
Recommended Servers
playwright-mcp
A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.
Magic Component Platform (MCP)
An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.
Audiense Insights MCP Server
Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.
VeyraX MCP
Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.
graphlit-mcp-server
The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.
Kagi MCP Server
An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.
E2B
Using MCP to run code via e2b.
Neon Database
MCP server for interacting with Neon Management API and databases
Exa Search
A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.
Qdrant Server
This repository is an example of how to create a MCP server for Qdrant, a vector search engine.