Two agents, one limit, one refused.

Errors integration

Sentry, in your agent's hands and under your limits.

Let an agent triage your error queue without burying a live problem. It reads issues and their events, assigns, prioritises and reopens freely, and resolving or archiving one can wait for a person.

Connect

API key

bound to sentry.io

What you create

  • An auth token you create
  • org:read, project:read and event:write, and nothing else
  1. 01In Sentry, open Settings, Developer Settings, and create a personal token or an internal integration.
  2. 02Give it org:read and event:write.
  3. 03In Anlyon, open Actions, then Integrations, choose Sentry and paste the token.
  4. 04Anlyon checks the token with Sentry before storing it. It becomes a secret named SENTRY, bound to sentry.io.

Connecting allows nothing by itself. No API returns the credential afterwards, to you, to the console or to an agent, and Anlyon refuses to send it anywhere but sentry.io.

Operations

Each one is a named tool, off until you switch it on, and Anlyon makes every call with the credential your agent never sees. Reads return what Sentry answers and change nothing. Writes count against a limit you set, can wait for a person, and are read back from Sentry wherever it allows.

Reads

List projects

sentry-list-projects

List the organization's projects, 25 per page: slug, name, platform, teams and environments. For the next page pass cursor 25:1:0, then 25:2:0 and so on (Sentry's Link header with the cursor is not passed back).

List issues

sentry-list-issues

Search the organization's issues with Sentry's search syntax, 25 per page, without the per-issue event graphs: title, status, level, priority, assignee, counts, first and last seen, project. Without query Sentry shows is:unresolved. Sentry returns the next page's cursor only in a Link header, which is not passed back, so to read further sort by date and repeat with the last issue's lastSeen as a filter (for example query is:unresolved lastSeen:<2026-10-14T10:00:00), or pass a cursor you already have.

Get issue

sentry-get-issue

Get one issue: title, status and substatus, level, priority, assignee, counts, first and last seen, tags, and its activity, which includes comments, assignments and status changes.

List issue events

sentry-list-issue-events

List one issue's error events, newest first, 20 per page, without stack traces: event id, time, message, user, tags and release. For the next page pass cursor 0:20:0, then 0:40:0 and so on (Sentry's Link header with the cursor is not passed back).

Get issue event

sentry-get-issue-event

Get one event of an issue in full, including the stack trace, breadcrumbs, request, tags and contexts. event_id is an event's id, or latest, oldest or recommended (the one Sentry shows first). A large event can be cut at 64 KB.

List releases

sentry-list-releases

List the organization's releases, most recent first, 20 per page: version, dates, new issue count, commit and deploy counts and projects. Needs the project:read scope. For the next page pass cursor 20:1:0, then 20:2:0 and so on (Sentry's Link header with the cursor is not passed back).

List teams

sentry-list-teams

List the organization's teams, 25 per page, without their projects: id, slug, name and member count. Use the id to assign an issue to a team. For the next page pass cursor 25:1:0, then 25:2:0 and so on (Sentry's Link header with the cursor is not passed back).

Writes

Resolve issue

sentry-resolve-issue

Resolve one issue.

organizationissue_id

Read back

Read back from the issue; its status must be resolved.

Reopen issue

sentry-reopen-issue

Reopen one resolved or archived issue.

organizationissue_id

Read back

Read back from the issue; its status must be unresolved.

Assign issue

sentry-assign-issue

Assign one issue to a member of the organization, by their primary email address.

organizationissue_idassignee_email

Read back

Read back from the issue; the assignee's email must match.

Unassign issue

sentry-unassign-issue

Remove the assignee from one issue, so nobody owns it.

organizationissue_id

Read back

Read back from the issue; it must have no assignee.

Assign issue to team

sentry-assign-issue-to-team

Assign one issue to a team, by the team's id (see list-teams).

organizationissue_idteam_id

Read back

Read back from the issue; the assignee must be that team.

Resolve issue in next release

sentry-resolve-issue-in-next-release

Resolve one issue in the next release: Sentry treats it as fixed from the next release of its project on and reopens it as a regression if it happens again after that. The project needs release tracking.

organizationissue_id

Read back

Read back from the issue; it must be resolved with inNextRelease set.

Archive issue

sentry-archive-issue

Archive one issue, which hides it from the unresolved list and stops its alerts: until_escalating brings it back if it starts happening much more often, forever keeps it archived.

organizationissue_idsubstatus

Read back

Read back from the issue; its status must be ignored with that substatus.

Archive issue for duration

sentry-archive-issue-for-duration

Archive one issue for a fixed time, after which it returns to unresolved: 30 minutes, 2 hours, 6 hours, 1 day or 1 week.

organizationissue_idignore_duration

Read back

Read back from the issue; its status must be ignored, archived until a condition is met.

Set issue priority

sentry-set-issue-priority

Set one issue's priority to high, medium or low; Sentry then stops changing it automatically.

organizationissue_idpriority

Read back

Read back from the issue; its priority must match.

Bookmark issue

sentry-bookmark-issue

Bookmark one issue for the token's user, or remove the bookmark with bookmarked false.

organizationissue_idbookmarked

Read back

Read back from the issue; isBookmarked must match.

Mark issue seen

sentry-mark-issue-seen

Mark one issue as seen by the token's user, or as unseen with seen false.

organizationissue_idseen

Read back

Read back from the issue; hasSeen must match.

The brake

Suggested limits

  • 100 issues resolved a day
  • 100 issues reopened a day
  • 200 issues assigned a day
  • 200 issues unassigned a day
  • 200 issues assigned to a team a day
  • 100 issues resolved in the next release a day
  • 100 issues archived a day
  • 100 issues archived for a time a day
  • 200 priorities set a day
  • 200 bookmarks changed a day
  • 500 issues marked seen a day

Shared by every agent, session and key in the environment. You set the number.

Suggested approvals

  • A person approves resolving an issue
  • A person approves resolving an issue in the next release
  • A person approves archiving an issue
  • A person approves archiving an issue for a time

Installed turned off. The reviewer sees the exact request, and the approved request is the one that runs.

Before you rely on it

  • Organizations on sentry.io. A self-hosted Sentry cannot be connected yet.
  • A status read-back can match a change someone else made in the same moment.

Use it

1. Connect, from a terminal
npm install -g @anlyonhq/cli
anlyon auth login

# Shows where to create the key, then asks for it without echoing
anlyon connections add sentry --secret SENTRY

# From a clone of github.com/AnlyonHQ/anlyon-platform:
# see what would be installed, then switch on one operation
anlyon packs plan ./packs/sentry
anlyon packs install ./packs/sentry --action resolve-issue --yes
2. Call it from your agent, TypeScript
import { Client } from "@anlyonhq/sdk";

const anlyon = new Client({ apiKey: process.env.ANLYON_AGENT_KEY! });

const { data } = await anlyon.actions.invoke(
  "sentry-assign-issue",
  {
    "organization": "acme",
    "issue_id": "4509877862",
    "assignee_email": "dana@example.com"
  },
);

if (data?.pendingApproval) {
  console.log("Waiting for a person", data.approvalId);
} else {
  console.log(data?.status, data?.responseStatus);
}
Or hand it to Claude Code over MCP
# Claude Code. Sign in with the browser, no key to paste.
claude mcp add --transport http anlyon https://api.anlyon.com/mcp

# Then ask in plain words. Each operation you switched on is a tool.

Prefer to click?

The console does all of it: connect, switch operations on, set the limit, and copy the setup for your agent.

Free tier, no credit card. One command if you use Claude or Cursor.

$ claude mcp add anlyon -- npx -y @anlyonhq/mcp-server