# Relin

> Send and receive webhooks, manage customer endpoints, and inspect and retry deliveries.

- name: io.github.earonesty/relin
- version: 1.0.3
- connection class: R0 (autonomous)
- trust: 97/100
- quality: 72/100 (needs work)
- owner: not claimed
- descriptor: https://api.protogrid.dev/v1/servers/io.github.earonesty%2Frelin
- tools: https://api.protogrid.dev/v1/servers/io.github.earonesty%2Frelin/tools

**An agent can connect right now, no human step.** Remote endpoint, no authentication, reachable on the last probe.

## Connection (mcpServers)

```json
{
  "mcpServers": {
    "relin": {
      "type": "http",
      "url": "https://relin.app/mcp"
    }
  }
}
```


## Trust

- hygiene: 100
- liveness: 99
- freshness: 100
- provenance: 90
- drivers: +repository +namespace-matches-repo +website +reachable +uptime-98% +updated-7d-ago
- Derived from observable signals (official registry feed and our own credential-free probes); no code audit performed.

## Quality 72/100 (needs work)

### protocol: 75 (weight 25)

- warn `protocol.modern`: newest supported version is 2025-11-25; 2026-07-28 not supported, older versions are deprecated until 2027-07-28
- n/a `protocol.stateless`: only applies to 2026-07-28 servers
- pass `protocol.transport`: streamable HTTP
- n/a `protocol.list_ttl`: only applies to 2026-07-28 servers

### authorization: n/a (weight 15)

- n/a `auth.prm`, `auth.as_metadata`, `auth.cimd`: no remote uses OAuth
- n/a `auth.secret_in_url`: no templated URL

### tool hygiene: 93 (weight 30)

- pass `tools.descriptions`: every tool has a description
- pass `tools.description_length`: descriptions are concise
- pass `tools.schemas`: every tool has an object input schema
- pass `tools.annotations`: 53 of 53 tools declare readOnlyHint or destructiveHint
- pass `tools.directory_hints`: every tool declares readOnlyHint, destructiveHint, idempotentHint and openWorldHint
- pass `tools.token_cost`: about 6,083 tokens to load every tool
- warn `tools.api_dump`: 53 tools, 68% named like REST operations: looks like an API mapped one endpoint per tool

### stability: 25 (weight 15)

- warn `stability.changes`: 32 tool changes in 30 days
- fail `stability.rug_pull`: 21 tools kept their name but changed most of their description in 30 days; review before trusting them

### dependencies: n/a (weight 15)

- n/a `deps.known_vulns`, `deps.mcp_sdk_version`, `deps.resolvable`: no npm or PyPI package

- tools: 53, about 6,083 tokens to load them all
- tool set hash: 9b0cf485bbcb6a22f5ee723e16ecbd79
- tools last changed: 2026-10-12T19:08:15.172Z
- badge: [![protogrid quality](https://protogrid.dev/badge/io.github.earonesty/relin.svg)](https://protogrid.dev/servers/io.github.earonesty/relin)
- Checks run on what our credential-free, read-only probes observe; tools are never called and no code audit is performed.

### Tool changes

- 2026-10-12 `ensure_webhook_setup` changed (description) **meaning changed**
  - before: Authenticated tool for idempotently setting up a vendor source and destination, returning the ingest URL when a new source is created.
  - after: Set up incoming webhooks and delivery rules. For Stripe, returns the account authorization link and connection status; after authorization, use get_webhook_setup_status to verify receipt and delivery. Other providers receive an ingest URL for new sources.
- 2026-10-12 `get_webhook_setup_status` added
  - Check a source's provider connection, enabled destinations, recent signature-verified events, and delivery attempts. For Stripe, returns a secure authorization link when needed. Call again after the user connects, without recreating or rotating anything.
- 2026-10-12 `create_portal_host` changed (title, description) **meaning changed**
  - before: Authenticated tool for creating a stable portal host with OIDC sign-in.
  - after: Configure a customer webhook portal on a domain the user controls, with their existing OpenID Connect identity provider. Use only when the user asks to set up a portal domain and supplies the application and identity-provider configuration. This creates portal access configuration and may provision a hostname and certificate.
- 2026-10-12 `archive_source` changed (title)
- 2026-10-12 `retry_failed_deliveries` changed (annotations)
- 2026-10-12 `replay_events` changed (annotations)
- 2026-10-12 `replay_event` changed (annotations)
- 2026-10-12 `check_portal_host` changed (annotations)
- 2026-10-12 `create_portal_host` changed (annotations)
- 2026-10-12 `save_portal_settings` changed (annotations)

Full history: https://api.protogrid.dev/v1/servers/io.github.earonesty%2Frelin/changes

## Remotes

- https://relin.app/mcp (streamable-http, auth none, reachable true, uptime30d 0.98275864)

## Packages

_none_

## Tools (53)

- `archive_source`: Delete an incoming webhook source and its stored records, stop intake and delivery, and cancel its queued retries. Use only when the user intends to remove that source.
- `cancel_queued_retries`: Authenticated tool for cancelling queued retry jobs for a workspace or destination.
- `check_portal_host`: Authenticated tool for refreshing hostname, certificate, and OIDC readiness for a stable portal host.
- `create_alert_channel`: Authenticated tool to create alert channel.
- `create_api_key`: Authenticated tool to create API key.
- `create_app`: Create an outbound webhook application for a product or environment. Use when the user needs a new set of customer webhook endpoints.
- `create_destination`: Authenticated tool for creating an outbound destination and connection with retry policy and optional filters.
- `create_endpoint`: Add an HTTPS webhook endpoint for a customer of an outbound app. Configure event subscriptions and retry settings using the requested customer and URL.
- `create_portal_host`: Configure a customer webhook portal on a domain the user controls, with their existing OpenID Connect identity provider. Use only when the user asks to set up a portal domain and supplies the application and identity-provider configuration. This creates portal access configuration and may provision a hostname and certificate.
- `create_portal_session`: Create a temporary customer webhook portal link for the specified app and recipient. The link grants access to that customer’s webhook controls; share only with the intended user.
- `create_source`: Authenticated tool to create source.
- `delete_endpoint`: Disable a customer webhook endpoint so it no longer receives events.
- `delete_event_type`: Archive an outbound event type so customers can no longer select it for new subscriptions.
- `describe_relin`: Explain what Relin does and how agents should use it for webhook intake, delivery, replay, and anomaly review.
- `ensure_webhook_setup`: Set up incoming webhooks and delivery rules. For Stripe, returns the account authorization link and connection status; after authorization, use get_webhook_setup_status to verify receipt and delivery. Other providers receive an ingest URL for new sources.
- `get_app`: Read an outbound webhook application by its app ID to inspect its configuration.
- `get_endpoint`: Read a customer webhook endpoint, its event subscriptions, and delivery settings.
- `get_event_detail`: Authenticated tool for reading one event with attempts, deliveries, and optional raw payload.
- `get_message`: Read one outbound webhook message and its delivery state using the app and message IDs.
- `get_metrics_summary`: Authenticated tool for delivery, failure, duplicate, and open-issue rollups.
- `get_portal_settings`: Authenticated tool for reading portal branding defaults and host setup for an app.
- `get_setup_guide`: Return concise setup guidance for connecting a webhook source and destination.
- `get_slack_connect_url`: Authenticated tool for returning the dashboard Slack OAuth connect URL and expected redirect URL.
- `get_webhook_setup_status`: Check a source's provider connection, enabled destinations, recent signature-verified events, and delivery attempts. For Stripe, returns a secure authorization link when needed. Call again after the user connects, without recreating or rotating anything.
- `list_alert_channels`: Authenticated tool to list alert channels.
- `list_api_keys`: Authenticated tool to list API keys.
- `list_apps`: List outbound webhook applications in the connected Relin workspace. Use this to find the app ID before managing customer endpoints or sending events.
- `list_delivery_attempts`: Authenticated tool for listing fanout delivery attempts with filters.
- `list_destinations`: Authenticated tool for listing outbound destinations and retry policy.
- `list_endpoints`: List customer webhook endpoints and delivery settings for an outbound app.
- `list_event_types`: List the event types customers can subscribe to for an outbound app.
- `list_message_attempts`: Inspect delivery attempts for an outbound webhook message, including returned status and errors. Use this to verify delivery or diagnose failures.
- `list_messages`: List outbound webhook messages for an app, optionally filtered by customer or event type. Use this for send history rather than incoming vendor events.
- `list_open_issues`: Authenticated tool for listing open anomaly and delivery issues. Use q for smart lookup by anom_, dst_, evt_, or src_ IDs, or plain text like a status code or error message.
- `list_portal_hosts`: Authenticated tool for listing stable portal hosts for an app.
- `list_recent_events`: Authenticated tool for inspecting recent received events, duplicates, and signature status.
- `list_recipients`: List customers configured to receive outbound webhooks for an app. Use returned customer identifiers for endpoint and message operations.
- `list_retry_jobs`: Authenticated tool to list retry jobs.
- `list_sources`: Authenticated tool to list sources.
- `list_supported_webhook_shapes`: List the vendor webhook shapes Relin understands for event identity, ordering, and gap checks.
- `replay_event`: Authenticated tool for queueing a replay of a single received event.
- `replay_events`: Authenticated tool for queueing replay by source, query, signature status, failed-delivery state, and time window.
- `replay_message`: Send an existing outbound webhook message again. May repeat actions at customer endpoints; use only for the message the user wants replayed.
- `resolve_anomalies`: Authenticated tool for marking one or more open anomalies resolved by anomaly_id.
- `retry_failed_deliveries`: Authenticated tool for queueing immediate retries for failed fanout deliveries.
- `revoke_api_key`: Authenticated tool to revoke API key.
- `rotate_endpoint_secret`: Authenticated tool for rotating the signing secret for one endpoint.
- `rotate_source_token`: Authenticated tool for rotating an ingest token and returning the replacement URL once.
- `save_portal_settings`: Authenticated tool for saving portal branding defaults for an app.
- `send_message`: Send a webhook event from an outbound app to the specified customer. Requires the intended app, recipient, event type, and payload. Delivery can trigger actions at customer endpoints; an accepted message is not proof of delivery.
- `update_endpoint`: Change a customer webhook endpoint URL, event subscriptions, signing settings, retry policy, or enabled state. Changes can interrupt or redirect future deliveries.
- `upsert_event_type`: Create or update an outbound event type and its description for customer webhook subscriptions.
- `upsert_recipient`: Authenticated tool for creating or updating a recipient.
