MCP HeartbeatTHE MCP OBSERVATORY
Public workspace

Explore

Evidence for your next connection.

Independent measurements of remote MCP servers. Every observation has a timestamp.

Read-only probes

MCP server · Other

dev.redirx/redirx

Map old site URLs to new ones during a migration, review proposals and export approved redirects.

Checks passed
12 / 22

2 failed · 8 not measured

Median response
1507 ms

Median of successful probes over 7 days

30-day uptime
Not measured

Share of countable probes over 30 days, including daily rollups. Auth challenges are excluded.

Discovered tools
12

Tool definitions returned by this server

Independent monitoring

Health & checks

Status history

Responded

The server completed its last measured handshake. This is an observation, not a guarantee.

Last checked
Check summary by test group
Test areaPassedFailedUnmeasured
ConnectionCan a client connect and discover tools?
500
Reliability & speedDoes it respond consistently and quickly?
004
Access & authenticationWhat is required to use this server?
102
Tool qualityAre the tool definitions usable by an agent?
310
Publisher identityCan the publisher be traced to its source?
312

Unmeasured means there is not enough evidence to decide. How these checks work

Inspect individual checks 22 recorded

Core

  • Pass
    Reachable

    Latest probe returned HTTP 200 in 1507 ms.

  • Pass
    Valid handshake

    protocolVersion 2025-11-25, serverInfo.name redirx.

  • Pass
    Lists tools

    tools/list returned 12 tools.

  • Pass
    Current protocol

    Negotiated 2025-11-25. The bar is 2025-06-18 or newer.

  • Pass
    HTTPS

    The endpoint URL is https.

Performance

  • Not measured
    Fast (p50)

    Median latency 1507 ms over 1 samples in 7 days. The bar is 1000 ms. Need at least 5 samples.

  • Not measured
    Consistent (p95)

    95th percentile 1507 ms over 1 samples in 7 days. The bar is 3000 ms. Need at least 20 samples.

  • Not measured
    Reliable (uptime)

    1 of 1 attempts returned a tool list in 30 days (100%). The bar is 99%. Need at least 30 samples.

  • Not measured
    Stable tool list

    Fewer than two successful probes in 30 days, so tool-list stability is not measured.

Access

  • Pass
    Open access

    tools/list succeeded with no credential, and the record declares none.

  • Not measured
    Standard auth

    Auth is not required, so the OAuth metadata check does not apply.

  • Not measured
    Free tier cited

    No publisher quote has been checked.

Tools

  • Pass
    Tools described

    Every tool description is at least 20 characters.

  • Pass
    Valid input schemas

    Every inputSchema is a JSON Schema object.

  • Fail
    Parameters documented

    21 of 58 parameters have a description (36%). The bar is 80%.

  • Pass
    Safety hints

    Every tool sets readOnlyHint or destructiveHint.

Publisher

  • Pass
    Verified namespace

    Listed in the Official MCP Registry.

  • Pass
    Website matches publisher

    The website host matches the reverse-domain namespace.

  • Fail
    Source repo linked

    No repository URL is on file.

  • Not measured
    Repo owner matches

    This namespace is not an io.github login, so the owner comparison does not apply.

  • Pass
    Recently updated

    Updated 2026-10-26T13:18:47.428646Z, within 180 days.

  • Not measured
    Open-source licence

    No GitHub repository to ask about a licence.

Start using dev.redirx/redirx

Connect to this server

Choose your client, copy the configuration, then enable the server in your client’s MCP settings.

Run this command in your terminal, then restart Claude Code.

Claude Code

claude mcp add --transport http dev-redirx-redirx https://app.redirx.dev/mcp

Capabilities

Tools 12

export_redirects

Create an immutable redirect file at exactly the selection revision you showed the person (data.selection_revision). Before exporting, ask the person what to include: every proposal is the default, or only those at or above a confidence; say how many fall below RedirX's recommended review threshold (data.review from group_matches). Pass their answer as accept_proposals_above (0 for every proposal): each undecided proposal at or above it becomes their decision. Rejected rows are left out without asking; any other exclusion (held for review, no destination, unsafe for the format) needs allow_partial after the person agrees. Each old URL's other trailing-slash spelling is added as its own rule to the same destination unless slash_variants is false. Small files come back in data.content; every file is readable as the returned resource_uri. Save the file into the person's project yourself; download_url is for a person working without an agent. Export does not install redirects.

Discovered
get_migration

Read an owned migration, its latest inventories, runs (with progress), exports and verifications, and the next recoverable action. Keep migration_id across reconnects; poll only after retry_after_seconds. A finished run still needs review before export.

Discovered
group_matches

Start review here. Groups a run's mappings by the URL rewrite they apply (from → to, e.g. /product/{slug}/ → /products/{slug}), groups with the most undecided rows first. kind is moved, kept_tail, same_path, unchanged (no redirect needed) or unmatched; renamed counts rows whose last segment also changed. Each group has counts by state, the confidence range of its undecided proposals and up to three examples, lowest confidence first. Show the person each group as a rule with its examples and let them decide per group (resolve_group), opening a group with list_matches group_id when they want to see every row. A group is a way to read proposals, not a decision. Keep data.selection_revision for resolve_group.

Discovered
import_inventory

Import explicit HTTP(S) URL strings into an owned, immutable old or new inventory. No crawl or page fetch. Use data.inventory.id with run_migration only when data.inventory.status is complete; a partial import lists its exclusions and needs corrected input and a new key. Up to 15,000 old / 20,000 new URLs and 16 MiB of URL text. Importing never authorizes a charge.

Discovered
list_matches

Read a run's mappings in stable URL order: the latest proposal, the current decision and its revision. Pass group_id (from group_matches) to read one group's rows. Follow data.next_cursor until null with the same run, filter and group; one page is not the whole run. data.counts are for the whole run. Keep each revision and data.selection_revision for resolve_matches and export_redirects. Confidence is an uncalibrated model estimate. Decisions with actor_kind "engine" came from the previous RedirX engine and can be changed like any other.

Discovered
ping

Connection check. Returns "pong". Has no side effects.

Discovered
plan_migration

Create an owned old-site/new-site plan. Next call import_inventory for the old and new URL lists; planning does not crawl or run the model.

Discovered
refine_matches

Resume a run that stopped part-way (same pass, kept proposals), or start its next pass, which learns from the targets people confirmed and the most confident proposals. Up to three passes per run; no new charge. Read the run's seed_revision from get_migration or list_matches first.

Discovered
resolve_group

After the person decides on a whole group from group_matches: record one decision (approve confirms each row's latest proposal; reject, defer or intentional_removal) for every row in the group that has no decision yet. Rows already decided are never changed, and rows in except_mapping_ids are left for resolve_matches. expected_selection_revision is the data.selection_revision you showed the person; a revision_conflict means read group_matches again and re-confirm. A data.remaining above 0 means call again with the new selection_revision and a new key.

Discovered
resolve_matches

Record audited decisions on individual rows with optimistic concurrency, after the user agrees (for a whole group, use resolve_group): approve (confirms the proposed target, or target_url if given), set_target (an exact URL from the new inventory), reject, defer or intentional_removal. Each needs mapping_id and the expected_revision you read. Inspect every outcome: a batch can partly fail; on revision_conflict reread list_matches and reassess.

Discovered
run_migration

Match old URLs to new ones from two complete inventories. Migrations up to 500 old URLs run free (one free run a day, five in total per account). Otherwise the answer is payment_required with the one-time price ($1 per 50 old URLs, $10 minimum) and a checkout link that only a person can complete; after paying, retry with the same input and key. A queued run finishes in minutes: poll get_migration after retry_after_seconds. confirmed_pairs must be pairs a person confirmed, never guesses.

Discovered
verify_redirects

Only after the user confirms an export is installed: check each of its redirects on the live site (status, hops, final destination). Give live_origin (where the old URLs are served) and origin_rewrites mapping export destination origins to live ones ({} keeps them). Poll get_migration for results. This does not install rules or establish Google indexing, canonicals, robots or sitemaps; inspect unchecked results before claiming success.

Discovered

Recent measurements

Probe history

View status
Latest stored probes. Raw probe rows are kept for 14 days.
CheckedResultResponseTools
Connected1507 ms12