{"$schema":"https://wellknown.network/schemas/agent-record-v1.json","schemaVersion":"1","id":"ag_yscmzs8yap9p","handle":"signops","url":"https://wellknown.network/agents/signops","links":{"self":"https://wellknown.network/agents/signops/record.json","html":"https://wellknown.network/agents/signops","markdown":"https://wellknown.network/agents/signops/record.md","api":"https://wellknown.network/api/v1/agents/signops","status":"https://wellknown.network/api/v1/agents/signops/status","claim":"https://wellknown.network/agents/signops/claim","claimApi":"https://wellknown.network/api/v1/claims","claimDescriptor":"https://wellknown.network/agents/signops/claim.json","badge":"https://wellknown.network/agents/signops/badge.svg","openapi":"https://wellknown.network/openapi.json","history":"https://wellknown.network/api/v1/agents/signops/history","tools":"https://wellknown.network/api/v1/agents/signops/tools"},"ard":{"identifier":"urn:air:api.signops.dev:server:signops","type":"application/mcp-server-card+json"},"kind":"mcp_server","declared":{"name":"SignOps","summary":"Send push to Android, iOS and the web, and ask a trusted phone to approve a login, from your agent.","description":"Send push to Android, iOS and the web, and ask a trusted phone to approve a login, from your agent.","publisher":{"name":"dev.signops","url":null},"homepage":"https://signops.dev/docs/#mcp","repository":null,"version":"1.0.0","license":null,"protocols":["mcp"],"tags":[],"pricing":null,"endpoints":[{"url":"https://api.signops.dev/mcp","type":"mcp_streamable_http","auth":null,"probeable":true}],"skills":null,"tools":null,"extra":{"updatedAt":"2026-10-25T19:39:58.542236Z","publishedAt":"2026-10-25T19:39:58.542236Z","registryName":"dev.signops/signops"},"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":"communication.notifications","name":"Notifications","confidence":1,"provenance":"derived"},{"slug":"communication.sms-voice","name":"SMS & Voice","confidence":0.859,"provenance":"derived"},{"slug":"content.marketing","name":"Marketing","confidence":0.54,"provenance":"derived"},{"slug":"ai.prompting","name":"Prompt Management","confidence":0.525,"provenance":"derived"}],"categories":["ai","communication","content"],"language":"en"},"observed":{"status":"live","statusReason":"Responded 1h ago.","lastOkAt":"2026-11-01T21:29:36.849Z","lastProbedAt":"2026-11-01T21:29:36.849Z","statusComputedAt":"2026-11-01T21:32:45.626Z","reliability30d":{"probes":13,"successRate":1,"p50Ms":38,"basis":"service","measures":{"availability":"availability","latency":"response time","tools":"tool surface observed","summary":"Checks reached the service itself."},"checks":{"total":13,"ok":13,"authBoundaryOk":0,"serviceOk":13,"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-11-01T21:29:36.849Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":35,"error":null,"detail":{"tools":[{"name":"send_push","description":"Send a push notification to one user (user_id), a list (user_ids, up to 1,000), a topic, or everyone (all: true). Give exactly one target. A push to one user, s"},{"name":"get_push","description":"One push by id: status, devices, sent and failed, per platform."},{"name":"list_pushes","description":"Pushes, newest first. On the Free plan only pushes still to go are listed (no delivery logs)."},{"name":"cancel_push","description":"Cancel a push that is scheduled and has not started sending."},{"name":"register_device","description":"Store a device's push token under your user id. Android and iOS tokens come from the Firebase or Apple SDK; for web, token is the PushSubscription as JSON."},{"name":"list_devices","description":"The devices registered for one user id, newest first, with platform and whether each is trusted for approvals."},{"name":"remove_device","description":"Remove one device by id; it gets no more pushes."},{"name":"list_topics","description":"Topics with how many users each has."},{"name":"subscribe_topic","description":"Add a user to a topic. The topic exists once it has a user."},{"name":"unsubscribe_topic","description":"Take a user off a topic."},{"name":"list_templates","description":"Saved push templates with their fields."},{"name":"get_template","description":"One template by name."},{"name":"save_template","description":"Create or replace a template. Put {{field}} where a value goes, or {{field|default}} for one with a fallback."},{"name":"delete_template","description":"Delete a template by name. Pushes already made from it are not changed."},{"name":"create_approval","description":"Send an approval request to the user's trusted phone, with number matching. The user must have a phone enrolled through the SignOps SDK."},{"name":"get_approval","description":"An approval request's status: pending, approved, denied, expired or cancelled."},{"name":"cancel_approval","description":"Cancel a pending approval request."},{"name":"list_passkeys","description":"The passkeys registered for one user id."},{"name":"get_authenticator","description":"Whether a user has an authenticator app (TOTP) confirmed, when it was last used, backup codes left, and whether wrong codes have locked them."},{"name":"remove_authenticator","description":"Remove a user's authenticator app and backup codes, for a lost phone. They can enrol again."},{"name":"unlock_user","description":"Clear the lock that five wrong codes in 15 minutes put on a user, and their count of wrong codes."},{"name":"export_user","description":"Everything SignOps holds on one user id as JSON: devices (tokens shortened), topics, passkeys, authenticator status, approvals of the last 90 days, consent hist"},{"name":"get_consent","description":"The latest consent answer per purpose for one user, like marketing_push, and the history."}],"toolCount":23,"toolsHash":"b5e0a1170440373078d321ab90a91e0e0a5ff85a440410ceda72c5390ad1bed9","serverName":"signops","capabilities":["tools"],"serverVersion":"1.0.0","protocolVersion":"2025-06-18"}},{"at":"2026-11-01T13:27:51.977Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":45,"error":null,"detail":{"tools":[{"name":"send_push","description":"Send a push notification to one user (user_id), a list (user_ids, up to 1,000), a topic, or everyone (all: true). Give exactly one target. A push to one user, s"},{"name":"get_push","description":"One push by id: status, devices, sent and failed, per platform."},{"name":"list_pushes","description":"Pushes, newest first. On the Free plan only pushes still to go are listed (no delivery logs)."},{"name":"cancel_push","description":"Cancel a push that is scheduled and has not started sending."},{"name":"register_device","description":"Store a device's push token under your user id. Android and iOS tokens come from the Firebase or Apple SDK; for web, token is the PushSubscription as JSON."},{"name":"list_devices","description":"The devices registered for one user id, newest first, with platform and whether each is trusted for approvals."},{"name":"remove_device","description":"Remove one device by id; it gets no more pushes."},{"name":"list_topics","description":"Topics with how many users each has."},{"name":"subscribe_topic","description":"Add a user to a topic. The topic exists once it has a user."},{"name":"unsubscribe_topic","description":"Take a user off a topic."},{"name":"list_templates","description":"Saved push templates with their fields."},{"name":"get_template","description":"One template by name."},{"name":"save_template","description":"Create or replace a template. Put {{field}} where a value goes, or {{field|default}} for one with a fallback."},{"name":"delete_template","description":"Delete a template by name. Pushes already made from it are not changed."},{"name":"create_approval","description":"Send an approval request to the user's trusted phone, with number matching. The user must have a phone enrolled through the SignOps SDK."},{"name":"get_approval","description":"An approval request's status: pending, approved, denied, expired or cancelled."},{"name":"cancel_approval","description":"Cancel a pending approval request."},{"name":"list_passkeys","description":"The passkeys registered for one user id."},{"name":"get_authenticator","description":"Whether a user has an authenticator app (TOTP) confirmed, when it was last used, backup codes left, and whether wrong codes have locked them."},{"name":"remove_authenticator","description":"Remove a user's authenticator app and backup codes, for a lost phone. They can enrol again."},{"name":"unlock_user","description":"Clear the lock that five wrong codes in 15 minutes put on a user, and their count of wrong codes."},{"name":"export_user","description":"Everything SignOps holds on one user id as JSON: devices (tokens shortened), topics, passkeys, authenticator status, approvals of the last 90 days, consent hist"},{"name":"get_consent","description":"The latest consent answer per purpose for one user, like marketing_push, and the history."}],"toolCount":23,"toolsHash":"b5e0a1170440373078d321ab90a91e0e0a5ff85a440410ceda72c5390ad1bed9","serverName":"signops","capabilities":["tools"],"serverVersion":"1.0.0","protocolVersion":"2025-06-18"}},{"at":"2026-11-01T05:33:25.585Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":30,"error":null,"detail":{"tools":[{"name":"send_push","description":"Send a push notification to one user (user_id), a list (user_ids, up to 1,000), a topic, or everyone (all: true). Give exactly one target. A push to one user, s"},{"name":"get_push","description":"One push by id: status, devices, sent and failed, per platform."},{"name":"list_pushes","description":"Pushes, newest first. On the Free plan only pushes still to go are listed (no delivery logs)."},{"name":"cancel_push","description":"Cancel a push that is scheduled and has not started sending."},{"name":"register_device","description":"Store a device's push token under your user id. Android and iOS tokens come from the Firebase or Apple SDK; for web, token is the PushSubscription as JSON."},{"name":"list_devices","description":"The devices registered for one user id, newest first, with platform and whether each is trusted for approvals."},{"name":"remove_device","description":"Remove one device by id; it gets no more pushes."},{"name":"list_topics","description":"Topics with how many users each has."},{"name":"subscribe_topic","description":"Add a user to a topic. The topic exists once it has a user."},{"name":"unsubscribe_topic","description":"Take a user off a topic."},{"name":"list_templates","description":"Saved push templates with their fields."},{"name":"get_template","description":"One template by name."},{"name":"save_template","description":"Create or replace a template. Put {{field}} where a value goes, or {{field|default}} for one with a fallback."},{"name":"delete_template","description":"Delete a template by name. Pushes already made from it are not changed."},{"name":"create_approval","description":"Send an approval request to the user's trusted phone, with number matching. The user must have a phone enrolled through the SignOps SDK."},{"name":"get_approval","description":"An approval request's status: pending, approved, denied, expired or cancelled."},{"name":"cancel_approval","description":"Cancel a pending approval request."},{"name":"list_passkeys","description":"The passkeys registered for one user id."},{"name":"get_authenticator","description":"Whether a user has an authenticator app (TOTP) confirmed, when it was last used, backup codes left, and whether wrong codes have locked them."},{"name":"remove_authenticator","description":"Remove a user's authenticator app and backup codes, for a lost phone. They can enrol again."},{"name":"unlock_user","description":"Clear the lock that five wrong codes in 15 minutes put on a user, and their count of wrong codes."},{"name":"export_user","description":"Everything SignOps holds on one user id as JSON: devices (tokens shortened), topics, passkeys, authenticator status, approvals of the last 90 days, consent hist"},{"name":"get_consent","description":"The latest consent answer per purpose for one user, like marketing_push, and the history."}],"toolCount":23,"toolsHash":"b5e0a1170440373078d321ab90a91e0e0a5ff85a440410ceda72c5390ad1bed9","serverName":"signops","capabilities":["tools"],"serverVersion":"1.0.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-31T21:27:59.320Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":73,"error":null,"detail":{"tools":[{"name":"send_push","description":"Send a push notification to one user (user_id), a list (user_ids, up to 1,000), a topic, or everyone (all: true). Give exactly one target. A push to one user, s"},{"name":"get_push","description":"One push by id: status, devices, sent and failed, per platform."},{"name":"list_pushes","description":"Pushes, newest first. On the Free plan only pushes still to go are listed (no delivery logs)."},{"name":"cancel_push","description":"Cancel a push that is scheduled and has not started sending."},{"name":"register_device","description":"Store a device's push token under your user id. Android and iOS tokens come from the Firebase or Apple SDK; for web, token is the PushSubscription as JSON."},{"name":"list_devices","description":"The devices registered for one user id, newest first, with platform and whether each is trusted for approvals."},{"name":"remove_device","description":"Remove one device by id; it gets no more pushes."},{"name":"list_topics","description":"Topics with how many users each has."},{"name":"subscribe_topic","description":"Add a user to a topic. The topic exists once it has a user."},{"name":"unsubscribe_topic","description":"Take a user off a topic."},{"name":"list_templates","description":"Saved push templates with their fields."},{"name":"get_template","description":"One template by name."},{"name":"save_template","description":"Create or replace a template. Put {{field}} where a value goes, or {{field|default}} for one with a fallback."},{"name":"delete_template","description":"Delete a template by name. Pushes already made from it are not changed."},{"name":"create_approval","description":"Send an approval request to the user's trusted phone, with number matching. The user must have a phone enrolled through the SignOps SDK."},{"name":"get_approval","description":"An approval request's status: pending, approved, denied, expired or cancelled."},{"name":"cancel_approval","description":"Cancel a pending approval request."},{"name":"list_passkeys","description":"The passkeys registered for one user id."},{"name":"get_authenticator","description":"Whether a user has an authenticator app (TOTP) confirmed, when it was last used, backup codes left, and whether wrong codes have locked them."},{"name":"remove_authenticator","description":"Remove a user's authenticator app and backup codes, for a lost phone. They can enrol again."},{"name":"unlock_user","description":"Clear the lock that five wrong codes in 15 minutes put on a user, and their count of wrong codes."},{"name":"export_user","description":"Everything SignOps holds on one user id as JSON: devices (tokens shortened), topics, passkeys, authenticator status, approvals of the last 90 days, consent hist"},{"name":"get_consent","description":"The latest consent answer per purpose for one user, like marketing_push, and the history."}],"toolCount":23,"toolsHash":"b5e0a1170440373078d321ab90a91e0e0a5ff85a440410ceda72c5390ad1bed9","serverName":"signops","capabilities":["tools"],"serverVersion":"1.0.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-31T13:28:24.652Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":13,"error":null,"detail":{"tools":[{"name":"send_push","description":"Send a push notification to one user (user_id), a list (user_ids, up to 1,000), a topic, or everyone (all: true). Give exactly one target. A push to one user, s"},{"name":"get_push","description":"One push by id: status, devices, sent and failed, per platform."},{"name":"list_pushes","description":"Pushes, newest first. On the Free plan only pushes still to go are listed (no delivery logs)."},{"name":"cancel_push","description":"Cancel a push that is scheduled and has not started sending."},{"name":"register_device","description":"Store a device's push token under your user id. Android and iOS tokens come from the Firebase or Apple SDK; for web, token is the PushSubscription as JSON."},{"name":"list_devices","description":"The devices registered for one user id, newest first, with platform and whether each is trusted for approvals."},{"name":"remove_device","description":"Remove one device by id; it gets no more pushes."},{"name":"list_topics","description":"Topics with how many users each has."},{"name":"subscribe_topic","description":"Add a user to a topic. The topic exists once it has a user."},{"name":"unsubscribe_topic","description":"Take a user off a topic."},{"name":"list_templates","description":"Saved push templates with their fields."},{"name":"get_template","description":"One template by name."},{"name":"save_template","description":"Create or replace a template. Put {{field}} where a value goes, or {{field|default}} for one with a fallback."},{"name":"delete_template","description":"Delete a template by name. Pushes already made from it are not changed."},{"name":"create_approval","description":"Send an approval request to the user's trusted phone, with number matching. The user must have a phone enrolled through the SignOps SDK."},{"name":"get_approval","description":"An approval request's status: pending, approved, denied, expired or cancelled."},{"name":"cancel_approval","description":"Cancel a pending approval request."},{"name":"list_passkeys","description":"The passkeys registered for one user id."},{"name":"get_authenticator","description":"Whether a user has an authenticator app (TOTP) confirmed, when it was last used, backup codes left, and whether wrong codes have locked them."},{"name":"remove_authenticator","description":"Remove a user's authenticator app and backup codes, for a lost phone. They can enrol again."},{"name":"unlock_user","description":"Clear the lock that five wrong codes in 15 minutes put on a user, and their count of wrong codes."},{"name":"export_user","description":"Everything SignOps holds on one user id as JSON: devices (tokens shortened), topics, passkeys, authenticator status, approvals of the last 90 days, consent hist"},{"name":"get_consent","description":"The latest consent answer per purpose for one user, like marketing_push, and the history."}],"toolCount":23,"toolsHash":"b5e0a1170440373078d321ab90a91e0e0a5ff85a440410ceda72c5390ad1bed9","serverName":"signops","capabilities":["tools"],"serverVersion":"1.0.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-31T05:25:59.427Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":38,"error":null,"detail":{"tools":[{"name":"send_push","description":"Send a push notification to one user (user_id), a list (user_ids, up to 1,000), a topic, or everyone (all: true). Give exactly one target. A push to one user, s"},{"name":"get_push","description":"One push by id: status, devices, sent and failed, per platform."},{"name":"list_pushes","description":"Pushes, newest first. On the Free plan only pushes still to go are listed (no delivery logs)."},{"name":"cancel_push","description":"Cancel a push that is scheduled and has not started sending."},{"name":"register_device","description":"Store a device's push token under your user id. Android and iOS tokens come from the Firebase or Apple SDK; for web, token is the PushSubscription as JSON."},{"name":"list_devices","description":"The devices registered for one user id, newest first, with platform and whether each is trusted for approvals."},{"name":"remove_device","description":"Remove one device by id; it gets no more pushes."},{"name":"list_topics","description":"Topics with how many users each has."},{"name":"subscribe_topic","description":"Add a user to a topic. The topic exists once it has a user."},{"name":"unsubscribe_topic","description":"Take a user off a topic."},{"name":"list_templates","description":"Saved push templates with their fields."},{"name":"get_template","description":"One template by name."},{"name":"save_template","description":"Create or replace a template. Put {{field}} where a value goes, or {{field|default}} for one with a fallback."},{"name":"delete_template","description":"Delete a template by name. Pushes already made from it are not changed."},{"name":"create_approval","description":"Send an approval request to the user's trusted phone, with number matching. The user must have a phone enrolled through the SignOps SDK."},{"name":"get_approval","description":"An approval request's status: pending, approved, denied, expired or cancelled."},{"name":"cancel_approval","description":"Cancel a pending approval request."},{"name":"list_passkeys","description":"The passkeys registered for one user id."},{"name":"get_authenticator","description":"Whether a user has an authenticator app (TOTP) confirmed, when it was last used, backup codes left, and whether wrong codes have locked them."},{"name":"remove_authenticator","description":"Remove a user's authenticator app and backup codes, for a lost phone. They can enrol again."},{"name":"unlock_user","description":"Clear the lock that five wrong codes in 15 minutes put on a user, and their count of wrong codes."},{"name":"export_user","description":"Everything SignOps holds on one user id as JSON: devices (tokens shortened), topics, passkeys, authenticator status, approvals of the last 90 days, consent hist"},{"name":"get_consent","description":"The latest consent answer per purpose for one user, like marketing_push, and the history."}],"toolCount":23,"toolsHash":"b5e0a1170440373078d321ab90a91e0e0a5ff85a440410ceda72c5390ad1bed9","serverName":"signops","capabilities":["tools"],"serverVersion":"1.0.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-30T21:25:54.622Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":42,"error":null,"detail":{"tools":[{"name":"send_push","description":"Send a push notification to one user (user_id), a list (user_ids, up to 1,000), a topic, or everyone (all: true). Give exactly one target. A push to one user, s"},{"name":"get_push","description":"One push by id: status, devices, sent and failed, per platform."},{"name":"list_pushes","description":"Pushes, newest first. On the Free plan only pushes still to go are listed (no delivery logs)."},{"name":"cancel_push","description":"Cancel a push that is scheduled and has not started sending."},{"name":"register_device","description":"Store a device's push token under your user id. Android and iOS tokens come from the Firebase or Apple SDK; for web, token is the PushSubscription as JSON."},{"name":"list_devices","description":"The devices registered for one user id, newest first, with platform and whether each is trusted for approvals."},{"name":"remove_device","description":"Remove one device by id; it gets no more pushes."},{"name":"list_topics","description":"Topics with how many users each has."},{"name":"subscribe_topic","description":"Add a user to a topic. The topic exists once it has a user."},{"name":"unsubscribe_topic","description":"Take a user off a topic."},{"name":"list_templates","description":"Saved push templates with their fields."},{"name":"get_template","description":"One template by name."},{"name":"save_template","description":"Create or replace a template. Put {{field}} where a value goes, or {{field|default}} for one with a fallback."},{"name":"delete_template","description":"Delete a template by name. Pushes already made from it are not changed."},{"name":"create_approval","description":"Send an approval request to the user's trusted phone, with number matching. The user must have a phone enrolled through the SignOps SDK."},{"name":"get_approval","description":"An approval request's status: pending, approved, denied, expired or cancelled."},{"name":"cancel_approval","description":"Cancel a pending approval request."},{"name":"list_passkeys","description":"The passkeys registered for one user id."},{"name":"get_authenticator","description":"Whether a user has an authenticator app (TOTP) confirmed, when it was last used, backup codes left, and whether wrong codes have locked them."},{"name":"remove_authenticator","description":"Remove a user's authenticator app and backup codes, for a lost phone. They can enrol again."},{"name":"unlock_user","description":"Clear the lock that five wrong codes in 15 minutes put on a user, and their count of wrong codes."},{"name":"export_user","description":"Everything SignOps holds on one user id as JSON: devices (tokens shortened), topics, passkeys, authenticator status, approvals of the last 90 days, consent hist"},{"name":"get_consent","description":"The latest consent answer per purpose for one user, like marketing_push, and the history."}],"toolCount":23,"toolsHash":"b5e0a1170440373078d321ab90a91e0e0a5ff85a440410ceda72c5390ad1bed9","serverName":"signops","capabilities":["tools"],"serverVersion":"1.0.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-30T14:27:57.004Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":54,"error":null,"detail":{"tools":[{"name":"send_push","description":"Send a push notification to one user (user_id), a list (user_ids, up to 1,000), a topic, or everyone (all: true). Give exactly one target. A push to one user, s"},{"name":"get_push","description":"One push by id: status, devices, sent and failed, per platform."},{"name":"list_pushes","description":"Pushes, newest first. On the Free plan only pushes still to go are listed (no delivery logs)."},{"name":"cancel_push","description":"Cancel a push that is scheduled and has not started sending."},{"name":"register_device","description":"Store a device's push token under your user id. Android and iOS tokens come from the Firebase or Apple SDK; for web, token is the PushSubscription as JSON."},{"name":"list_devices","description":"The devices registered for one user id, newest first, with platform and whether each is trusted for approvals."},{"name":"remove_device","description":"Remove one device by id; it gets no more pushes."},{"name":"list_topics","description":"Topics with how many users each has."},{"name":"subscribe_topic","description":"Add a user to a topic. The topic exists once it has a user."},{"name":"unsubscribe_topic","description":"Take a user off a topic."},{"name":"list_templates","description":"Saved push templates with their fields."},{"name":"get_template","description":"One template by name."},{"name":"save_template","description":"Create or replace a template. Put {{field}} where a value goes, or {{field|default}} for one with a fallback."},{"name":"delete_template","description":"Delete a template by name. Pushes already made from it are not changed."},{"name":"create_approval","description":"Send an approval request to the user's trusted phone, with number matching. The user must have a phone enrolled through the SignOps SDK."},{"name":"get_approval","description":"An approval request's status: pending, approved, denied, expired or cancelled."},{"name":"cancel_approval","description":"Cancel a pending approval request."},{"name":"list_passkeys","description":"The passkeys registered for one user id."},{"name":"get_authenticator","description":"Whether a user has an authenticator app (TOTP) confirmed, when it was last used, backup codes left, and whether wrong codes have locked them."},{"name":"remove_authenticator","description":"Remove a user's authenticator app and backup codes, for a lost phone. They can enrol again."},{"name":"unlock_user","description":"Clear the lock that five wrong codes in 15 minutes put on a user, and their count of wrong codes."},{"name":"export_user","description":"Everything SignOps holds on one user id as JSON: devices (tokens shortened), topics, passkeys, authenticator status, approvals of the last 90 days, consent hist"},{"name":"get_consent","description":"The latest consent answer per purpose for one user, like marketing_push, and the history."}],"toolCount":23,"toolsHash":"b5e0a1170440373078d321ab90a91e0e0a5ff85a440410ceda72c5390ad1bed9","serverName":"signops","capabilities":["tools"],"serverVersion":"1.0.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-30T07:23:21.119Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":42,"error":null,"detail":{"tools":[{"name":"send_push","description":"Send a push notification to one user (user_id), a list (user_ids, up to 1,000), a topic, or everyone (all: true). Give exactly one target. A push to one user, s"},{"name":"get_push","description":"One push by id: status, devices, sent and failed, per platform."},{"name":"list_pushes","description":"Pushes, newest first. On the Free plan only pushes still to go are listed (no delivery logs)."},{"name":"cancel_push","description":"Cancel a push that is scheduled and has not started sending."},{"name":"register_device","description":"Store a device's push token under your user id. Android and iOS tokens come from the Firebase or Apple SDK; for web, token is the PushSubscription as JSON."},{"name":"list_devices","description":"The devices registered for one user id, newest first, with platform and whether each is trusted for approvals."},{"name":"remove_device","description":"Remove one device by id; it gets no more pushes."},{"name":"list_topics","description":"Topics with how many users each has."},{"name":"subscribe_topic","description":"Add a user to a topic. The topic exists once it has a user."},{"name":"unsubscribe_topic","description":"Take a user off a topic."},{"name":"list_templates","description":"Saved push templates with their fields."},{"name":"get_template","description":"One template by name."},{"name":"save_template","description":"Create or replace a template. Put {{field}} where a value goes, or {{field|default}} for one with a fallback."},{"name":"delete_template","description":"Delete a template by name. Pushes already made from it are not changed."},{"name":"create_approval","description":"Send an approval request to the user's trusted phone, with number matching. The user must have a phone enrolled through the SignOps SDK."},{"name":"get_approval","description":"An approval request's status: pending, approved, denied, expired or cancelled."},{"name":"cancel_approval","description":"Cancel a pending approval request."},{"name":"list_passkeys","description":"The passkeys registered for one user id."},{"name":"get_authenticator","description":"Whether a user has an authenticator app (TOTP) confirmed, when it was last used, backup codes left, and whether wrong codes have locked them."},{"name":"remove_authenticator","description":"Remove a user's authenticator app and backup codes, for a lost phone. They can enrol again."},{"name":"unlock_user","description":"Clear the lock that five wrong codes in 15 minutes put on a user, and their count of wrong codes."},{"name":"export_user","description":"Everything SignOps holds on one user id as JSON: devices (tokens shortened), topics, passkeys, authenticator status, approvals of the last 90 days, consent hist"},{"name":"get_consent","description":"The latest consent answer per purpose for one user, like marketing_push, and the history."}],"toolCount":23,"toolsHash":"b5e0a1170440373078d321ab90a91e0e0a5ff85a440410ceda72c5390ad1bed9","serverName":"signops","capabilities":["tools"],"serverVersion":"1.0.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-30T00:24:46.633Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":41,"error":null,"detail":{"tools":[{"name":"send_push","description":"Send a push notification to one user (user_id), a list (user_ids, up to 1,000), a topic, or everyone (all: true). Give exactly one target. A push to one user, s"},{"name":"get_push","description":"One push by id: status, devices, sent and failed, per platform."},{"name":"list_pushes","description":"Pushes, newest first. On the Free plan only pushes still to go are listed (no delivery logs)."},{"name":"cancel_push","description":"Cancel a push that is scheduled and has not started sending."},{"name":"register_device","description":"Store a device's push token under your user id. Android and iOS tokens come from the Firebase or Apple SDK; for web, token is the PushSubscription as JSON."},{"name":"list_devices","description":"The devices registered for one user id, newest first, with platform and whether each is trusted for approvals."},{"name":"remove_device","description":"Remove one device by id; it gets no more pushes."},{"name":"list_topics","description":"Topics with how many users each has."},{"name":"subscribe_topic","description":"Add a user to a topic. The topic exists once it has a user."},{"name":"unsubscribe_topic","description":"Take a user off a topic."},{"name":"list_templates","description":"Saved push templates with their fields."},{"name":"get_template","description":"One template by name."},{"name":"save_template","description":"Create or replace a template. Put {{field}} where a value goes, or {{field|default}} for one with a fallback."},{"name":"delete_template","description":"Delete a template by name. Pushes already made from it are not changed."},{"name":"create_approval","description":"Send an approval request to the user's trusted phone, with number matching. The user must have a phone enrolled through the SignOps SDK."},{"name":"get_approval","description":"An approval request's status: pending, approved, denied, expired or cancelled."},{"name":"cancel_approval","description":"Cancel a pending approval request."},{"name":"list_passkeys","description":"The passkeys registered for one user id."},{"name":"get_authenticator","description":"Whether a user has an authenticator app (TOTP) confirmed, when it was last used, backup codes left, and whether wrong codes have locked them."},{"name":"remove_authenticator","description":"Remove a user's authenticator app and backup codes, for a lost phone. They can enrol again."},{"name":"unlock_user","description":"Clear the lock that five wrong codes in 15 minutes put on a user, and their count of wrong codes."},{"name":"export_user","description":"Everything SignOps holds on one user id as JSON: devices (tokens shortened), topics, passkeys, authenticator status, approvals of the last 90 days, consent hist"},{"name":"get_consent","description":"The latest consent answer per purpose for one user, like marketing_push, and the history."}],"toolCount":23,"toolsHash":"b5e0a1170440373078d321ab90a91e0e0a5ff85a440410ceda72c5390ad1bed9","serverName":"signops","capabilities":["tools"],"serverVersion":"1.0.0","protocolVersion":"2025-06-18"}}],"tools":[{"name":"send_push","description":"Send a push notification to one user (user_id), a list (user_ids, up to 1,000), a topic, or everyone (all: true). Give exactly one target. A push to one user, s"},{"name":"get_push","description":"One push by id: status, devices, sent and failed, per platform."},{"name":"list_pushes","description":"Pushes, newest first. On the Free plan only pushes still to go are listed (no delivery logs)."},{"name":"cancel_push","description":"Cancel a push that is scheduled and has not started sending."},{"name":"register_device","description":"Store a device's push token under your user id. Android and iOS tokens come from the Firebase or Apple SDK; for web, token is the PushSubscription as JSON."},{"name":"list_devices","description":"The devices registered for one user id, newest first, with platform and whether each is trusted for approvals."},{"name":"remove_device","description":"Remove one device by id; it gets no more pushes."},{"name":"list_topics","description":"Topics with how many users each has."},{"name":"subscribe_topic","description":"Add a user to a topic. The topic exists once it has a user."},{"name":"unsubscribe_topic","description":"Take a user off a topic."},{"name":"list_templates","description":"Saved push templates with their fields."},{"name":"get_template","description":"One template by name."},{"name":"save_template","description":"Create or replace a template. Put {{field}} where a value goes, or {{field|default}} for one with a fallback."},{"name":"delete_template","description":"Delete a template by name. Pushes already made from it are not changed."},{"name":"create_approval","description":"Send an approval request to the user's trusted phone, with number matching. The user must have a phone enrolled through the SignOps SDK."},{"name":"get_approval","description":"An approval request's status: pending, approved, denied, expired or cancelled."},{"name":"cancel_approval","description":"Cancel a pending approval request."},{"name":"list_passkeys","description":"The passkeys registered for one user id."},{"name":"get_authenticator","description":"Whether a user has an authenticator app (TOTP) confirmed, when it was last used, backup codes left, and whether wrong codes have locked them."},{"name":"remove_authenticator","description":"Remove a user's authenticator app and backup codes, for a lost phone. They can enrol again."},{"name":"unlock_user","description":"Clear the lock that five wrong codes in 15 minutes put on a user, and their count of wrong codes."},{"name":"export_user","description":"Everything SignOps holds on one user id as JSON: devices (tokens shortened), topics, passkeys, authenticator status, approvals of the last 90 days, consent hist"},{"name":"get_consent","description":"The latest consent answer per purpose for one user, like marketing_push, and the history."}],"package":null,"toolSurface":{"id":"ts_9p7x6d4vqpaz","endpointId":"ep_495zfbfj4reu","hash":"b5e0a1170440373078d321ab90a91e0e0a5ff85a440410ceda72c5390ad1bed9","toolCount":23,"serverName":"signops","serverVersion":"1.0.0","protocolVersion":"2025-06-18","firstSeenAt":"2026-10-29T02:30:37.578Z","lastSeenAt":"2026-11-01T21:29:36.858Z","observations":13,"toolNames":["send_push","get_push","list_pushes","cancel_push","register_device","list_devices","remove_device","list_topics","subscribe_topic","unsubscribe_topic","list_templates","get_template","save_template","delete_template","create_approval","get_approval","cancel_approval","list_passkeys","get_authenticator","remove_authenticator","unlock_user","export_user","get_consent"],"distinctSurfaces":1},"endpointFacts":[{"id":"ep_495zfbfj4reu","url":"https://api.signops.dev/mcp","type":"mcp_streamable_http","factsCheckedAt":"2026-10-31T05:25:59.437Z","auth":{"observedAt":"2026-10-31T05:25:59.478Z","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-31T05:25:59.496Z","protocol":"TLSv1.3","chainValid":true,"chainError":null,"hostMatches":true,"subject":"signops.dev","issuer":{"commonName":"WE1","organization":"Google Trust Services"},"validFrom":"2026-10-20T01:56:18.000Z","validTo":"2027-01-18T02:56:15.000Z","daysToExpiry":77,"sanCount":3,"fingerprint256":"64:DE:F1:94:D9:85:96:6D:A0:62:26:AC:4C:B1:59:2B:38:D0:B1:CA:6C:BE:EE:12:90:C7:6B:EE:AF:46:AD:52"}}]},"verification":{"claimed":false,"claimedAt":null,"proofs":[]},"provenance":{"sources":[{"source":"mcp_registry","key":"dev.signops/signops","url":"https://registry.modelcontextprotocol.io/v0/servers/dev.signops%2Fsignops","firstSeenAt":"2026-10-29T01:19:47.231Z","fetchedAt":"2026-11-01T15:22:15.734Z","normalizedAt":"2026-11-01T15:22:15.734Z"}]},"firstSeenAt":"2026-10-29T01:19:47.231Z","updatedAt":"2026-11-01T21:33:57.441Z"}