{"$schema":"https://wellknown.network/schemas/agent-record-v1.json","schemaVersion":"1","id":"ag_4p5uk6hp3tvt","handle":"paw-pulse","url":"https://wellknown.network/agents/paw-pulse","links":{"self":"https://wellknown.network/agents/paw-pulse/record.json","html":"https://wellknown.network/agents/paw-pulse","markdown":"https://wellknown.network/agents/paw-pulse/record.md","api":"https://wellknown.network/api/v1/agents/paw-pulse","status":"https://wellknown.network/api/v1/agents/paw-pulse/status","claim":"https://wellknown.network/agents/paw-pulse/claim","claimApi":"https://wellknown.network/api/v1/claims","claimDescriptor":"https://wellknown.network/agents/paw-pulse/claim.json","badge":"https://wellknown.network/agents/paw-pulse/badge.svg","openapi":"https://wellknown.network/openapi.json","history":"https://wellknown.network/api/v1/agents/paw-pulse/history","tools":"https://wellknown.network/api/v1/agents/paw-pulse/tools"},"ard":{"identifier":"urn:air:pawpulse.dougalpaw.workers.dev:server:paw-pulse","type":"application/mcp-server-card+json"},"kind":"mcp_server","declared":{"name":"Paw Pulse","summary":"Heartbeat and tokens/sec monitoring for self-hosted LLM servers (Ollama etc.), with down alerts.","description":"Heartbeat and tokens/sec monitoring for self-hosted LLM servers (Ollama etc.), with down alerts.","publisher":{"name":"dev.workers.dougalpaw.pawpulse","url":null},"homepage":"https://pawpulse.dougalpaw.workers.dev","repository":"https://github.com/dougal-paw/pawpulse","version":"0.3.0","license":null,"protocols":["mcp"],"tags":[],"pricing":null,"endpoints":[{"url":"https://pawpulse.dougalpaw.workers.dev/mcp","type":"mcp_streamable_http","auth":null,"probeable":true}],"skills":null,"tools":null,"extra":{"updatedAt":"2026-10-17T09:03:07.540537Z","publishedAt":"2026-10-17T09:03:07.540537Z","registryName":"dev.workers.dougalpaw.pawpulse/pawpulse"},"attribution":{"kind":"mcp_registry","name":"mcp_registry","repoUrl":"mcp_registry","summary":"mcp_registry","version":"mcp_registry","description":"mcp_registry","homepageUrl":"mcp_registry","publisherName":"mcp_registry"}},"derived":{"capabilities":[{"slug":"dev.terminal","name":"Terminal & Shell","confidence":1,"provenance":"derived"},{"slug":"communication.notifications","name":"Notifications","confidence":0.9,"provenance":"derived"}],"categories":["communication","dev"],"language":"en"},"observed":{"status":"live","statusReason":"Responded 3h ago.","lastOkAt":"2026-10-24T05:30:21.669Z","lastProbedAt":"2026-10-24T05:30:21.669Z","statusComputedAt":"2026-10-24T05:32:33.664Z","reliability30d":{"probes":21,"successRate":1,"p50Ms":35,"basis":"service","measures":{"availability":"availability","latency":"response time","tools":"tool surface observed","summary":"Checks reached the service itself."},"checks":{"total":21,"ok":21,"authBoundaryOk":0,"serviceOk":21,"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-24T05:30:21.669Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":23,"error":null,"detail":{"tools":[{"name":"create_monitor","description":"Create a new anonymous Paw Pulse monitor. Returns ingest_token and manage_token exactly once — store them, they cannot be recovered."},{"name":"get_status","description":"Get the current status of a monitor. Private monitors require manage_token."},{"name":"list_heartbeats","description":"List recent heartbeats for a monitor (newest first). Private monitors require manage_token."},{"name":"update_monitor","description":"Change a monitor's name, grace period, slow threshold, webhook or visibility. Only the fields you pass change."},{"name":"delete_monitor","description":"Permanently delete a monitor and all its heartbeats. Cannot be undone."},{"name":"setup_instructions","description":"Shell commands to install the heartbeat script on the box being monitored and run it from cron. Pass the id and ingest_token from create_monitor."}],"toolCount":6,"toolsHash":"28600b1ab851a60af8618543f883dba4067237df0174f8f9d66f810f777c44e0","serverName":"pawpulse","capabilities":["tools","resources","prompts"],"serverVersion":"0.3.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-23T22:25:28.208Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":40,"error":null,"detail":{"tools":[{"name":"create_monitor","description":"Create a new anonymous Paw Pulse monitor. Returns ingest_token and manage_token exactly once — store them, they cannot be recovered."},{"name":"get_status","description":"Get the current status of a monitor. Private monitors require manage_token."},{"name":"list_heartbeats","description":"List recent heartbeats for a monitor (newest first). Private monitors require manage_token."},{"name":"update_monitor","description":"Change a monitor's name, grace period, slow threshold, webhook or visibility. Only the fields you pass change."},{"name":"delete_monitor","description":"Permanently delete a monitor and all its heartbeats. Cannot be undone."},{"name":"setup_instructions","description":"Shell commands to install the heartbeat script on the box being monitored and run it from cron. Pass the id and ingest_token from create_monitor."}],"toolCount":6,"toolsHash":"28600b1ab851a60af8618543f883dba4067237df0174f8f9d66f810f777c44e0","serverName":"pawpulse","capabilities":["tools","resources","prompts"],"serverVersion":"0.3.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-23T15:31:50.583Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":17,"error":null,"detail":{"tools":[{"name":"create_monitor","description":"Create a new anonymous Paw Pulse monitor. Returns ingest_token and manage_token exactly once — store them, they cannot be recovered."},{"name":"get_status","description":"Get the current status of a monitor. Private monitors require manage_token."},{"name":"list_heartbeats","description":"List recent heartbeats for a monitor (newest first). Private monitors require manage_token."},{"name":"update_monitor","description":"Change a monitor's name, grace period, slow threshold, webhook or visibility. Only the fields you pass change."},{"name":"delete_monitor","description":"Permanently delete a monitor and all its heartbeats. Cannot be undone."},{"name":"setup_instructions","description":"Shell commands to install the heartbeat script on the box being monitored and run it from cron. Pass the id and ingest_token from create_monitor."}],"toolCount":6,"toolsHash":"28600b1ab851a60af8618543f883dba4067237df0174f8f9d66f810f777c44e0","serverName":"pawpulse","capabilities":["tools","resources","prompts"],"serverVersion":"0.3.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-23T09:30:04.258Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":75,"error":null,"detail":{"tools":[{"name":"create_monitor","description":"Create a new anonymous Paw Pulse monitor. Returns ingest_token and manage_token exactly once — store them, they cannot be recovered."},{"name":"get_status","description":"Get the current status of a monitor. Private monitors require manage_token."},{"name":"list_heartbeats","description":"List recent heartbeats for a monitor (newest first). Private monitors require manage_token."},{"name":"update_monitor","description":"Change a monitor's name, grace period, slow threshold, webhook or visibility. Only the fields you pass change."},{"name":"delete_monitor","description":"Permanently delete a monitor and all its heartbeats. Cannot be undone."},{"name":"setup_instructions","description":"Shell commands to install the heartbeat script on the box being monitored and run it from cron. Pass the id and ingest_token from create_monitor."}],"toolCount":6,"toolsHash":"28600b1ab851a60af8618543f883dba4067237df0174f8f9d66f810f777c44e0","serverName":"pawpulse","capabilities":["tools","resources","prompts"],"serverVersion":"0.3.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-23T03:24:56.794Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":19,"error":null,"detail":{"tools":[{"name":"create_monitor","description":"Create a new anonymous Paw Pulse monitor. Returns ingest_token and manage_token exactly once — store them, they cannot be recovered."},{"name":"get_status","description":"Get the current status of a monitor. Private monitors require manage_token."},{"name":"list_heartbeats","description":"List recent heartbeats for a monitor (newest first). Private monitors require manage_token."},{"name":"update_monitor","description":"Change a monitor's name, grace period, slow threshold, webhook or visibility. Only the fields you pass change."},{"name":"delete_monitor","description":"Permanently delete a monitor and all its heartbeats. Cannot be undone."},{"name":"setup_instructions","description":"Shell commands to install the heartbeat script on the box being monitored and run it from cron. Pass the id and ingest_token from create_monitor."}],"toolCount":6,"toolsHash":"28600b1ab851a60af8618543f883dba4067237df0174f8f9d66f810f777c44e0","serverName":"pawpulse","capabilities":["tools","resources","prompts"],"serverVersion":"0.3.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-22T21:30:58.250Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":56,"error":null,"detail":{"tools":[{"name":"create_monitor","description":"Create a new anonymous Paw Pulse monitor. Returns ingest_token and manage_token exactly once — store them, they cannot be recovered."},{"name":"get_status","description":"Get the current status of a monitor. Private monitors require manage_token."},{"name":"list_heartbeats","description":"List recent heartbeats for a monitor (newest first). Private monitors require manage_token."},{"name":"update_monitor","description":"Change a monitor's name, grace period, slow threshold, webhook or visibility. Only the fields you pass change."},{"name":"delete_monitor","description":"Permanently delete a monitor and all its heartbeats. Cannot be undone."},{"name":"setup_instructions","description":"Shell commands to install the heartbeat script on the box being monitored and run it from cron. Pass the id and ingest_token from create_monitor."}],"toolCount":6,"toolsHash":"28600b1ab851a60af8618543f883dba4067237df0174f8f9d66f810f777c44e0","serverName":"pawpulse","capabilities":["tools","resources","prompts"],"serverVersion":"0.3.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-22T15:33:14.122Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":54,"error":null,"detail":{"tools":[{"name":"create_monitor","description":"Create a new anonymous Paw Pulse monitor. Returns ingest_token and manage_token exactly once — store them, they cannot be recovered."},{"name":"get_status","description":"Get the current status of a monitor. Private monitors require manage_token."},{"name":"list_heartbeats","description":"List recent heartbeats for a monitor (newest first). Private monitors require manage_token."},{"name":"update_monitor","description":"Change a monitor's name, grace period, slow threshold, webhook or visibility. Only the fields you pass change."},{"name":"delete_monitor","description":"Permanently delete a monitor and all its heartbeats. Cannot be undone."},{"name":"setup_instructions","description":"Shell commands to install the heartbeat script on the box being monitored and run it from cron. Pass the id and ingest_token from create_monitor."}],"toolCount":6,"toolsHash":"28600b1ab851a60af8618543f883dba4067237df0174f8f9d66f810f777c44e0","serverName":"pawpulse","capabilities":["tools","resources","prompts"],"serverVersion":"0.3.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-22T09:29:54.469Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":35,"error":null,"detail":{"tools":[{"name":"create_monitor","description":"Create a new anonymous Paw Pulse monitor. Returns ingest_token and manage_token exactly once — store them, they cannot be recovered."},{"name":"get_status","description":"Get the current status of a monitor. Private monitors require manage_token."},{"name":"list_heartbeats","description":"List recent heartbeats for a monitor (newest first). Private monitors require manage_token."},{"name":"update_monitor","description":"Change a monitor's name, grace period, slow threshold, webhook or visibility. Only the fields you pass change."},{"name":"delete_monitor","description":"Permanently delete a monitor and all its heartbeats. Cannot be undone."},{"name":"setup_instructions","description":"Shell commands to install the heartbeat script on the box being monitored and run it from cron. Pass the id and ingest_token from create_monitor."}],"toolCount":6,"toolsHash":"28600b1ab851a60af8618543f883dba4067237df0174f8f9d66f810f777c44e0","serverName":"pawpulse","capabilities":["tools","resources","prompts"],"serverVersion":"0.3.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-22T02:32:30.644Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":19,"error":null,"detail":{"tools":[{"name":"create_monitor","description":"Create a new anonymous Paw Pulse monitor. Returns ingest_token and manage_token exactly once — store them, they cannot be recovered."},{"name":"get_status","description":"Get the current status of a monitor. Private monitors require manage_token."},{"name":"list_heartbeats","description":"List recent heartbeats for a monitor (newest first). Private monitors require manage_token."},{"name":"update_monitor","description":"Change a monitor's name, grace period, slow threshold, webhook or visibility. Only the fields you pass change."},{"name":"delete_monitor","description":"Permanently delete a monitor and all its heartbeats. Cannot be undone."},{"name":"setup_instructions","description":"Shell commands to install the heartbeat script on the box being monitored and run it from cron. Pass the id and ingest_token from create_monitor."}],"toolCount":6,"toolsHash":"1101ed2807aea87b655f68cdbee13af5e4d6bdad0aa38e4636f07b971e77249b","serverName":"pawpulse","capabilities":["tools","resources","prompts"],"serverVersion":"0.3.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-21T20:30:30.097Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":56,"error":null,"detail":{"tools":[{"name":"create_monitor","description":"Create a new anonymous Paw Pulse monitor. Returns ingest_token and manage_token exactly once — store them, they cannot be recovered."},{"name":"get_status","description":"Get the current status of a monitor. Private monitors require manage_token."},{"name":"list_heartbeats","description":"List recent heartbeats for a monitor (newest first). Private monitors require manage_token."},{"name":"update_monitor","description":"Change a monitor's name, grace period, slow threshold, webhook or visibility. Only the fields you pass change."},{"name":"delete_monitor","description":"Permanently delete a monitor and all its heartbeats. Cannot be undone."},{"name":"setup_instructions","description":"Shell commands to install the heartbeat script on the box being monitored and run it from cron. Pass the id and ingest_token from create_monitor."}],"toolCount":6,"toolsHash":"1101ed2807aea87b655f68cdbee13af5e4d6bdad0aa38e4636f07b971e77249b","serverName":"pawpulse","capabilities":["tools","resources","prompts"],"serverVersion":"0.3.0","protocolVersion":"2025-06-18"}}],"tools":[{"name":"create_monitor","description":"Create a new anonymous Paw Pulse monitor. Returns ingest_token and manage_token exactly once — store them, they cannot be recovered."},{"name":"get_status","description":"Get the current status of a monitor. Private monitors require manage_token."},{"name":"list_heartbeats","description":"List recent heartbeats for a monitor (newest first). Private monitors require manage_token."},{"name":"update_monitor","description":"Change a monitor's name, grace period, slow threshold, webhook or visibility. Only the fields you pass change."},{"name":"delete_monitor","description":"Permanently delete a monitor and all its heartbeats. Cannot be undone."},{"name":"setup_instructions","description":"Shell commands to install the heartbeat script on the box being monitored and run it from cron. Pass the id and ingest_token from create_monitor."}],"package":null,"toolSurface":{"id":"ts_bngp744jw6e6","endpointId":"ep_ht82yfppq2jp","hash":"28600b1ab851a60af8618543f883dba4067237df0174f8f9d66f810f777c44e0","toolCount":6,"serverName":"pawpulse","serverVersion":"0.3.0","protocolVersion":"2025-06-18","firstSeenAt":"2026-10-22T09:29:54.475Z","lastSeenAt":"2026-10-24T05:30:21.676Z","observations":8,"toolNames":["create_monitor","get_status","list_heartbeats","update_monitor","delete_monitor","setup_instructions"],"distinctSurfaces":2},"endpointFacts":[{"id":"ep_ht82yfppq2jp","url":"https://pawpulse.dougalpaw.workers.dev/mcp","type":"mcp_streamable_http","factsCheckedAt":"2026-10-20T06:24:46.679Z","auth":{"observedAt":"2026-10-20T06:24:46.706Z","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-20T06:24:46.721Z","protocol":"TLSv1.3","chainValid":true,"chainError":null,"hostMatches":true,"subject":"dougalpaw.workers.dev","issuer":{"commonName":"YE1","organization":"Let's Encrypt"},"validFrom":"2026-10-15T15:25:47.000Z","validTo":"2027-01-13T15:25:46.000Z","daysToExpiry":81,"sanCount":2,"fingerprint256":"BC:B6:BE:1E:C2:04:84:84:45:5C:6B:88:01:53:EF:70:5F:F0:2E:CD:C9:73:89:53:2A:03:00:9C:C5:2A:E6:B7"}}]},"verification":{"claimed":false,"claimedAt":null,"proofs":[]},"provenance":{"sources":[{"source":"mcp_registry","key":"dev.workers.dougalpaw.pawpulse/pawpulse","url":"https://registry.modelcontextprotocol.io/v0/servers/dev.workers.dougalpaw.pawpulse%2Fpawpulse","firstSeenAt":"2026-10-18T15:23:07.054Z","fetchedAt":"2026-10-18T15:23:07.054Z","normalizedAt":"2026-10-18T15:23:07.054Z"}]},"firstSeenAt":"2026-10-18T15:23:07.054Z","updatedAt":"2026-10-24T05:34:25.337Z"}