Put your coding agent behind Anlyon

Claude Code and Cursor do real work in GitHub and your database. Give them named actions instead of your tokens: a merge or a migration waits for a person, and every call leaves a receipt.

Claude Codeanlyon
  1. 1action_github-get-pull-request
  2. 2action_github-merge-pull-request
  3. approval apr_… pending
  4. 3wait_for_approval
  5. approved, request as reviewed
  6. merged, read back: confirmed
one turn of the agent

Your coding agent holds a token that can do everything. A wrong turn runs with all of it.

To work in GitHub or a database, the agent needs a credential in its environment, where any tool it runs can read it. Text in an issue, a file or a web page reaches the same agent. Nothing between the model and the API asks whether this merge or this query should run.

Without Anlyon

  • A merge nobody reviewed

    A comment tells the agent the checks are fine. GitHub sees a valid token and a valid request.

  • A query against the wrong database

    The connection string in its environment decides what it reaches. Run a drop against it and the rows are gone.

  • No record of who allowed it

    Afterwards you have a commit and a shell history. You can't say what was asked for, who said yes, or what came back.

One turn of the agent. The read runs. The merge waits for a person.

The agent sees your actions as tools. A gated call sends nothing until an approver decides, and the request that runs is the one they reviewed.

  1. list_actions

    Lists the actions you allow and says which need approval.

    runs
  2. action_github-get-pull-request

    A read. It changes nothing, so it comes straight back.

    runs
  3. action_github-merge-pull-request

    Gated by your rule, so nothing is sent. The tool answers: Awaiting human approval. Call wait_for_approval with approvalId=apr_...

    waits
  4. wait_for_approval

    Holds up to 120 seconds a call. An approver decides in Slack, in the console or from their own connection, and never the connection that asked.

    waits
  5. status: approved

    Anlyon ran the exact request that was reviewed. If it is denied or expires, nothing was sent.

    ran

In GitHub

From the GitHub pack. These writes are read back from GitHub.

  • action_github-create-pull-requestRuns under a limit
  • action_github-merge-pull-requestWaits for approval
  • action_github-close-issueWaits for approval

In your database

From the remote MCP server in front of it, registered here as db. A tool you skip does not exist for the agent.

  • action_db-list_tablesRuns
  • action_db-run_migrationWaits for approval
  • drop_tableNot adopted

What the merge leaves behind. A receipt, graded by what GitHub says now.

After the merge, Anlyon reads the pull request back. The grade is confirmed only when GitHub reports it merged at the commit it returned. See every call in the console, or with anlyon effects list.

GET /api/v2/actions/invocations/inv_01JABCDEF
{  "id": "inv_01JABCDEF",  "actionName": "github-merge-pull-request",  "actionVersionId": "acv_01JABCDEF",  "status": "succeeded",  "grade": "confirmed",  "effectId": "eff_01JABCDEF",  "endUserId": null,  "responseStatus": 200,  "approvalId": "apr_01JABCDEF",  "error": null,  "retryOf": null}

Why it pays. Less risk, less cost, less effort.

Less risk

The token stays with Anlyon, so nothing in the agent's environment can leak it. The calls you mark wait for an approver, and the connection that asked can never decide.

Less cost

No MCP server of your own to host, patch and wire to each provider's API. One address serves every action you allow.

Less effort

Your agent can run the setup itself, and anything that loosens a rule waits for a person.

Set it up. Or paste one line into the agent.

Anlyon governs the calls routed through it, so once it is connected, take the GitHub token and the database URL out of the agent's environment. That leaves this as its only way in.

terminal
# Your agent can run this, and follow what it printsnpx @anlyonhq/cli init# Or by hand: connect GitHubanlyon connections add github --secret GITHUB# In the console, open Integrations, then GitHub, and switch on# get-pull-request and merge-pull-request. Approval rules install# turned off: turn on "github: approve merging a pull request".# Then give it to Claude Codeclaude mcp add --transport http anlyon https://api.anlyon.com/mcp# Cursor: .cursor/mcp.json{ "mcpServers": { "anlyon": { "url": "https://api.anlyon.com/mcp" } } }

Let your agent act for your users, safely.

A few lines of server code, then send a user a connect link. Nothing to host.

$ claude mcp add --transport http anlyon https://api.anlyon.com/mcp