{"$schema":"https://wellknown.network/schemas/agent-record-v1.json","schemaVersion":"1","id":"ag_m2ehnh77mjfs","handle":"redirx","url":"https://wellknown.network/agents/redirx","links":{"self":"https://wellknown.network/agents/redirx/record.json","html":"https://wellknown.network/agents/redirx","markdown":"https://wellknown.network/agents/redirx/record.md","api":"https://wellknown.network/api/v1/agents/redirx","status":"https://wellknown.network/api/v1/agents/redirx/status","claim":"https://wellknown.network/agents/redirx/claim","claimApi":"https://wellknown.network/api/v1/claims","claimDescriptor":"https://wellknown.network/agents/redirx/claim.json","badge":"https://wellknown.network/agents/redirx/badge.svg","openapi":"https://wellknown.network/openapi.json","history":"https://wellknown.network/api/v1/agents/redirx/history","tools":"https://wellknown.network/api/v1/agents/redirx/tools"},"ard":{"identifier":"urn:air:redirx-mcp-server.onrender.com:server:redirx","type":"application/mcp-server-card+json"},"kind":"mcp_server","declared":{"name":"redirx","summary":"Map old site URLs to new ones during a migration, review proposals and export approved redirects.","description":"Map old site URLs to new ones during a migration, review proposals and export approved redirects.","publisher":{"name":"dev.redirx","url":null},"homepage":"https://redirx.dev","repository":null,"version":"0.2.0","license":null,"protocols":["mcp"],"tags":[],"pricing":null,"endpoints":[{"url":"https://redirx-mcp-server.onrender.com/mcp","type":"mcp_streamable_http","auth":null,"probeable":true}],"skills":null,"tools":null,"extra":{"updatedAt":"2026-10-17T16:34:15.589064Z","publishedAt":"2026-10-17T16:34:15.589064Z","registryName":"dev.redirx/redirx"},"attribution":{"kind":"mcp_registry","name":"mcp_registry","summary":"mcp_registry","version":"mcp_registry","description":"mcp_registry","homepageUrl":"mcp_registry","publisherName":"mcp_registry"}},"derived":{"capabilities":[{"slug":"content.writing","name":"Writing & Editing","confidence":1,"provenance":"derived"},{"slug":"data.web-scraping","name":"Web Scraping","confidence":1,"provenance":"derived"},{"slug":"code.refactoring","name":"Refactoring","confidence":0.964,"provenance":"derived"},{"slug":"code.review","name":"Code Review","confidence":0.885,"provenance":"derived"},{"slug":"dev.ci-cd","name":"CI/CD & Deploy","confidence":0.554,"provenance":"derived"},{"slug":"commerce.ecommerce","name":"E-commerce Operations","confidence":0.54,"provenance":"derived"},{"slug":"knowledge.reasoning","name":"Reasoning & Planning","confidence":0.525,"provenance":"derived"}],"categories":["code","commerce","content","data","dev","knowledge"],"language":"en"},"observed":{"status":"live","statusReason":"Responded 2h ago.","lastOkAt":"2026-10-22T08:29:18.716Z","lastProbedAt":"2026-10-22T08:29:18.716Z","statusComputedAt":"2026-10-22T08:31:36.312Z","reliability30d":{"probes":14,"successRate":1,"p50Ms":182,"basis":"mixed","measures":{"availability":"availability (some checks stopped at authentication)","latency":"response time (mixed)","tools":"partially observed","summary":"Some successful checks reached the service and some stopped at an authentication response; figures combine both."},"checks":{"total":14,"ok":14,"authBoundaryOk":2,"serviceOk":12,"note":"Counted from the observation rows for the window, checks of the server only (HTTP, A2A card, MCP initialize). ok = authBoundaryOk + serviceOk. `probes` is the sum of daily rollups and includes registry checks, so it can differ from `total`."}},"latestObservations":[{"at":"2026-10-22T08:29:18.716Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":316,"error":null,"detail":{"tools":[{"name":"plan_migration","description":"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."},{"name":"import_inventory","description":"Import explicit HTTP(S) URL strings into an owned immutable old or new inventory. No crawl or page scraping. Use data.inventory.id only when data.inventory.stat"},{"name":"run_migration","description":"Run URL matching from immutable inventories. When current billing is enabled, the separate free trial allows 500 old URLs; paid purchases or monthly allowances "},{"name":"refine_matches","description":"Resume a paused matching pass, or improve unresolved URL mappings with explicitly confirmed examples. Up to three total passes; does not consume another free mi"},{"name":"get_migration","description":"Read an owned migration summary and its next recoverable action. Retain migration_id and run_id across reconnects. Poll only after retry_after_seconds; a comple"},{"name":"list_matches","description":"Read owned match exceptions in stable traffic order. Follow data.next_cursor until null using the same run and filter; one page is not the whole run. Retain eac"},{"name":"resolve_matches","description":"Apply audited, optimistic-concurrency decisions. To confirm a model-proposed target, use set_target with target_url, mapping_id and expected_revision after expl"},{"name":"export_redirects","description":"Create an immutable artifact from explicitly approved decisions. Use data.selection_revision from the latest review response as revision. allow_partial requires"},{"name":"verify_redirects","description":"Start or resume an owned artifact HTTP check. Supply an existing deployment_id, or explicitly confirm installation with live_origin and origin_rewrites ({} pres"}],"toolCount":9,"toolsHash":"431b65586f1d06fa0ae1111e4b9647b68403234f3970e90f0a6755b5cab2c219","serverName":"redirx","capabilities":["tools","resources"],"serverVersion":"0.1.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-22T02:31:48.216Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":117,"error":null,"detail":{"tools":[{"name":"plan_migration","description":"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."},{"name":"import_inventory","description":"Import explicit HTTP(S) URL strings into an owned immutable old or new inventory. No crawl or page scraping. Use data.inventory.id only when data.inventory.stat"},{"name":"run_migration","description":"Run URL matching from immutable inventories. When current billing is enabled, the separate free trial allows 500 old URLs; paid purchases or monthly allowances "},{"name":"refine_matches","description":"Resume a paused matching pass, or improve unresolved URL mappings with explicitly confirmed examples. Up to three total passes; does not consume another free mi"},{"name":"get_migration","description":"Read an owned migration summary and its next recoverable action. Retain migration_id and run_id across reconnects. Poll only after retry_after_seconds; a comple"},{"name":"list_matches","description":"Read owned match exceptions in stable traffic order. Follow data.next_cursor until null using the same run and filter; one page is not the whole run. Retain eac"},{"name":"resolve_matches","description":"Apply audited, optimistic-concurrency decisions. To confirm a model-proposed target, use set_target with target_url, mapping_id and expected_revision after expl"},{"name":"export_redirects","description":"Create an immutable artifact from explicitly approved decisions. Use data.selection_revision from the latest review response as revision. allow_partial requires"},{"name":"verify_redirects","description":"Start or resume an owned artifact HTTP check. Supply an existing deployment_id, or explicitly confirm installation with live_origin and origin_rewrites ({} pres"}],"toolCount":9,"toolsHash":"431b65586f1d06fa0ae1111e4b9647b68403234f3970e90f0a6755b5cab2c219","serverName":"redirx","capabilities":["tools","resources"],"serverVersion":"0.1.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-21T19:27:55.932Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":238,"error":null,"detail":{"tools":[{"name":"plan_migration","description":"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."},{"name":"import_inventory","description":"Import explicit HTTP(S) URL strings into an owned immutable old or new inventory. No crawl or page scraping. Use data.inventory.id only when data.inventory.stat"},{"name":"run_migration","description":"Run URL matching from immutable inventories. When current billing is enabled, the separate free trial allows 500 old URLs; paid purchases or monthly allowances "},{"name":"refine_matches","description":"Resume a paused matching pass, or improve unresolved URL mappings with explicitly confirmed examples. Up to three total passes; does not consume another free mi"},{"name":"get_migration","description":"Read an owned migration summary and its next recoverable action. Retain migration_id and run_id across reconnects. Poll only after retry_after_seconds; a comple"},{"name":"list_matches","description":"Read owned match exceptions in stable traffic order. Follow data.next_cursor until null using the same run and filter; one page is not the whole run. Retain eac"},{"name":"resolve_matches","description":"Apply audited, optimistic-concurrency decisions. To confirm a model-proposed target, use set_target with target_url, mapping_id and expected_revision after expl"},{"name":"export_redirects","description":"Create an immutable artifact from explicitly approved decisions. Use data.selection_revision from the latest review response as revision. allow_partial requires"},{"name":"verify_redirects","description":"Start or resume an owned artifact HTTP check. Supply an existing deployment_id, or explicitly confirm installation with live_origin and origin_rewrites ({} pres"}],"toolCount":9,"toolsHash":"431b65586f1d06fa0ae1111e4b9647b68403234f3970e90f0a6755b5cab2c219","serverName":"redirx","capabilities":["tools","resources"],"serverVersion":"0.1.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-21T10:31:01.536Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":121,"error":null,"detail":{"tools":[{"name":"plan_migration","description":"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."},{"name":"import_inventory","description":"Import explicit HTTP(S) URL strings into an owned immutable old or new inventory. No crawl or page scraping. Use data.inventory.id only when data.inventory.stat"},{"name":"run_migration","description":"Run URL matching from immutable inventories. When current billing is enabled, the separate free trial allows 500 old URLs; paid purchases or monthly allowances "},{"name":"refine_matches","description":"Resume a paused matching pass, or improve unresolved URL mappings with explicitly confirmed examples. Up to three total passes; does not consume another free mi"},{"name":"get_migration","description":"Read an owned migration summary and its next recoverable action. Retain migration_id and run_id across reconnects. Poll only after retry_after_seconds; a comple"},{"name":"list_matches","description":"Read owned match exceptions in stable traffic order. Follow data.next_cursor until null using the same run and filter; one page is not the whole run. Retain eac"},{"name":"resolve_matches","description":"Apply audited, optimistic-concurrency decisions. To confirm a model-proposed target, use set_target with target_url, mapping_id and expected_revision after expl"},{"name":"export_redirects","description":"Create an immutable artifact from explicitly approved decisions. Use data.selection_revision from the latest review response as revision. allow_partial requires"},{"name":"verify_redirects","description":"Start or resume an owned artifact HTTP check. Supply an existing deployment_id, or explicitly confirm installation with live_origin and origin_rewrites ({} pres"}],"toolCount":9,"toolsHash":"431b65586f1d06fa0ae1111e4b9647b68403234f3970e90f0a6755b5cab2c219","serverName":"redirx","capabilities":["tools","resources"],"serverVersion":"0.1.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-21T01:27:03.634Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":109,"error":null,"detail":{"tools":[{"name":"plan_migration","description":"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."},{"name":"import_inventory","description":"Import explicit HTTP(S) URL strings into an owned immutable old or new inventory. No crawl or page scraping. Use data.inventory.id only when data.inventory.stat"},{"name":"run_migration","description":"Run URL matching from immutable inventories. When current billing is enabled, the separate free trial allows 500 old URLs; paid purchases or monthly allowances "},{"name":"refine_matches","description":"Resume a paused matching pass, or improve unresolved URL mappings with explicitly confirmed examples. Up to three total passes; does not consume another free mi"},{"name":"get_migration","description":"Read an owned migration summary and its next recoverable action. Retain migration_id and run_id across reconnects. Poll only after retry_after_seconds; a comple"},{"name":"list_matches","description":"Read owned match exceptions in stable traffic order. Follow data.next_cursor until null using the same run and filter; one page is not the whole run. Retain eac"},{"name":"resolve_matches","description":"Apply audited, optimistic-concurrency decisions. To confirm a model-proposed target, use set_target with target_url, mapping_id and expected_revision after expl"},{"name":"export_redirects","description":"Create an immutable artifact from explicitly approved decisions. Use data.selection_revision from the latest review response as revision. allow_partial requires"},{"name":"verify_redirects","description":"Start or resume an owned artifact HTTP check. Supply an existing deployment_id, or explicitly confirm installation with live_origin and origin_rewrites ({} pres"}],"toolCount":9,"toolsHash":"431b65586f1d06fa0ae1111e4b9647b68403234f3970e90f0a6755b5cab2c219","serverName":"redirx","capabilities":["tools","resources"],"serverVersion":"0.1.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-20T19:26:10.821Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":152,"error":null,"detail":{"tools":[{"name":"plan_migration","description":"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."},{"name":"import_inventory","description":"Import explicit HTTP(S) URL strings into an owned immutable old or new inventory. No crawl or page scraping. Use data.inventory.id only when data.inventory.stat"},{"name":"run_migration","description":"Run URL matching from immutable inventories. When current billing is enabled, the separate free trial allows 500 old URLs; paid purchases or monthly allowances "},{"name":"refine_matches","description":"Resume a paused matching pass, or improve unresolved URL mappings with explicitly confirmed examples. Up to three total passes; does not consume another free mi"},{"name":"get_migration","description":"Read an owned migration summary and its next recoverable action. Retain migration_id and run_id across reconnects. Poll only after retry_after_seconds; a comple"},{"name":"list_matches","description":"Read owned match exceptions in stable traffic order. Follow data.next_cursor until null using the same run and filter; one page is not the whole run. Retain eac"},{"name":"resolve_matches","description":"Apply audited, optimistic-concurrency decisions. To confirm a model-proposed target, use set_target with target_url, mapping_id and expected_revision after expl"},{"name":"export_redirects","description":"Create an immutable artifact from explicitly approved decisions. Use data.selection_revision from the latest review response as revision. allow_partial requires"},{"name":"verify_redirects","description":"Start or resume an owned artifact HTTP check. Supply an existing deployment_id, or explicitly confirm installation with live_origin and origin_rewrites ({} pres"}],"toolCount":9,"toolsHash":"431b65586f1d06fa0ae1111e4b9647b68403234f3970e90f0a6755b5cab2c219","serverName":"redirx","capabilities":["tools","resources"],"serverVersion":"0.1.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-20T13:29:18.716Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":145,"error":null,"detail":{"tools":[{"name":"plan_migration","description":"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."},{"name":"import_inventory","description":"Import explicit HTTP(S) URL strings into an owned immutable old or new inventory. No crawl or page scraping. Use data.inventory.id only when data.inventory.stat"},{"name":"run_migration","description":"Run URL matching from immutable inventories. When current billing is enabled, the separate free trial allows 500 old URLs; paid purchases or monthly allowances "},{"name":"refine_matches","description":"Resume a paused matching pass, or improve unresolved URL mappings with explicitly confirmed examples. Up to three total passes; does not consume another free mi"},{"name":"get_migration","description":"Read an owned migration summary and its next recoverable action. Retain migration_id and run_id across reconnects. Poll only after retry_after_seconds; a comple"},{"name":"list_matches","description":"Read owned match exceptions in stable traffic order. Follow data.next_cursor until null using the same run and filter; one page is not the whole run. Retain eac"},{"name":"resolve_matches","description":"Apply audited, optimistic-concurrency decisions. To confirm a model-proposed target, use set_target with target_url, mapping_id and expected_revision after expl"},{"name":"export_redirects","description":"Create an immutable artifact from explicitly approved decisions. Use data.selection_revision from the latest review response as revision. allow_partial requires"},{"name":"verify_redirects","description":"Start or resume an owned artifact HTTP check. Supply an existing deployment_id, or explicitly confirm installation with live_origin and origin_rewrites ({} pres"}],"toolCount":9,"toolsHash":"431b65586f1d06fa0ae1111e4b9647b68403234f3970e90f0a6755b5cab2c219","serverName":"redirx","capabilities":["tools","resources"],"serverVersion":"0.1.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-20T07:27:05.746Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":126,"error":null,"detail":{"tools":[{"name":"plan_migration","description":"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."},{"name":"import_inventory","description":"Import explicit HTTP(S) URL strings into an owned immutable old or new inventory. No crawl or page scraping. Use data.inventory.id only when data.inventory.stat"},{"name":"run_migration","description":"Run URL matching from immutable inventories. When current billing is enabled, the separate free trial allows 500 old URLs; paid purchases or monthly allowances "},{"name":"refine_matches","description":"Resume a paused matching pass, or improve unresolved URL mappings with explicitly confirmed examples. Up to three total passes; does not consume another free mi"},{"name":"get_migration","description":"Read an owned migration summary and its next recoverable action. Retain migration_id and run_id across reconnects. Poll only after retry_after_seconds; a comple"},{"name":"list_matches","description":"Read owned match exceptions in stable traffic order. Follow data.next_cursor until null using the same run and filter; one page is not the whole run. Retain eac"},{"name":"resolve_matches","description":"Apply audited, optimistic-concurrency decisions. To confirm a model-proposed target, use set_target with target_url, mapping_id and expected_revision after expl"},{"name":"export_redirects","description":"Create an immutable artifact from explicitly approved decisions. Use data.selection_revision from the latest review response as revision. allow_partial requires"},{"name":"verify_redirects","description":"Start or resume an owned artifact HTTP check. Supply an existing deployment_id, or explicitly confirm installation with live_origin and origin_rewrites ({} pres"}],"toolCount":9,"toolsHash":"431b65586f1d06fa0ae1111e4b9647b68403234f3970e90f0a6755b5cab2c219","serverName":"redirx","capabilities":["tools","resources"],"serverVersion":"0.1.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-20T00:32:05.499Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":131,"error":null,"detail":{"tools":[{"name":"plan_migration","description":"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."},{"name":"import_inventory","description":"Import explicit HTTP(S) URL strings into an owned immutable old or new inventory. No crawl or page scraping. Use data.inventory.id only when data.inventory.stat"},{"name":"run_migration","description":"Run URL matching from immutable inventories. When current billing is enabled, the separate free trial allows 500 old URLs; paid purchases or monthly allowances "},{"name":"refine_matches","description":"Resume a paused matching pass, or improve unresolved URL mappings with explicitly confirmed examples. Up to three total passes; does not consume another free mi"},{"name":"get_migration","description":"Read an owned migration summary and its next recoverable action. Retain migration_id and run_id across reconnects. Poll only after retry_after_seconds; a comple"},{"name":"list_matches","description":"Read owned match exceptions in stable traffic order. Follow data.next_cursor until null using the same run and filter; one page is not the whole run. Retain eac"},{"name":"resolve_matches","description":"Apply audited, optimistic-concurrency decisions. To confirm a model-proposed target, use set_target with target_url, mapping_id and expected_revision after expl"},{"name":"export_redirects","description":"Create an immutable artifact from explicitly approved decisions. Use data.selection_revision from the latest review response as revision. allow_partial requires"},{"name":"verify_redirects","description":"Start or resume an owned artifact HTTP check. Supply an existing deployment_id, or explicitly confirm installation with live_origin and origin_rewrites ({} pres"}],"toolCount":9,"toolsHash":"431b65586f1d06fa0ae1111e4b9647b68403234f3970e90f0a6755b5cab2c219","serverName":"redirx","capabilities":["tools","resources"],"serverVersion":"0.1.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-19T18:32:44.953Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":306,"error":null,"detail":{"tools":[{"name":"plan_migration","description":"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."},{"name":"import_inventory","description":"Import explicit HTTP(S) URL strings into an owned immutable old or new inventory. No crawl or page scraping. Use data.inventory.id only when data.inventory.stat"},{"name":"run_migration","description":"Run URL matching from immutable inventories. When current billing is enabled, the separate free trial allows 500 old URLs; paid purchases or monthly allowances "},{"name":"refine_matches","description":"Resume a paused matching pass, or improve unresolved URL mappings with explicitly confirmed examples. Up to three total passes; does not consume another free mi"},{"name":"get_migration","description":"Read an owned migration summary and its next recoverable action. Retain migration_id and run_id across reconnects. Poll only after retry_after_seconds; a comple"},{"name":"list_matches","description":"Read owned match exceptions in stable traffic order. Follow data.next_cursor until null using the same run and filter; one page is not the whole run. Retain eac"},{"name":"resolve_matches","description":"Apply audited, optimistic-concurrency decisions. To confirm a model-proposed target, use set_target with target_url, mapping_id and expected_revision after expl"},{"name":"export_redirects","description":"Create an immutable artifact from explicitly approved decisions. Use data.selection_revision from the latest review response as revision. allow_partial requires"},{"name":"verify_redirects","description":"Start or resume an owned artifact HTTP check. Supply an existing deployment_id, or explicitly confirm installation with live_origin and origin_rewrites ({} pres"}],"toolCount":9,"toolsHash":"431b65586f1d06fa0ae1111e4b9647b68403234f3970e90f0a6755b5cab2c219","serverName":"redirx","capabilities":["tools","resources"],"serverVersion":"0.1.0","protocolVersion":"2025-06-18"}}],"tools":[{"name":"plan_migration","description":"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."},{"name":"import_inventory","description":"Import explicit HTTP(S) URL strings into an owned immutable old or new inventory. No crawl or page scraping. Use data.inventory.id only when data.inventory.stat"},{"name":"run_migration","description":"Run URL matching from immutable inventories. When current billing is enabled, the separate free trial allows 500 old URLs; paid purchases or monthly allowances "},{"name":"refine_matches","description":"Resume a paused matching pass, or improve unresolved URL mappings with explicitly confirmed examples. Up to three total passes; does not consume another free mi"},{"name":"get_migration","description":"Read an owned migration summary and its next recoverable action. Retain migration_id and run_id across reconnects. Poll only after retry_after_seconds; a comple"},{"name":"list_matches","description":"Read owned match exceptions in stable traffic order. Follow data.next_cursor until null using the same run and filter; one page is not the whole run. Retain eac"},{"name":"resolve_matches","description":"Apply audited, optimistic-concurrency decisions. To confirm a model-proposed target, use set_target with target_url, mapping_id and expected_revision after expl"},{"name":"export_redirects","description":"Create an immutable artifact from explicitly approved decisions. Use data.selection_revision from the latest review response as revision. allow_partial requires"},{"name":"verify_redirects","description":"Start or resume an owned artifact HTTP check. Supply an existing deployment_id, or explicitly confirm installation with live_origin and origin_rewrites ({} pres"}],"package":null,"toolSurface":{"id":"ts_4ny3szty7z4p","endpointId":"ep_43bhm7qntrnf","hash":"431b65586f1d06fa0ae1111e4b9647b68403234f3970e90f0a6755b5cab2c219","toolCount":9,"serverName":"redirx","serverVersion":"0.1.0","protocolVersion":"2025-06-18","firstSeenAt":"2026-10-19T05:32:57.245Z","lastSeenAt":"2026-10-22T08:29:18.715Z","observations":12,"toolNames":["plan_migration","import_inventory","run_migration","refine_matches","get_migration","list_matches","resolve_matches","export_redirects","verify_redirects"],"distinctSurfaces":1},"endpointFacts":[{"id":"ep_43bhm7qntrnf","url":"https://redirx-mcp-server.onrender.com/mcp","type":"mcp_streamable_http","factsCheckedAt":"2026-10-21T10:31:01.561Z","auth":{"observedAt":"2026-10-21T10:31:01.685Z","authRequired":false,"scheme":null,"resourceMetadata":null,"authorizationServer":null,"conformance":{"dpop":false,"rfc8414":false,"rfc9728":false,"pkceS256":false,"clientIdMetadataDocument":false,"dynamicClientRegistration":false}},"tls":{"observedAt":"2026-10-21T10:31:01.701Z","protocol":"TLSv1.3","chainValid":true,"chainError":null,"hostMatches":true,"subject":"onrender.com","issuer":{"commonName":"WE1","organization":"Google Trust Services"},"validFrom":"2026-09-21T22:04:31.000Z","validTo":"2026-12-20T23:04:28.000Z","daysToExpiry":59,"sanCount":2,"fingerprint256":"A8:8C:F8:E1:2B:2E:73:1A:48:5D:32:0C:92:B4:8E:A7:1E:0D:6B:F8:A8:38:68:B5:D1:10:DA:51:D4:A1:A4:5C"}}]},"verification":{"claimed":false,"claimedAt":null,"proofs":[]},"provenance":{"sources":[{"source":"mcp_registry","key":"dev.redirx/redirx","url":"https://registry.modelcontextprotocol.io/v0/servers/dev.redirx%2Fredirx","firstSeenAt":"2026-10-18T15:22:56.178Z","fetchedAt":"2026-10-22T06:18:29.898Z","normalizedAt":"2026-10-22T06:18:29.898Z"}]},"firstSeenAt":"2026-10-18T15:22:56.178Z","updatedAt":"2026-10-22T08:34:06.104Z"}