{"$schema":"https://wellknown.network/schemas/agent-record-v1.json","schemaVersion":"1","id":"ag_n7fs3byvu8av","handle":"signupbouncer","url":"https://wellknown.network/agents/signupbouncer","links":{"self":"https://wellknown.network/agents/signupbouncer/record.json","html":"https://wellknown.network/agents/signupbouncer","markdown":"https://wellknown.network/agents/signupbouncer/record.md","api":"https://wellknown.network/api/v1/agents/signupbouncer","status":"https://wellknown.network/api/v1/agents/signupbouncer/status","claim":"https://wellknown.network/agents/signupbouncer/claim","claimApi":"https://wellknown.network/api/v1/claims","claimDescriptor":"https://wellknown.network/agents/signupbouncer/claim.json","badge":"https://wellknown.network/agents/signupbouncer/badge.svg","openapi":"https://wellknown.network/openapi.json","history":"https://wellknown.network/api/v1/agents/signupbouncer/history","tools":"https://wellknown.network/api/v1/agents/signupbouncer/tools"},"ard":{"identifier":"urn:air:signupbouncer.com:server:signupbouncer","type":"application/mcp-server-card+json"},"kind":"mcp_server","declared":{"name":"SignupBouncer","summary":"An API that checks new signups for disposable emails and repeat accounts.","description":"An API that checks new signups for disposable emails and repeat accounts.","publisher":{"name":"com.signupbouncer","url":null},"homepage":"https://signupbouncer.com/docs#mcp","repository":null,"version":"1.1.1","license":null,"protocols":["mcp"],"tags":[],"pricing":null,"endpoints":[{"url":"https://signupbouncer.com/mcp","type":"mcp_streamable_http","auth":null,"probeable":true}],"skills":null,"tools":null,"extra":{"updatedAt":"2026-10-16T18:13:40.933214Z","publishedAt":"2026-10-16T18:13:40.933214Z","registryName":"com.signupbouncer/checker"},"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":"productivity.email","name":"Email","confidence":1,"provenance":"derived"},{"slug":"data.database","name":"Databases","confidence":0.525,"provenance":"derived"}],"categories":["data","productivity"],"language":"en"},"observed":{"status":"live","statusReason":"Responded 6h ago.","lastOkAt":"2026-10-29T03:25:02.584Z","lastProbedAt":"2026-10-29T03:25:02.584Z","statusComputedAt":"2026-10-29T03:26:50.883Z","reliability30d":{"probes":38,"successRate":1,"p50Ms":311,"basis":"service","measures":{"availability":"availability","latency":"response time","tools":"tool surface observed","summary":"Checks reached the service itself."},"checks":{"total":38,"ok":38,"authBoundaryOk":0,"serviceOk":38,"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-29T03:25:02.584Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":296,"error":null,"detail":{"tools":[{"name":"check_email","description":"Checks one email address, and optionally the signup's IP address, the way SignupBouncer checks a new signup. Returns the result as \"verdict\" (allow, challenge o"},{"name":"explain_reason","description":"Explains a SignupBouncer reason code (for example disposable_domain, burner_mx, repeat_inbox, datacenter_ip): what it means, how many points it adds or whether "},{"name":"lookup_burner_domain","description":"Says whether a domain is on SignupBouncer's disposable (burner) email list, only on an old burner list (a challenge, not a block), a known relay service or a fr"},{"name":"integration_guide","description":"Returns the steps and the copy-paste code that checks new signups with SignupBouncer in one stack: supabase (a hook, no code), ory (a web hook, no code), fetch "},{"name":"get_rules","description":"Needs an API key. Returns the Rules settings of one of your apps: shadow or enforce mode, the challenge and block score cutoffs, what a challenge does in the Su"},{"name":"update_rules","description":"Needs an API key. Changes the Rules settings of one of your apps, which changes live signup blocking for that app: the next real signups are scored and refused "}],"toolCount":6,"toolsHash":"8e3132aee68d592cd995d671b49e5a9d8e2009edc49f1c9be2329ce49ef7e76b","serverName":"signupbouncer","capabilities":["tools"],"serverVersion":"1.2.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-28T20:27:49.267Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":304,"error":null,"detail":{"tools":[{"name":"check_email","description":"Checks one email address, and optionally the signup's IP address, the way SignupBouncer checks a new signup. Returns the result as \"verdict\" (allow, challenge o"},{"name":"explain_reason","description":"Explains a SignupBouncer reason code (for example disposable_domain, burner_mx, repeat_inbox, datacenter_ip): what it means, how many points it adds or whether "},{"name":"lookup_burner_domain","description":"Says whether a domain is on SignupBouncer's disposable (burner) email list, only on an old burner list (a challenge, not a block), a known relay service or a fr"},{"name":"integration_guide","description":"Returns the steps and the copy-paste code that checks new signups with SignupBouncer in one stack: supabase (a hook, no code), ory (a web hook, no code), fetch "},{"name":"get_rules","description":"Needs an API key. Returns the Rules settings of one of your apps: shadow or enforce mode, the challenge and block score cutoffs, what a challenge does in the Su"},{"name":"update_rules","description":"Needs an API key. Changes the Rules settings of one of your apps, which changes live signup blocking for that app: the next real signups are scored and refused "}],"toolCount":6,"toolsHash":"8e3132aee68d592cd995d671b49e5a9d8e2009edc49f1c9be2329ce49ef7e76b","serverName":"signupbouncer","capabilities":["tools"],"serverVersion":"1.2.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-28T13:32:50.727Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":329,"error":null,"detail":{"tools":[{"name":"check_email","description":"Checks one email address, and optionally the signup's IP address, the way SignupBouncer checks a new signup. Returns the result as \"verdict\" (allow, challenge o"},{"name":"explain_reason","description":"Explains a SignupBouncer reason code (for example disposable_domain, burner_mx, repeat_inbox, datacenter_ip): what it means, how many points it adds or whether "},{"name":"lookup_burner_domain","description":"Says whether a domain is on SignupBouncer's disposable (burner) email list, only on an old burner list (a challenge, not a block), a known relay service or a fr"},{"name":"integration_guide","description":"Returns the steps and the copy-paste code that checks new signups with SignupBouncer in one stack: supabase (a hook, no code), ory (a web hook, no code), fetch "},{"name":"get_rules","description":"Needs an API key. Returns the Rules settings of one of your apps: shadow or enforce mode, the challenge and block score cutoffs, what a challenge does in the Su"},{"name":"update_rules","description":"Needs an API key. Changes the Rules settings of one of your apps, which changes live signup blocking for that app: the next real signups are scored and refused "}],"toolCount":6,"toolsHash":"8e3132aee68d592cd995d671b49e5a9d8e2009edc49f1c9be2329ce49ef7e76b","serverName":"signupbouncer","capabilities":["tools"],"serverVersion":"1.2.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-28T06:27:59.772Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":301,"error":null,"detail":{"tools":[{"name":"check_email","description":"Checks one email address, and optionally the signup's IP address, the way SignupBouncer checks a new signup. Returns the result as \"verdict\" (allow, challenge o"},{"name":"explain_reason","description":"Explains a SignupBouncer reason code (for example disposable_domain, burner_mx, repeat_inbox, datacenter_ip): what it means, how many points it adds or whether "},{"name":"lookup_burner_domain","description":"Says whether a domain is on SignupBouncer's disposable (burner) email list, only on an old burner list (a challenge, not a block), a known relay service or a fr"},{"name":"integration_guide","description":"Returns the steps and the copy-paste code that checks new signups with SignupBouncer in one stack: supabase (a hook, no code), ory (a web hook, no code), fetch "},{"name":"get_rules","description":"Needs an API key. Returns the Rules settings of one of your apps: shadow or enforce mode, the challenge and block score cutoffs, what a challenge does in the Su"},{"name":"update_rules","description":"Needs an API key. Changes the Rules settings of one of your apps, which changes live signup blocking for that app: the next real signups are scored and refused "}],"toolCount":6,"toolsHash":"8e3132aee68d592cd995d671b49e5a9d8e2009edc49f1c9be2329ce49ef7e76b","serverName":"signupbouncer","capabilities":["tools"],"serverVersion":"1.2.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-27T23:29:32.178Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":311,"error":null,"detail":{"tools":[{"name":"check_email","description":"Checks one email address, and optionally the signup's IP address, the way SignupBouncer checks a new signup. Returns the result as \"verdict\" (allow, challenge o"},{"name":"explain_reason","description":"Explains a SignupBouncer reason code (for example disposable_domain, burner_mx, repeat_inbox, datacenter_ip): what it means, how many points it adds or whether "},{"name":"lookup_burner_domain","description":"Says whether a domain is on SignupBouncer's disposable (burner) email list, only on an old burner list (a challenge, not a block), a known relay service or a fr"},{"name":"integration_guide","description":"Returns the steps and the copy-paste code that checks new signups with SignupBouncer in one stack: supabase (a hook, no code), ory (a web hook, no code), fetch "},{"name":"get_rules","description":"Needs an API key. Returns the Rules settings of one of your apps: shadow or enforce mode, the challenge and block score cutoffs, what a challenge does in the Su"},{"name":"update_rules","description":"Needs an API key. Changes the Rules settings of one of your apps, which changes live signup blocking for that app: the next real signups are scored and refused "}],"toolCount":6,"toolsHash":"8e3132aee68d592cd995d671b49e5a9d8e2009edc49f1c9be2329ce49ef7e76b","serverName":"signupbouncer","capabilities":["tools"],"serverVersion":"1.2.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-27T16:26:16.360Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":294,"error":null,"detail":{"tools":[{"name":"check_email","description":"Checks one email address, and optionally the signup's IP address, the way SignupBouncer checks a new signup. Returns the result as \"verdict\" (allow, challenge o"},{"name":"explain_reason","description":"Explains a SignupBouncer reason code (for example disposable_domain, burner_mx, repeat_inbox, datacenter_ip): what it means, how many points it adds or whether "},{"name":"lookup_burner_domain","description":"Says whether a domain is on SignupBouncer's disposable (burner) email list, only on an old burner list (a challenge, not a block), a known relay service or a fr"},{"name":"integration_guide","description":"Returns the steps and the copy-paste code that checks new signups with SignupBouncer in one stack: supabase (a hook, no code), ory (a web hook, no code), fetch "},{"name":"get_rules","description":"Needs an API key. Returns the Rules settings of one of your apps: shadow or enforce mode, the challenge and block score cutoffs, what a challenge does in the Su"},{"name":"update_rules","description":"Needs an API key. Changes the Rules settings of one of your apps, which changes live signup blocking for that app: the next real signups are scored and refused "}],"toolCount":6,"toolsHash":"8e3132aee68d592cd995d671b49e5a9d8e2009edc49f1c9be2329ce49ef7e76b","serverName":"signupbouncer","capabilities":["tools"],"serverVersion":"1.2.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-27T09:25:45.571Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":363,"error":null,"detail":{"tools":[{"name":"check_email","description":"Checks one email address, and optionally the signup's IP address, the way SignupBouncer checks a new signup. Returns the result as \"verdict\" (allow, challenge o"},{"name":"explain_reason","description":"Explains a SignupBouncer reason code (for example disposable_domain, burner_mx, repeat_inbox, datacenter_ip): what it means, how many points it adds or whether "},{"name":"lookup_burner_domain","description":"Says whether a domain is on SignupBouncer's disposable (burner) email list, only on an old burner list (a challenge, not a block), a known relay service or a fr"},{"name":"integration_guide","description":"Returns the steps and the copy-paste code that checks new signups with SignupBouncer in one stack: supabase (a hook, no code), ory (a web hook, no code), fetch "},{"name":"get_rules","description":"Needs an API key. Returns the Rules settings of one of your apps: shadow or enforce mode, the challenge and block score cutoffs, what a challenge does in the Su"},{"name":"update_rules","description":"Needs an API key. Changes the Rules settings of one of your apps, which changes live signup blocking for that app: the next real signups are scored and refused "}],"toolCount":6,"toolsHash":"8e3132aee68d592cd995d671b49e5a9d8e2009edc49f1c9be2329ce49ef7e76b","serverName":"signupbouncer","capabilities":["tools"],"serverVersion":"1.2.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-27T02:22:43.000Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":289,"error":null,"detail":{"tools":[{"name":"check_email","description":"Checks one email address, and optionally the signup's IP address, the way SignupBouncer checks a new signup. Returns the result as \"verdict\" (allow, challenge o"},{"name":"explain_reason","description":"Explains a SignupBouncer reason code (for example disposable_domain, burner_mx, repeat_inbox, datacenter_ip): what it means, how many points it adds or whether "},{"name":"lookup_burner_domain","description":"Says whether a domain is on SignupBouncer's disposable (burner) email list, only on an old burner list (a challenge, not a block), a known relay service or a fr"},{"name":"integration_guide","description":"Returns the steps and the copy-paste code that checks new signups with SignupBouncer in one stack: supabase (a hook, no code), ory (a web hook, no code), fetch "},{"name":"get_rules","description":"Needs an API key. Returns the Rules settings of one of your apps: shadow or enforce mode, the challenge and block score cutoffs, what a challenge does in the Su"},{"name":"update_rules","description":"Needs an API key. Changes the Rules settings of one of your apps, which changes live signup blocking for that app: the next real signups are scored and refused "}],"toolCount":6,"toolsHash":"8e3132aee68d592cd995d671b49e5a9d8e2009edc49f1c9be2329ce49ef7e76b","serverName":"signupbouncer","capabilities":["tools"],"serverVersion":"1.2.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-26T19:24:55.538Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":317,"error":null,"detail":{"tools":[{"name":"check_email","description":"Checks one email address, and optionally the signup's IP address, the way SignupBouncer checks a new signup. Returns the result as \"verdict\" (allow, challenge o"},{"name":"explain_reason","description":"Explains a SignupBouncer reason code (for example disposable_domain, burner_mx, repeat_inbox, datacenter_ip): what it means, how many points it adds or whether "},{"name":"lookup_burner_domain","description":"Says whether a domain is on SignupBouncer's disposable (burner) email list, only on an old burner list (a challenge, not a block), a known relay service or a fr"},{"name":"integration_guide","description":"Returns the steps and the copy-paste code that checks new signups with SignupBouncer in one stack: supabase (a hook, no code), ory (a web hook, no code), fetch "},{"name":"get_rules","description":"Needs an API key. Returns the Rules settings of one of your apps: shadow or enforce mode, the challenge and block score cutoffs, what a challenge does in the Su"},{"name":"update_rules","description":"Needs an API key. Changes the Rules settings of one of your apps, which changes live signup blocking for that app: the next real signups are scored and refused "}],"toolCount":6,"toolsHash":"8e3132aee68d592cd995d671b49e5a9d8e2009edc49f1c9be2329ce49ef7e76b","serverName":"signupbouncer","capabilities":["tools"],"serverVersion":"1.2.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-26T12:27:55.229Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":307,"error":null,"detail":{"tools":[{"name":"check_email","description":"Checks one email address, and optionally the signup's IP address, the way SignupBouncer checks a new signup. Returns the result as \"verdict\" (allow, challenge o"},{"name":"explain_reason","description":"Explains a SignupBouncer reason code (for example disposable_domain, burner_mx, repeat_inbox, datacenter_ip): what it means, how many points it adds or whether "},{"name":"lookup_burner_domain","description":"Says whether a domain is on SignupBouncer's disposable (burner) email list, only on an old burner list (a challenge, not a block), a known relay service or a fr"},{"name":"integration_guide","description":"Returns the steps and the copy-paste code that checks new signups with SignupBouncer in one stack: supabase (a hook, no code), ory (a web hook, no code), fetch "},{"name":"get_rules","description":"Needs an API key. Returns the Rules settings of one of your apps: shadow or enforce mode, the challenge and block score cutoffs, what a challenge does in the Su"},{"name":"update_rules","description":"Needs an API key. Changes the Rules settings of one of your apps, which changes live signup blocking for that app: the next real signups are scored and refused "}],"toolCount":6,"toolsHash":"8e3132aee68d592cd995d671b49e5a9d8e2009edc49f1c9be2329ce49ef7e76b","serverName":"signupbouncer","capabilities":["tools"],"serverVersion":"1.2.0","protocolVersion":"2025-06-18"}}],"tools":[{"name":"check_email","description":"Checks one email address, and optionally the signup's IP address, the way SignupBouncer checks a new signup. Returns the result as \"verdict\" (allow, challenge o"},{"name":"explain_reason","description":"Explains a SignupBouncer reason code (for example disposable_domain, burner_mx, repeat_inbox, datacenter_ip): what it means, how many points it adds or whether "},{"name":"lookup_burner_domain","description":"Says whether a domain is on SignupBouncer's disposable (burner) email list, only on an old burner list (a challenge, not a block), a known relay service or a fr"},{"name":"integration_guide","description":"Returns the steps and the copy-paste code that checks new signups with SignupBouncer in one stack: supabase (a hook, no code), ory (a web hook, no code), fetch "},{"name":"get_rules","description":"Needs an API key. Returns the Rules settings of one of your apps: shadow or enforce mode, the challenge and block score cutoffs, what a challenge does in the Su"},{"name":"update_rules","description":"Needs an API key. Changes the Rules settings of one of your apps, which changes live signup blocking for that app: the next real signups are scored and refused "}],"package":null,"toolSurface":{"id":"ts_yfxrgvhxhmgs","endpointId":"ep_hbq2mv33yj6b","hash":"8e3132aee68d592cd995d671b49e5a9d8e2009edc49f1c9be2329ce49ef7e76b","toolCount":6,"serverName":"signupbouncer","serverVersion":"1.2.0","protocolVersion":"2025-06-18","firstSeenAt":"2026-10-21T11:25:45.136Z","lastSeenAt":"2026-10-29T03:25:02.589Z","observations":27,"toolNames":["check_email","explain_reason","lookup_burner_domain","integration_guide","get_rules","update_rules"],"distinctSurfaces":3},"endpointFacts":[{"id":"ep_hbq2mv33yj6b","url":"https://signupbouncer.com/mcp","type":"mcp_streamable_http","factsCheckedAt":"2026-10-24T12:23:13.160Z","auth":{"observedAt":"2026-10-24T12:23:13.273Z","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-24T12:23:13.291Z","protocol":"TLSv1.3","chainValid":true,"chainError":null,"hostMatches":true,"subject":"signupbouncer.com","issuer":{"commonName":"YE1","organization":"Let's Encrypt"},"validFrom":"2026-10-14T01:23:04.000Z","validTo":"2027-01-12T01:23:03.000Z","daysToExpiry":74,"sanCount":2,"fingerprint256":"98:8A:69:BD:D5:41:50:0B:36:DB:04:D2:A9:08:8D:4A:D3:37:B7:42:35:96:4F:67:13:30:98:E5:39:58:28:28"}}]},"verification":{"claimed":false,"claimedAt":null,"proofs":[]},"provenance":{"sources":[{"source":"mcp_registry","key":"com.signupbouncer/checker","url":"https://registry.modelcontextprotocol.io/v0/servers/com.signupbouncer%2Fchecker","firstSeenAt":"2026-10-18T11:22:13.562Z","fetchedAt":"2026-10-28T20:18:39.820Z","normalizedAt":"2026-10-28T20:18:39.820Z"}]},"firstSeenAt":"2026-10-18T11:22:13.562Z","updatedAt":"2026-10-29T03:27:40.914Z"}