{"$schema":"https://wellknown.network/schemas/agent-record-v1.json","schemaVersion":"1","id":"ag_umz777nec4sc","handle":"hookpulse","url":"https://wellknown.network/agents/hookpulse","links":{"self":"https://wellknown.network/agents/hookpulse/record.json","html":"https://wellknown.network/agents/hookpulse","markdown":"https://wellknown.network/agents/hookpulse/record.md","api":"https://wellknown.network/api/v1/agents/hookpulse","status":"https://wellknown.network/api/v1/agents/hookpulse/status","claim":"https://wellknown.network/agents/hookpulse/claim","claimApi":"https://wellknown.network/api/v1/claims","claimDescriptor":"https://wellknown.network/agents/hookpulse/claim.json","badge":"https://wellknown.network/agents/hookpulse/badge.svg","openapi":"https://wellknown.network/openapi.json","history":"https://wellknown.network/api/v1/agents/hookpulse/history","tools":"https://wellknown.network/api/v1/agents/hookpulse/tools"},"ard":{"identifier":"urn:air:hookpulse.net:server:hookpulse","type":"application/mcp-server-card+json"},"kind":"mcp_server","declared":{"name":"hookpulse","summary":"Dead-man switch for cron and webhooks: ingest URL, miss detection, alerts and a status feed.","description":"Dead-man switch for cron and webhooks: ingest URL, miss detection, alerts and a status feed.","publisher":{"name":"net.hookpulse","url":null},"homepage":"https://hookpulse.net","repository":null,"version":"1.0.0","license":null,"protocols":["mcp"],"tags":[],"pricing":null,"endpoints":[{"url":"https://hookpulse.net/mcp","type":"mcp_streamable_http","auth":null,"probeable":true}],"skills":null,"tools":null,"extra":{"updatedAt":"2026-09-05T01:51:41.712927Z","publishedAt":"2026-09-05T01:51:41.712927Z","registryName":"net.hookpulse/hookpulse"},"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":"data.news","name":"News & Feeds","confidence":1,"provenance":"derived"},{"slug":"dev.terminal","name":"Terminal & Shell","confidence":1,"provenance":"derived"},{"slug":"communication.notifications","name":"Notifications","confidence":1,"provenance":"derived"},{"slug":"analytics.reporting","name":"Reporting & Dashboards","confidence":1,"provenance":"derived"},{"slug":"automation.scheduling","name":"Scheduling & Cron","confidence":0.833,"provenance":"derived"},{"slug":"content.marketing","name":"Marketing","confidence":0.569,"provenance":"derived"},{"slug":"dev.docs-lookup","name":"Documentation Lookup","confidence":0.54,"provenance":"derived"},{"slug":"ai.prompting","name":"Prompt Management","confidence":0.525,"provenance":"derived"}],"categories":["ai","analytics","automation","communication","content","data","dev"],"language":"en"},"observed":{"status":"live","statusReason":"Responded 35m ago.","lastOkAt":"2026-10-10T04:32:50.534Z","lastProbedAt":"2026-10-10T04:32:50.534Z","statusComputedAt":"2026-10-10T04:33:40.715Z","reliability30d":{"probes":108,"successRate":0.9907,"p50Ms":179,"basis":"service","measures":{"availability":"availability","latency":"response time","tools":"tool surface observed","summary":"Checks reached the service itself."},"checks":{"total":107,"ok":106,"authBoundaryOk":0,"serviceOk":106,"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-10T04:32:50.534Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":610,"error":null,"detail":{"tools":[{"name":"list_environments","description":"Saved environments owned by the current account or guest; empty without a session."},{"name":"create_environment","description":"Register a device UUID before discovery and collector selection. Registers one device (maximum 25 per owner), creating a guest if needed. The UUID is the one-ho"},{"name":"get_environment","description":"Read the detected environment and compatible measurements."},{"name":"create_device_input","description":"Create or rotate an authenticated collector channel for this device. Ownership is checked before the app asks the input central. The server chooses the channel "},{"name":"list_device_inputs","description":"List this device's collector channels, their state and their live numbers."},{"name":"get_device_input_setup","description":"The saved setup of one collector channel: the configuration in use, its files and steps. Returns the setup generated last for this channel — the one whose crede"},{"name":"list_device_input_history","description":"The batches this collector sent, newest first — filtered and paginated on the server. Every batch the input central received for this channel, as it arrived: wh"},{"name":"get_device_input_batch","description":"One received batch, decoded: its series with labels and values, or its NCPA checks. Remote Write (1.0 and 2.0), OTLP (protobuf or JSON) and NRDP become the same"},{"name":"delete_device_input","description":"Revokes and removes one collector channel from a device. The input central removes only a channel of the same owner. This stops new authenticated input and remo"},{"name":"set_device_input_active","description":"Pauses or resumes one collector channel. Pausing keeps the channel, its credential and its configuration: batches the collector sends while paused are accepted "},{"name":"list_input_fleet","description":"Every collector channel of the caller, with state and live numbers, in one response. One call for the whole fleet — one query to the time-series store for all c"},{"name":"report_environment","description":"Preview or save the allowlisted discovery report for one device. Send terminal and saidas (step id to pasted output), initially with conferir:true. Preview retu"},{"name":"list_collections","description":"Lists your measurements with commands adapted to each saved device environment. Two views of the same thing: `coletas` is one entry per measurement, `equipament"},{"name":"create_collection","description":"Adds compatible measurements to a previously detected device. First create /api/ambientes and submit its environment report. Reference that ambiente_id here; it"},{"name":"get_collection_series","description":"The latest readings of one device, for the screen that draws it. Authorised by YOUR session, never by the symbol in the crontab. A device that is not yours answ"},{"name":"update_collection","description":"Renames one measurement, or stops and resumes reading it. The id never changes: it is the write symbol already sitting in a crontab, and renaming on a screen mu"},{"name":"delete_collection","description":"Removes one measurement and frees that slot on the device. What disappears is the OWNERSHIP: your list, the authority to read that series, and the unique slot t"},{"name":"update_environment","description":"Renames a device, and its measurements along with it. One machine has one name. The measurements carry a copy of it, so renaming here renames them too — leaving"},{"name":"delete_environment","description":"Removes a device and every measurement on it, in one call. One call, not one per measurement — the same reason `GET /api/coletas/serie` exists. What goes away i"},{"name":"api_index","description":"Full index of the HookPulse API."},{"name":"health","description":"Liveness."},{"name":"create_guest","description":"Creates a guest token hp_… Keep the token: without it there is no way back to the monitors, unless you have already tied them to an e-mail."},{"name":"list_endpoints","description":"Lists the guest's/session's endpoints."},{"name":"create_endpoint","description":"Create a monitor for a routine. Use cron, tz and grace_sec for a schedule, or interval_sec for a fixed check-in interval. Set max_duration_sec to detect an open"},{"name":"import_crontab","description":"Reads a crontab and proposes one monitor per scheduled line. Without apply=1 nothing is written; the proposal says what was ignored and why. Passwords in the co"},{"name":"get_endpoint","description":"Status of one endpoint (use the endpoint token if you have it). The monitor token only reads: it lets you put the state on a third-party dashboard without handi"},{"name":"delete_endpoint","description":"Removes the owner's endpoint."},{"name":"list_events","description":"Latest ingest pings."},{"name":"ping_ingest","description":"Simulates the cron: GET on /in/:id. No credential on purpose — the caller is a cron, and the ID is already the secret. It costs nothing and there is no quota pe"},{"name":"signal_start","description":"Says the run STARTED. Does not clear the dead-man clock: a routine that starts and hangs still becomes a miss. The next success records the duration. `start` is"},{"name":"signal_fail","description":"Record a failed run. The next five-minute check sends the alert with reason fail. The monitor's alert_repeat_sec controls repeated alerts; the default is 24 hou"},{"name":"signal_exit_code","description":"The shell exit status: 0 behaves like a ping, 1-255 record the code as a failure. `curl -fsS $ORIGIN/in/ID/$?` at the end of a script is the whole integration. "},{"name":"ingest_key","description":"Returns (minting the first time) the key for /in/<key>/<slug>, where a ping creates its own monitor inside the free tier. Instruments a whole fleet with no setu"},{"name":"ingest_key_rotate","description":"Rotates the ingest key; the previous one stops creating monitors. Existing ones keep working. Monitors already created keep working — rotating only revokes the "},{"name":"ping_slug","description":"Create a monitor on its first check-in. The same slug uses the same monitor. Service and billing limits apply. A rejected creation writes no monitor or event. T"},{"name":"billing","description":"Read current free allowances, options with billing off, prices and the account's 90-day period. E-mail alerts cost $0.10 once per additional monitor, even with "},{"name":"status_feed_url","description":"Public URL (JSON and RSS) with the status of all the owner's endpoints. The feed token only reads status: it does not create, change or delete. Whoever has the "},{"name":"status_feed_rotate","description":"Rotates the status feed token; the previous URL stops working."},{"name":"list_templates","description":"Ingest snippets and the JSON HookPulse POSTs on a miss. It exists so nobody guesses the alert format: `miss_json` and `recovery_json` here are the same bodies t"},{"name":"contact","description":"Write to the people behind the product: a question, or a sponsorship/partnership/advertising proposal. Free, no captcha and no payment; one message every 10 s p"},{"name":"pricing","description":"Current public prices and free allowances; no charge."}],"toolCount":41,"toolsHash":"63ab6d80dfb0933a94b40f3d81436d4723d86251532aafe59d52ff2c42119cf8","serverName":"HookPulse","capabilities":["tools"],"serverVersion":"73acb116","protocolVersion":"2025-06-18"}},{"at":"2026-10-09T22:27:57.602Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":636,"error":null,"detail":{"tools":[{"name":"list_environments","description":"Saved environments owned by the current account or guest; empty without a session."},{"name":"create_environment","description":"Register a device UUID before discovery and collector selection. Registers one device (maximum 25 per owner), creating a guest if needed. The UUID is the one-ho"},{"name":"get_environment","description":"Read the detected environment and compatible measurements."},{"name":"create_device_input","description":"Create or rotate an authenticated collector channel for this device. Ownership is checked before the app asks the input central. The server chooses the channel "},{"name":"list_device_inputs","description":"List this device's collector channels, their state and their live numbers."},{"name":"get_device_input_setup","description":"The saved setup of one collector channel: the configuration in use, its files and steps. Returns the setup generated last for this channel — the one whose crede"},{"name":"list_device_input_history","description":"The batches this collector sent, newest first — filtered and paginated on the server. Every batch the input central received for this channel, as it arrived: wh"},{"name":"get_device_input_batch","description":"One received batch, decoded: its series with labels and values, or its NCPA checks. Remote Write (1.0 and 2.0), OTLP (protobuf or JSON) and NRDP become the same"},{"name":"delete_device_input","description":"Revokes and removes one collector channel from a device. The input central removes only a channel of the same owner. This stops new authenticated input and remo"},{"name":"set_device_input_active","description":"Pauses or resumes one collector channel. Pausing keeps the channel, its credential and its configuration: batches the collector sends while paused are accepted "},{"name":"list_input_fleet","description":"Every collector channel of the caller, with state and live numbers, in one response. One call for the whole fleet — one query to the time-series store for all c"},{"name":"report_environment","description":"Preview or save the allowlisted discovery report for one device. Send terminal and saidas (step id to pasted output), initially with conferir:true. Preview retu"},{"name":"list_collections","description":"Lists your measurements with commands adapted to each saved device environment. Two views of the same thing: `coletas` is one entry per measurement, `equipament"},{"name":"create_collection","description":"Adds compatible measurements to a previously detected device. First create /api/ambientes and submit its environment report. Reference that ambiente_id here; it"},{"name":"get_collection_series","description":"The latest readings of one device, for the screen that draws it. Authorised by YOUR session, never by the symbol in the crontab. A device that is not yours answ"},{"name":"update_collection","description":"Renames one measurement, or stops and resumes reading it. The id never changes: it is the write symbol already sitting in a crontab, and renaming on a screen mu"},{"name":"delete_collection","description":"Removes one measurement and frees that slot on the device. What disappears is the OWNERSHIP: your list, the authority to read that series, and the unique slot t"},{"name":"update_environment","description":"Renames a device, and its measurements along with it. One machine has one name. The measurements carry a copy of it, so renaming here renames them too — leaving"},{"name":"delete_environment","description":"Removes a device and every measurement on it, in one call. One call, not one per measurement — the same reason `GET /api/coletas/serie` exists. What goes away i"},{"name":"api_index","description":"Full index of the HookPulse API."},{"name":"health","description":"Liveness."},{"name":"create_guest","description":"Creates a guest token hp_… Keep the token: without it there is no way back to the monitors, unless you have already tied them to an e-mail."},{"name":"list_endpoints","description":"Lists the guest's/session's endpoints."},{"name":"create_endpoint","description":"Create a monitor for a routine. Use cron, tz and grace_sec for a schedule, or interval_sec for a fixed check-in interval. Set max_duration_sec to detect an open"},{"name":"import_crontab","description":"Reads a crontab and proposes one monitor per scheduled line. Without apply=1 nothing is written; the proposal says what was ignored and why. Passwords in the co"},{"name":"get_endpoint","description":"Status of one endpoint (use the endpoint token if you have it). The monitor token only reads: it lets you put the state on a third-party dashboard without handi"},{"name":"delete_endpoint","description":"Removes the owner's endpoint."},{"name":"list_events","description":"Latest ingest pings."},{"name":"ping_ingest","description":"Simulates the cron: GET on /in/:id. No credential on purpose — the caller is a cron, and the ID is already the secret. It costs nothing and there is no quota pe"},{"name":"signal_start","description":"Says the run STARTED. Does not clear the dead-man clock: a routine that starts and hangs still becomes a miss. The next success records the duration. `start` is"},{"name":"signal_fail","description":"Record a failed run. The next five-minute check sends the alert with reason fail. The monitor's alert_repeat_sec controls repeated alerts; the default is 24 hou"},{"name":"signal_exit_code","description":"The shell exit status: 0 behaves like a ping, 1-255 record the code as a failure. `curl -fsS $ORIGIN/in/ID/$?` at the end of a script is the whole integration. "},{"name":"ingest_key","description":"Returns (minting the first time) the key for /in/<key>/<slug>, where a ping creates its own monitor inside the free tier. Instruments a whole fleet with no setu"},{"name":"ingest_key_rotate","description":"Rotates the ingest key; the previous one stops creating monitors. Existing ones keep working. Monitors already created keep working — rotating only revokes the "},{"name":"ping_slug","description":"Create a monitor on its first check-in. The same slug uses the same monitor. Service and billing limits apply. A rejected creation writes no monitor or event. T"},{"name":"billing","description":"Read current free allowances, options with billing off, prices and the account's 90-day period. E-mail alerts cost $0.10 once per additional monitor, even with "},{"name":"status_feed_url","description":"Public URL (JSON and RSS) with the status of all the owner's endpoints. The feed token only reads status: it does not create, change or delete. Whoever has the "},{"name":"status_feed_rotate","description":"Rotates the status feed token; the previous URL stops working."},{"name":"list_templates","description":"Ingest snippets and the JSON HookPulse POSTs on a miss. It exists so nobody guesses the alert format: `miss_json` and `recovery_json` here are the same bodies t"},{"name":"contact","description":"Write to the people behind the product: a question, or a sponsorship/partnership/advertising proposal. Free, no captcha and no payment; one message every 10 s p"},{"name":"pricing","description":"Current public prices and free allowances; no charge."}],"toolCount":41,"toolsHash":"63ab6d80dfb0933a94b40f3d81436d4723d86251532aafe59d52ff2c42119cf8","serverName":"HookPulse","capabilities":["tools"],"serverVersion":"c0655f46","protocolVersion":"2025-06-18"}},{"at":"2026-10-09T16:32:03.533Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":209,"error":null,"detail":{"tools":[{"name":"list_environments","description":"Saved environments owned by the current account or guest; empty without a session."},{"name":"create_environment","description":"Register a device UUID before discovery and collector selection. Registers one device (maximum 25 per owner), creating a guest if needed. The UUID is the one-ho"},{"name":"get_environment","description":"Read the detected environment and compatible measurements."},{"name":"create_device_input","description":"Create or rotate an authenticated collector channel for this device. Ownership is checked before the app asks the input central. The server chooses the channel "},{"name":"list_device_inputs","description":"List this device's collector channels, their state and their live numbers."},{"name":"get_device_input_setup","description":"The saved setup of one collector channel: the configuration in use, its files and steps. Returns the setup generated last for this channel — the one whose crede"},{"name":"list_device_input_history","description":"The batches this collector sent, newest first — filtered and paginated on the server. Every batch the input central received for this channel, as it arrived: wh"},{"name":"get_device_input_batch","description":"One received batch, decoded: its series with labels and values, or its NCPA checks. Remote Write (1.0 and 2.0), OTLP (protobuf or JSON) and NRDP become the same"},{"name":"delete_device_input","description":"Revokes and removes one collector channel from a device. The input central removes only a channel of the same owner. This stops new authenticated input and remo"},{"name":"set_device_input_active","description":"Pauses or resumes one collector channel. Pausing keeps the channel, its credential and its configuration: batches the collector sends while paused are accepted "},{"name":"list_input_fleet","description":"Every collector channel of the caller, with state and live numbers, in one response. One call for the whole fleet — one query to the time-series store for all c"},{"name":"report_environment","description":"Preview or save the allowlisted discovery report for one device. Send terminal and saidas (step id to pasted output), initially with conferir:true. Preview retu"},{"name":"list_collections","description":"Lists your measurements with commands adapted to each saved device environment. Two views of the same thing: `coletas` is one entry per measurement, `equipament"},{"name":"create_collection","description":"Adds compatible measurements to a previously detected device. First create /api/ambientes and submit its environment report. Reference that ambiente_id here; it"},{"name":"get_collection_series","description":"The latest readings of one device, for the screen that draws it. Authorised by YOUR session, never by the symbol in the crontab. A device that is not yours answ"},{"name":"update_collection","description":"Renames one measurement, or stops and resumes reading it. The id never changes: it is the write symbol already sitting in a crontab, and renaming on a screen mu"},{"name":"delete_collection","description":"Removes one measurement and frees that slot on the device. What disappears is the OWNERSHIP: your list, the authority to read that series, and the unique slot t"},{"name":"update_environment","description":"Renames a device, and its measurements along with it. One machine has one name. The measurements carry a copy of it, so renaming here renames them too — leaving"},{"name":"delete_environment","description":"Removes a device and every measurement on it, in one call. One call, not one per measurement — the same reason `GET /api/coletas/serie` exists. What goes away i"},{"name":"api_index","description":"Full index of the HookPulse API."},{"name":"health","description":"Liveness."},{"name":"create_guest","description":"Creates a guest token hp_… Keep the token: without it there is no way back to the monitors, unless you have already tied them to an e-mail."},{"name":"list_endpoints","description":"Lists the guest's/session's endpoints."},{"name":"create_endpoint","description":"Create a monitor for a routine. Use cron, tz and grace_sec for a schedule, or interval_sec for a fixed check-in interval. Set max_duration_sec to detect an open"},{"name":"import_crontab","description":"Reads a crontab and proposes one monitor per scheduled line. Without apply=1 nothing is written; the proposal says what was ignored and why. Passwords in the co"},{"name":"get_endpoint","description":"Status of one endpoint (use the endpoint token if you have it). The monitor token only reads: it lets you put the state on a third-party dashboard without handi"},{"name":"delete_endpoint","description":"Removes the owner's endpoint."},{"name":"list_events","description":"Latest ingest pings."},{"name":"ping_ingest","description":"Simulates the cron: GET on /in/:id. No credential on purpose — the caller is a cron, and the ID is already the secret. It costs nothing and there is no quota pe"},{"name":"signal_start","description":"Says the run STARTED. Does not clear the dead-man clock: a routine that starts and hangs still becomes a miss. The next success records the duration. `start` is"},{"name":"signal_fail","description":"Record a failed run. The next five-minute check sends the alert with reason fail. The monitor's alert_repeat_sec controls repeated alerts; the default is 24 hou"},{"name":"signal_exit_code","description":"The shell exit status: 0 behaves like a ping, 1-255 record the code as a failure. `curl -fsS $ORIGIN/in/ID/$?` at the end of a script is the whole integration. "},{"name":"ingest_key","description":"Returns (minting the first time) the key for /in/<key>/<slug>, where a ping creates its own monitor inside the free tier. Instruments a whole fleet with no setu"},{"name":"ingest_key_rotate","description":"Rotates the ingest key; the previous one stops creating monitors. Existing ones keep working. Monitors already created keep working — rotating only revokes the "},{"name":"ping_slug","description":"Create a monitor on its first check-in. The same slug uses the same monitor. Service and billing limits apply. A rejected creation writes no monitor or event. T"},{"name":"billing","description":"Read current free allowances, options with billing off, prices and the account's 90-day period. E-mail alerts cost $0.10 once per additional monitor, even with "},{"name":"status_feed_url","description":"Public URL (JSON and RSS) with the status of all the owner's endpoints. The feed token only reads status: it does not create, change or delete. Whoever has the "},{"name":"status_feed_rotate","description":"Rotates the status feed token; the previous URL stops working."},{"name":"list_templates","description":"Ingest snippets and the JSON HookPulse POSTs on a miss. It exists so nobody guesses the alert format: `miss_json` and `recovery_json` here are the same bodies t"},{"name":"contact","description":"Write to the people behind the product: a question, or a sponsorship/partnership/advertising proposal. Free, no captcha and no payment; one message every 10 s p"},{"name":"pricing","description":"Current public prices and free allowances; no charge."}],"toolCount":41,"toolsHash":"63ab6d80dfb0933a94b40f3d81436d4723d86251532aafe59d52ff2c42119cf8","serverName":"HookPulse","capabilities":["tools"],"serverVersion":"6964e00a","protocolVersion":"2025-06-18"}},{"at":"2026-10-09T09:27:15.209Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":246,"error":null,"detail":{"tools":[{"name":"list_environments","description":"Saved environments owned by the current account or guest; empty without a session."},{"name":"create_environment","description":"Register a device UUID before discovery and collector selection. Registers one device (maximum 25 per owner), creating a guest if needed. The UUID is the one-ho"},{"name":"get_environment","description":"Read the detected environment and compatible measurements."},{"name":"create_device_input","description":"Create or rotate an authenticated collector channel for this device. Ownership is checked before the app asks the input central. The server chooses the channel "},{"name":"list_device_inputs","description":"List this device's collector channels, their state and their live numbers."},{"name":"get_device_input_setup","description":"The saved setup of one collector channel: the configuration in use, its files and steps. Returns the setup generated last for this channel — the one whose crede"},{"name":"list_device_input_history","description":"The batches this collector sent, newest first — filtered and paginated on the server. Every batch the input central received for this channel, as it arrived: wh"},{"name":"get_device_input_batch","description":"One received batch, decoded: its series with labels and values, or its NCPA checks. Remote Write (1.0 and 2.0), OTLP (protobuf or JSON) and NRDP become the same"},{"name":"delete_device_input","description":"Revokes and removes one collector channel from a device. The input central removes only a channel of the same owner. This stops new authenticated input and remo"},{"name":"set_device_input_active","description":"Pauses or resumes one collector channel. Pausing keeps the channel, its credential and its configuration: batches the collector sends while paused are accepted "},{"name":"list_input_fleet","description":"Every collector channel of the caller, with state and live numbers, in one response. One call for the whole fleet — one query to the time-series store for all c"},{"name":"report_environment","description":"Preview or save the allowlisted discovery report for one device. Send terminal and saidas (step id to pasted output), initially with conferir:true. Preview retu"},{"name":"list_collections","description":"Lists your measurements with commands adapted to each saved device environment. Two views of the same thing: `coletas` is one entry per measurement, `equipament"},{"name":"create_collection","description":"Adds compatible measurements to a previously detected device. First create /api/ambientes and submit its environment report. Reference that ambiente_id here; it"},{"name":"get_collection_series","description":"The latest readings of one device, for the screen that draws it. Authorised by YOUR session, never by the symbol in the crontab. A device that is not yours answ"},{"name":"update_collection","description":"Renames one measurement, or stops and resumes reading it. The id never changes: it is the write symbol already sitting in a crontab, and renaming on a screen mu"},{"name":"delete_collection","description":"Removes one measurement and frees that slot on the device. What disappears is the OWNERSHIP: your list, the authority to read that series, and the unique slot t"},{"name":"update_environment","description":"Renames a device, and its measurements along with it. One machine has one name. The measurements carry a copy of it, so renaming here renames them too — leaving"},{"name":"delete_environment","description":"Removes a device and every measurement on it, in one call. One call, not one per measurement — the same reason `GET /api/coletas/serie` exists. What goes away i"},{"name":"api_index","description":"Full index of the HookPulse API."},{"name":"health","description":"Liveness."},{"name":"create_guest","description":"Creates a guest token hp_… Keep the token: without it there is no way back to the monitors, unless you have already tied them to an e-mail."},{"name":"list_endpoints","description":"Lists the guest's/session's endpoints."},{"name":"create_endpoint","description":"Create a monitor for a routine. Use cron, tz and grace_sec for a schedule, or interval_sec for a fixed check-in interval. Set max_duration_sec to detect an open"},{"name":"import_crontab","description":"Reads a crontab and proposes one monitor per scheduled line. Without apply=1 nothing is written; the proposal says what was ignored and why. Passwords in the co"},{"name":"get_endpoint","description":"Status of one endpoint (use the endpoint token if you have it). The monitor token only reads: it lets you put the state on a third-party dashboard without handi"},{"name":"delete_endpoint","description":"Removes the owner's endpoint."},{"name":"list_events","description":"Latest ingest pings."},{"name":"ping_ingest","description":"Simulates the cron: GET on /in/:id. No credential on purpose — the caller is a cron, and the ID is already the secret. It costs nothing and there is no quota pe"},{"name":"signal_start","description":"Says the run STARTED. Does not clear the dead-man clock: a routine that starts and hangs still becomes a miss. The next success records the duration. `start` is"},{"name":"signal_fail","description":"Record a failed run. The next five-minute check sends the alert with reason fail. The monitor's alert_repeat_sec controls repeated alerts; the default is 24 hou"},{"name":"signal_exit_code","description":"The shell exit status: 0 behaves like a ping, 1-255 record the code as a failure. `curl -fsS $ORIGIN/in/ID/$?` at the end of a script is the whole integration. "},{"name":"ingest_key","description":"Returns (minting the first time) the key for /in/<key>/<slug>, where a ping creates its own monitor inside the free tier. Instruments a whole fleet with no setu"},{"name":"ingest_key_rotate","description":"Rotates the ingest key; the previous one stops creating monitors. Existing ones keep working. Monitors already created keep working — rotating only revokes the "},{"name":"ping_slug","description":"Create a monitor on its first check-in. The same slug uses the same monitor. Service and billing limits apply. A rejected creation writes no monitor or event. T"},{"name":"billing","description":"Read current free allowances, options with billing off, prices and the account's 90-day period. E-mail alerts cost $0.10 once per additional monitor, even with "},{"name":"status_feed_url","description":"Public URL (JSON and RSS) with the status of all the owner's endpoints. The feed token only reads status: it does not create, change or delete. Whoever has the "},{"name":"status_feed_rotate","description":"Rotates the status feed token; the previous URL stops working."},{"name":"list_templates","description":"Ingest snippets and the JSON HookPulse POSTs on a miss. It exists so nobody guesses the alert format: `miss_json` and `recovery_json` here are the same bodies t"},{"name":"contact","description":"Write to the people behind the product: a question, or a sponsorship/partnership/advertising proposal. Free, no captcha and no payment; one message every 10 s p"},{"name":"pricing","description":"Current public prices and free allowances; no charge."}],"toolCount":41,"toolsHash":"63ab6d80dfb0933a94b40f3d81436d4723d86251532aafe59d52ff2c42119cf8","serverName":"HookPulse","capabilities":["tools"],"serverVersion":"f804faa4","protocolVersion":"2025-06-18"}},{"at":"2026-10-09T02:27:00.303Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":225,"error":null,"detail":{"tools":[{"name":"list_environments","description":"Saved environments owned by the current account or guest; empty without a session."},{"name":"create_environment","description":"Register a device UUID before discovery and collector selection. Registers one device (maximum 25 per owner), creating a guest if needed. The UUID is the one-ho"},{"name":"get_environment","description":"Read the detected environment and compatible measurements."},{"name":"create_device_input","description":"Create or rotate an authenticated collector channel for this device. Ownership is checked before the app asks the input central. The server chooses the channel "},{"name":"list_device_inputs","description":"List this device's collector channels, their state and their live numbers."},{"name":"get_device_input_setup","description":"The saved setup of one collector channel: the configuration in use, its files and steps. Returns the setup generated last for this channel — the one whose crede"},{"name":"list_device_input_history","description":"The batches this collector sent, newest first — filtered and paginated on the server. Every batch the input central received for this channel, as it arrived: wh"},{"name":"get_device_input_batch","description":"One received batch, decoded: its series with labels and values, or its NCPA checks. Remote Write (1.0 and 2.0), OTLP (protobuf or JSON) and NRDP become the same"},{"name":"delete_device_input","description":"Revokes and removes one collector channel from a device. The input central removes only a channel of the same owner. This stops new authenticated input and remo"},{"name":"set_device_input_active","description":"Pauses or resumes one collector channel. Pausing keeps the channel, its credential and its configuration: batches the collector sends while paused are accepted "},{"name":"list_input_fleet","description":"Every collector channel of the caller, with state and live numbers, in one response. One call for the whole fleet — one query to the time-series store for all c"},{"name":"report_environment","description":"Preview or save the allowlisted discovery report for one device. Send terminal and saidas (step id to pasted output), initially with conferir:true. Preview retu"},{"name":"list_collections","description":"Lists your measurements with commands adapted to each saved device environment. Two views of the same thing: `coletas` is one entry per measurement, `equipament"},{"name":"create_collection","description":"Adds compatible measurements to a previously detected device. First create /api/ambientes and submit its environment report. Reference that ambiente_id here; it"},{"name":"get_collection_series","description":"The latest readings of one device, for the screen that draws it. Authorised by YOUR session, never by the symbol in the crontab. A device that is not yours answ"},{"name":"update_collection","description":"Renames one measurement, or stops and resumes reading it. The id never changes: it is the write symbol already sitting in a crontab, and renaming on a screen mu"},{"name":"delete_collection","description":"Removes one measurement and frees that slot on the device. What disappears is the OWNERSHIP: your list, the authority to read that series, and the unique slot t"},{"name":"update_environment","description":"Renames a device, and its measurements along with it. One machine has one name. The measurements carry a copy of it, so renaming here renames them too — leaving"},{"name":"delete_environment","description":"Removes a device and every measurement on it, in one call. One call, not one per measurement — the same reason `GET /api/coletas/serie` exists. What goes away i"},{"name":"api_index","description":"Full index of the HookPulse API."},{"name":"health","description":"Liveness."},{"name":"create_guest","description":"Creates a guest token hp_… Keep the token: without it there is no way back to the monitors, unless you have already tied them to an e-mail."},{"name":"list_endpoints","description":"Lists the guest's/session's endpoints."},{"name":"create_endpoint","description":"Create a monitor for a routine. Use cron, tz and grace_sec for a schedule, or interval_sec for a fixed check-in interval. Set max_duration_sec to detect an open"},{"name":"import_crontab","description":"Reads a crontab and proposes one monitor per scheduled line. Without apply=1 nothing is written; the proposal says what was ignored and why. Passwords in the co"},{"name":"get_endpoint","description":"Status of one endpoint (use the endpoint token if you have it). The monitor token only reads: it lets you put the state on a third-party dashboard without handi"},{"name":"delete_endpoint","description":"Removes the owner's endpoint."},{"name":"list_events","description":"Latest ingest pings."},{"name":"ping_ingest","description":"Simulates the cron: GET on /in/:id. No credential on purpose — the caller is a cron, and the ID is already the secret. It costs nothing and there is no quota pe"},{"name":"signal_start","description":"Says the run STARTED. Does not clear the dead-man clock: a routine that starts and hangs still becomes a miss. The next success records the duration. `start` is"},{"name":"signal_fail","description":"Record a failed run. The next five-minute check sends the alert with reason fail. The monitor's alert_repeat_sec controls repeated alerts; the default is 24 hou"},{"name":"signal_exit_code","description":"The shell exit status: 0 behaves like a ping, 1-255 record the code as a failure. `curl -fsS $ORIGIN/in/ID/$?` at the end of a script is the whole integration. "},{"name":"ingest_key","description":"Returns (minting the first time) the key for /in/<key>/<slug>, where a ping creates its own monitor inside the free tier. Instruments a whole fleet with no setu"},{"name":"ingest_key_rotate","description":"Rotates the ingest key; the previous one stops creating monitors. Existing ones keep working. Monitors already created keep working — rotating only revokes the "},{"name":"ping_slug","description":"Create a monitor on its first check-in. The same slug uses the same monitor. Service and billing limits apply. A rejected creation writes no monitor or event. T"},{"name":"billing","description":"Read current free allowances, options with billing off, prices and the account's 90-day period. E-mail alerts cost $0.10 once per additional monitor, even with "},{"name":"status_feed_url","description":"Public URL (JSON and RSS) with the status of all the owner's endpoints. The feed token only reads status: it does not create, change or delete. Whoever has the "},{"name":"status_feed_rotate","description":"Rotates the status feed token; the previous URL stops working."},{"name":"list_templates","description":"Ingest snippets and the JSON HookPulse POSTs on a miss. It exists so nobody guesses the alert format: `miss_json` and `recovery_json` here are the same bodies t"},{"name":"contact","description":"Write to the people behind the product: a question, or a sponsorship/partnership/advertising proposal. Free, no captcha and no payment; one message every 10 s p"},{"name":"pricing","description":"Current public prices and free allowances; no charge."}],"toolCount":41,"toolsHash":"63ab6d80dfb0933a94b40f3d81436d4723d86251532aafe59d52ff2c42119cf8","serverName":"HookPulse","capabilities":["tools"],"serverVersion":"6e7b7bad","protocolVersion":"2025-06-18"}},{"at":"2026-10-08T19:23:18.697Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":207,"error":null,"detail":{"tools":[{"name":"list_environments","description":"Saved environments owned by the current account or guest; empty without a session."},{"name":"create_environment","description":"Register a device UUID before discovery and collector selection. Registers one device (maximum 25 per owner), creating a guest if needed. The UUID is the one-ho"},{"name":"get_environment","description":"Read the detected environment and compatible measurements."},{"name":"create_device_input","description":"Create or rotate an authenticated collector channel for this device. Ownership is checked before the app asks the input central. The server chooses the channel "},{"name":"list_device_inputs","description":"List this device's collector channels, their state and their live numbers."},{"name":"get_device_input_setup","description":"The saved setup of one collector channel: the configuration in use, its files and steps. Returns the setup generated last for this channel — the one whose crede"},{"name":"list_device_input_history","description":"The batches this collector sent, newest first — filtered and paginated on the server. Every batch the input central received for this channel, as it arrived: wh"},{"name":"get_device_input_batch","description":"One received batch, decoded: its series with labels and values, or its NCPA checks. Remote Write (1.0 and 2.0), OTLP (protobuf or JSON) and NRDP become the same"},{"name":"delete_device_input","description":"Revokes and removes one collector channel from a device. The input central removes only a channel of the same owner. This stops new authenticated input and remo"},{"name":"set_device_input_active","description":"Pauses or resumes one collector channel. Pausing keeps the channel, its credential and its configuration: batches the collector sends while paused are accepted "},{"name":"list_input_fleet","description":"Every collector channel of the caller, with state and live numbers, in one response. One call for the whole fleet — one query to the time-series store for all c"},{"name":"report_environment","description":"Preview or save the allowlisted discovery report for one device. Send terminal and saidas (step id to pasted output), initially with conferir:true. Preview retu"},{"name":"list_collections","description":"Lists your measurements with commands adapted to each saved device environment. Two views of the same thing: `coletas` is one entry per measurement, `equipament"},{"name":"create_collection","description":"Adds compatible measurements to a previously detected device. First create /api/ambientes and submit its environment report. Reference that ambiente_id here; it"},{"name":"get_collection_series","description":"The latest readings of one device, for the screen that draws it. Authorised by YOUR session, never by the symbol in the crontab. A device that is not yours answ"},{"name":"update_collection","description":"Renames one measurement, or stops and resumes reading it. The id never changes: it is the write symbol already sitting in a crontab, and renaming on a screen mu"},{"name":"delete_collection","description":"Removes one measurement and frees that slot on the device. What disappears is the OWNERSHIP: your list, the authority to read that series, and the unique slot t"},{"name":"update_environment","description":"Renames a device, and its measurements along with it. One machine has one name. The measurements carry a copy of it, so renaming here renames them too — leaving"},{"name":"delete_environment","description":"Removes a device and every measurement on it, in one call. One call, not one per measurement — the same reason `GET /api/coletas/serie` exists. What goes away i"},{"name":"api_index","description":"Full index of the HookPulse API."},{"name":"health","description":"Liveness."},{"name":"create_guest","description":"Creates a guest token hp_… Keep the token: without it there is no way back to the monitors, unless you have already tied them to an e-mail."},{"name":"list_endpoints","description":"Lists the guest's/session's endpoints."},{"name":"create_endpoint","description":"Create a monitor for a routine. Use cron, tz and grace_sec for a schedule, or interval_sec for a fixed check-in interval. Set max_duration_sec to detect an open"},{"name":"import_crontab","description":"Reads a crontab and proposes one monitor per scheduled line. Without apply=1 nothing is written; the proposal says what was ignored and why. Passwords in the co"},{"name":"get_endpoint","description":"Status of one endpoint (use the endpoint token if you have it). The monitor token only reads: it lets you put the state on a third-party dashboard without handi"},{"name":"delete_endpoint","description":"Removes the owner's endpoint."},{"name":"list_events","description":"Latest ingest pings."},{"name":"ping_ingest","description":"Simulates the cron: GET on /in/:id. No credential on purpose — the caller is a cron, and the ID is already the secret. It costs nothing and there is no quota pe"},{"name":"signal_start","description":"Says the run STARTED. Does not clear the dead-man clock: a routine that starts and hangs still becomes a miss. The next success records the duration. `start` is"},{"name":"signal_fail","description":"Record a failed run. The next five-minute check sends the alert with reason fail. The monitor's alert_repeat_sec controls repeated alerts; the default is 24 hou"},{"name":"signal_exit_code","description":"The shell exit status: 0 behaves like a ping, 1-255 record the code as a failure. `curl -fsS $ORIGIN/in/ID/$?` at the end of a script is the whole integration. "},{"name":"ingest_key","description":"Returns (minting the first time) the key for /in/<key>/<slug>, where a ping creates its own monitor inside the free tier. Instruments a whole fleet with no setu"},{"name":"ingest_key_rotate","description":"Rotates the ingest key; the previous one stops creating monitors. Existing ones keep working. Monitors already created keep working — rotating only revokes the "},{"name":"ping_slug","description":"Create a monitor on its first check-in. The same slug uses the same monitor. Service and billing limits apply. A rejected creation writes no monitor or event. T"},{"name":"billing","description":"Read current free allowances, options with billing off, prices and the account's 90-day period. E-mail alerts cost $0.10 once per additional monitor, even with "},{"name":"status_feed_url","description":"Public URL (JSON and RSS) with the status of all the owner's endpoints. The feed token only reads status: it does not create, change or delete. Whoever has the "},{"name":"status_feed_rotate","description":"Rotates the status feed token; the previous URL stops working."},{"name":"list_templates","description":"Ingest snippets and the JSON HookPulse POSTs on a miss. It exists so nobody guesses the alert format: `miss_json` and `recovery_json` here are the same bodies t"},{"name":"contact","description":"Write to the people behind the product: a question, or a sponsorship/partnership/advertising proposal. Free, no captcha and no payment; one message every 10 s p"},{"name":"pricing","description":"Current public prices and free allowances; no charge."}],"toolCount":41,"toolsHash":"63ab6d80dfb0933a94b40f3d81436d4723d86251532aafe59d52ff2c42119cf8","serverName":"HookPulse","capabilities":["tools"],"serverVersion":"7ba337b6","protocolVersion":"2025-06-18"}},{"at":"2026-10-08T13:23:45.097Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":639,"error":null,"detail":{"tools":[{"name":"list_environments","description":"Saved environments owned by the current account or guest; empty without a session."},{"name":"create_environment","description":"Register a device UUID before discovery and collector selection. Registers one device (maximum 25 per owner), creating a guest if needed. The UUID is the one-ho"},{"name":"get_environment","description":"Read the detected environment and compatible measurements."},{"name":"create_device_input","description":"Create or rotate an authenticated collector channel for this device. Ownership is checked before the app asks the input central. The server chooses the channel "},{"name":"list_device_inputs","description":"List this device's collector channels, their state and their live numbers."},{"name":"get_device_input_setup","description":"The saved setup of one collector channel: the configuration in use, its files and steps. Returns the setup generated last for this channel — the one whose crede"},{"name":"list_device_input_history","description":"The batches this collector sent, newest first — filtered and paginated on the server. Every batch the input central received for this channel, as it arrived: wh"},{"name":"get_device_input_batch","description":"One received batch, decoded: its series with labels and values, or its NCPA checks. Remote Write (1.0 and 2.0), OTLP (protobuf or JSON) and NRDP become the same"},{"name":"delete_device_input","description":"Revokes and removes one collector channel from a device. The input central removes only a channel of the same owner. This stops new authenticated input and remo"},{"name":"set_device_input_active","description":"Pauses or resumes one collector channel. Pausing keeps the channel, its credential and its configuration: batches the collector sends while paused are accepted "},{"name":"list_input_fleet","description":"Every collector channel of the caller, with state and live numbers, in one response. One call for the whole fleet — one query to the time-series store for all c"},{"name":"report_environment","description":"Preview or save the allowlisted discovery report for one device. Send terminal and saidas (step id to pasted output), initially with conferir:true. Preview retu"},{"name":"list_collections","description":"Lists your measurements with commands adapted to each saved device environment. Two views of the same thing: `coletas` is one entry per measurement, `equipament"},{"name":"create_collection","description":"Adds compatible measurements to a previously detected device. First create /api/ambientes and submit its environment report. Reference that ambiente_id here; it"},{"name":"get_collection_series","description":"The latest readings of one device, for the screen that draws it. Authorised by YOUR session, never by the symbol in the crontab. A device that is not yours answ"},{"name":"update_collection","description":"Renames one measurement, or stops and resumes reading it. The id never changes: it is the write symbol already sitting in a crontab, and renaming on a screen mu"},{"name":"delete_collection","description":"Removes one measurement and frees that slot on the device. What disappears is the OWNERSHIP: your list, the authority to read that series, and the unique slot t"},{"name":"update_environment","description":"Renames a device, and its measurements along with it. One machine has one name. The measurements carry a copy of it, so renaming here renames them too — leaving"},{"name":"delete_environment","description":"Removes a device and every measurement on it, in one call. One call, not one per measurement — the same reason `GET /api/coletas/serie` exists. What goes away i"},{"name":"api_index","description":"Full index of the HookPulse API."},{"name":"health","description":"Liveness."},{"name":"create_guest","description":"Creates a guest token hp_… Keep the token: without it there is no way back to the monitors, unless you have already tied them to an e-mail."},{"name":"list_endpoints","description":"Lists the guest's/session's endpoints."},{"name":"create_endpoint","description":"Create a monitor for a routine. Use cron, tz and grace_sec for a schedule, or interval_sec for a fixed check-in interval. Set max_duration_sec to detect an open"},{"name":"import_crontab","description":"Reads a crontab and proposes one monitor per scheduled line. Without apply=1 nothing is written; the proposal says what was ignored and why. Passwords in the co"},{"name":"get_endpoint","description":"Status of one endpoint (use the endpoint token if you have it). The monitor token only reads: it lets you put the state on a third-party dashboard without handi"},{"name":"delete_endpoint","description":"Removes the owner's endpoint."},{"name":"list_events","description":"Latest ingest pings."},{"name":"ping_ingest","description":"Simulates the cron: GET on /in/:id. No credential on purpose — the caller is a cron, and the ID is already the secret. It costs nothing and there is no quota pe"},{"name":"signal_start","description":"Says the run STARTED. Does not clear the dead-man clock: a routine that starts and hangs still becomes a miss. The next success records the duration. `start` is"},{"name":"signal_fail","description":"Record a failed run. The next five-minute check sends the alert with reason fail. The monitor's alert_repeat_sec controls repeated alerts; the default is 24 hou"},{"name":"signal_exit_code","description":"The shell exit status: 0 behaves like a ping, 1-255 record the code as a failure. `curl -fsS $ORIGIN/in/ID/$?` at the end of a script is the whole integration. "},{"name":"ingest_key","description":"Returns (minting the first time) the key for /in/<key>/<slug>, where a ping creates its own monitor inside the free tier. Instruments a whole fleet with no setu"},{"name":"ingest_key_rotate","description":"Rotates the ingest key; the previous one stops creating monitors. Existing ones keep working. Monitors already created keep working — rotating only revokes the "},{"name":"ping_slug","description":"Create a monitor on its first check-in. The same slug uses the same monitor. Service and billing limits apply. A rejected creation writes no monitor or event. T"},{"name":"billing","description":"Read current free allowances, options with billing off, prices and the account's 90-day period. E-mail alerts cost $0.10 once per additional monitor, even with "},{"name":"status_feed_url","description":"Public URL (JSON and RSS) with the status of all the owner's endpoints. The feed token only reads status: it does not create, change or delete. Whoever has the "},{"name":"status_feed_rotate","description":"Rotates the status feed token; the previous URL stops working."},{"name":"list_templates","description":"Ingest snippets and the JSON HookPulse POSTs on a miss. It exists so nobody guesses the alert format: `miss_json` and `recovery_json` here are the same bodies t"},{"name":"contact","description":"Write to the people behind the product: a question, or a sponsorship/partnership/advertising proposal. Free, no captcha and no payment; one message every 10 s p"},{"name":"pricing","description":"Current public prices and free allowances; no charge."}],"toolCount":41,"toolsHash":"63ab6d80dfb0933a94b40f3d81436d4723d86251532aafe59d52ff2c42119cf8","serverName":"HookPulse","capabilities":["tools"],"serverVersion":"226d4c42","protocolVersion":"2025-06-18"}},{"at":"2026-10-08T07:25:02.707Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":206,"error":null,"detail":{"tools":[{"name":"list_environments","description":"Saved environments owned by the current account or guest; empty without a session."},{"name":"create_environment","description":"Register a device UUID before discovery and collector selection. Registers one device (maximum 25 per owner), creating a guest if needed. The UUID is the one-ho"},{"name":"get_environment","description":"Read the detected environment and compatible measurements."},{"name":"create_device_input","description":"Create or rotate an authenticated collector channel for this device. Ownership is checked before the app asks the input central. The server chooses the channel "},{"name":"list_device_inputs","description":"List this device's collector channels, their state and their live numbers."},{"name":"get_device_input_setup","description":"The saved setup of one collector channel: the configuration in use, its files and steps. Returns the setup generated last for this channel — the one whose crede"},{"name":"list_device_input_history","description":"The batches this collector sent, newest first — filtered and paginated on the server. Every batch the input central received for this channel, as it arrived: wh"},{"name":"get_device_input_batch","description":"One received batch, decoded: its series with labels and values, or its NCPA checks. Remote Write (1.0 and 2.0), OTLP (protobuf or JSON) and NRDP become the same"},{"name":"delete_device_input","description":"Revokes and removes one collector channel from a device. The input central removes only a channel of the same owner. This stops new authenticated input and remo"},{"name":"set_device_input_active","description":"Pauses or resumes one collector channel. Pausing keeps the channel, its credential and its configuration: batches the collector sends while paused are accepted "},{"name":"list_input_fleet","description":"Every collector channel of the caller, with state and live numbers, in one response. One call for the whole fleet — one query to the time-series store for all c"},{"name":"report_environment","description":"Preview or save the allowlisted discovery report for one device. Send terminal and saidas (step id to pasted output), initially with conferir:true. Preview retu"},{"name":"list_collections","description":"Lists your measurements with commands adapted to each saved device environment. Two views of the same thing: `coletas` is one entry per measurement, `equipament"},{"name":"create_collection","description":"Adds compatible measurements to a previously detected device. First create /api/ambientes and submit its environment report. Reference that ambiente_id here; it"},{"name":"get_collection_series","description":"The latest readings of one device, for the screen that draws it. Authorised by YOUR session, never by the symbol in the crontab. A device that is not yours answ"},{"name":"update_collection","description":"Renames one measurement, or stops and resumes reading it. The id never changes: it is the write symbol already sitting in a crontab, and renaming on a screen mu"},{"name":"delete_collection","description":"Removes one measurement and frees that slot on the device. What disappears is the OWNERSHIP: your list, the authority to read that series, and the unique slot t"},{"name":"update_environment","description":"Renames a device, and its measurements along with it. One machine has one name. The measurements carry a copy of it, so renaming here renames them too — leaving"},{"name":"delete_environment","description":"Removes a device and every measurement on it, in one call. One call, not one per measurement — the same reason `GET /api/coletas/serie` exists. What goes away i"},{"name":"api_index","description":"Full index of the HookPulse API."},{"name":"health","description":"Liveness."},{"name":"create_guest","description":"Creates a guest token hp_… Keep the token: without it there is no way back to the monitors, unless you have already tied them to an e-mail."},{"name":"list_endpoints","description":"Lists the guest's/session's endpoints."},{"name":"create_endpoint","description":"Create a monitor for a routine. Use cron, tz and grace_sec for a schedule, or interval_sec for a fixed check-in interval. Set max_duration_sec to detect an open"},{"name":"import_crontab","description":"Reads a crontab and proposes one monitor per scheduled line. Without apply=1 nothing is written; the proposal says what was ignored and why. Passwords in the co"},{"name":"get_endpoint","description":"Status of one endpoint (use the endpoint token if you have it). The monitor token only reads: it lets you put the state on a third-party dashboard without handi"},{"name":"delete_endpoint","description":"Removes the owner's endpoint."},{"name":"list_events","description":"Latest ingest pings."},{"name":"ping_ingest","description":"Simulates the cron: GET on /in/:id. No credential on purpose — the caller is a cron, and the ID is already the secret. It costs nothing and there is no quota pe"},{"name":"signal_start","description":"Says the run STARTED. Does not clear the dead-man clock: a routine that starts and hangs still becomes a miss. The next success records the duration. `start` is"},{"name":"signal_fail","description":"Record a failed run. The next five-minute check sends the alert with reason fail. The monitor's alert_repeat_sec controls repeated alerts; the default is 24 hou"},{"name":"signal_exit_code","description":"The shell exit status: 0 behaves like a ping, 1-255 record the code as a failure. `curl -fsS $ORIGIN/in/ID/$?` at the end of a script is the whole integration. "},{"name":"ingest_key","description":"Returns (minting the first time) the key for /in/<key>/<slug>, where a ping creates its own monitor inside the free tier. Instruments a whole fleet with no setu"},{"name":"ingest_key_rotate","description":"Rotates the ingest key; the previous one stops creating monitors. Existing ones keep working. Monitors already created keep working — rotating only revokes the "},{"name":"ping_slug","description":"Create a monitor on its first check-in. The same slug uses the same monitor. Service and billing limits apply. A rejected creation writes no monitor or event. T"},{"name":"billing","description":"Read current free allowances, options with billing off, prices and the account's 90-day period. E-mail alerts cost $0.10 once per additional monitor, even with "},{"name":"status_feed_url","description":"Public URL (JSON and RSS) with the status of all the owner's endpoints. The feed token only reads status: it does not create, change or delete. Whoever has the "},{"name":"status_feed_rotate","description":"Rotates the status feed token; the previous URL stops working."},{"name":"list_templates","description":"Ingest snippets and the JSON HookPulse POSTs on a miss. It exists so nobody guesses the alert format: `miss_json` and `recovery_json` here are the same bodies t"},{"name":"contact","description":"Write to the people behind the product: a question, or a sponsorship/partnership/advertising proposal. Free, no captcha and no payment; one message every 10 s p"},{"name":"pricing","description":"Current public prices and free allowances; no charge."}],"toolCount":41,"toolsHash":"63ab6d80dfb0933a94b40f3d81436d4723d86251532aafe59d52ff2c42119cf8","serverName":"HookPulse","capabilities":["tools"],"serverVersion":"d6288842","protocolVersion":"2025-06-18"}},{"at":"2026-10-08T00:26:06.361Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":681,"error":null,"detail":{"tools":[{"name":"list_environments","description":"Saved environments owned by the current account or guest; empty without a session."},{"name":"create_environment","description":"Register a device UUID before discovery and collector selection. Registers one device (maximum 25 per owner), creating a guest if needed. The UUID is the one-ho"},{"name":"get_environment","description":"Read the detected environment and compatible measurements."},{"name":"create_device_input","description":"Create or rotate an authenticated collector channel for this device. Ownership is checked before the app asks the input central. The server chooses the channel "},{"name":"list_device_inputs","description":"List this device's collector channels, their state and their live numbers."},{"name":"get_device_input_setup","description":"The saved setup of one collector channel: the configuration in use, its files and steps. Returns the setup generated last for this channel — the one whose crede"},{"name":"list_device_input_history","description":"The batches this collector sent, newest first — filtered and paginated on the server. Every batch the input central received for this channel, as it arrived: wh"},{"name":"get_device_input_batch","description":"One received batch, decoded: its series with labels and values, or its NCPA checks. Remote Write (1.0 and 2.0), OTLP (protobuf or JSON) and NRDP become the same"},{"name":"delete_device_input","description":"Revokes and removes one collector channel from a device. The input central removes only a channel of the same owner. This stops new authenticated input and remo"},{"name":"set_device_input_active","description":"Pauses or resumes one collector channel. Pausing keeps the channel, its credential and its configuration: batches the collector sends while paused are accepted "},{"name":"list_input_fleet","description":"Every collector channel of the caller, with state and live numbers, in one response. One call for the whole fleet — one query to the time-series store for all c"},{"name":"report_environment","description":"Preview or save the allowlisted discovery report for one device. Send terminal and saidas (step id to pasted output), initially with conferir:true. Preview retu"},{"name":"list_collections","description":"Lists your measurements with commands adapted to each saved device environment. Two views of the same thing: `coletas` is one entry per measurement, `equipament"},{"name":"create_collection","description":"Adds compatible measurements to a previously detected device. First create /api/ambientes and submit its environment report. Reference that ambiente_id here; it"},{"name":"get_collection_series","description":"The latest readings of one device, for the screen that draws it. Authorised by YOUR session, never by the symbol in the crontab. A device that is not yours answ"},{"name":"update_collection","description":"Renames one measurement, or stops and resumes reading it. The id never changes: it is the write symbol already sitting in a crontab, and renaming on a screen mu"},{"name":"delete_collection","description":"Removes one measurement and frees that slot on the device. What disappears is the OWNERSHIP: your list, the authority to read that series, and the unique slot t"},{"name":"update_environment","description":"Renames a device, and its measurements along with it. One machine has one name. The measurements carry a copy of it, so renaming here renames them too — leaving"},{"name":"delete_environment","description":"Removes a device and every measurement on it, in one call. One call, not one per measurement — the same reason `GET /api/coletas/serie` exists. What goes away i"},{"name":"api_index","description":"Full index of the HookPulse API."},{"name":"health","description":"Liveness."},{"name":"create_guest","description":"Creates a guest token hp_… Keep the token: without it there is no way back to the monitors, unless you have already tied them to an e-mail."},{"name":"list_endpoints","description":"Lists the guest's/session's endpoints."},{"name":"create_endpoint","description":"Create a monitor for a routine. Use cron, tz and grace_sec for a schedule, or interval_sec for a fixed check-in interval. Set max_duration_sec to detect an open"},{"name":"import_crontab","description":"Reads a crontab and proposes one monitor per scheduled line. Without apply=1 nothing is written; the proposal says what was ignored and why. Passwords in the co"},{"name":"get_endpoint","description":"Status of one endpoint (use the endpoint token if you have it). The monitor token only reads: it lets you put the state on a third-party dashboard without handi"},{"name":"delete_endpoint","description":"Removes the owner's endpoint."},{"name":"list_events","description":"Latest ingest pings."},{"name":"ping_ingest","description":"Simulates the cron: GET on /in/:id. No credential on purpose — the caller is a cron, and the ID is already the secret. It costs nothing and there is no quota pe"},{"name":"signal_start","description":"Says the run STARTED. Does not clear the dead-man clock: a routine that starts and hangs still becomes a miss. The next success records the duration. `start` is"},{"name":"signal_fail","description":"Record a failed run. The next five-minute check sends the alert with reason fail. The monitor's alert_repeat_sec controls repeated alerts; the default is 24 hou"},{"name":"signal_exit_code","description":"The shell exit status: 0 behaves like a ping, 1-255 record the code as a failure. `curl -fsS $ORIGIN/in/ID/$?` at the end of a script is the whole integration. "},{"name":"ingest_key","description":"Returns (minting the first time) the key for /in/<key>/<slug>, where a ping creates its own monitor inside the free tier. Instruments a whole fleet with no setu"},{"name":"ingest_key_rotate","description":"Rotates the ingest key; the previous one stops creating monitors. Existing ones keep working. Monitors already created keep working — rotating only revokes the "},{"name":"ping_slug","description":"Create a monitor on its first check-in. The same slug uses the same monitor. Service and billing limits apply. A rejected creation writes no monitor or event. T"},{"name":"billing","description":"Read current free allowances, options with billing off, prices and the account's 90-day period. E-mail alerts cost $0.10 once per additional monitor, even with "},{"name":"status_feed_url","description":"Public URL (JSON and RSS) with the status of all the owner's endpoints. The feed token only reads status: it does not create, change or delete. Whoever has the "},{"name":"status_feed_rotate","description":"Rotates the status feed token; the previous URL stops working."},{"name":"list_templates","description":"Ingest snippets and the JSON HookPulse POSTs on a miss. It exists so nobody guesses the alert format: `miss_json` and `recovery_json` here are the same bodies t"},{"name":"contact","description":"Write to the people behind the product: a question, or a sponsorship/partnership/advertising proposal. Free, no captcha and no payment; one message every 10 s p"},{"name":"pricing","description":"Current public prices and free allowances; no charge."}],"toolCount":41,"toolsHash":"63ab6d80dfb0933a94b40f3d81436d4723d86251532aafe59d52ff2c42119cf8","serverName":"HookPulse","capabilities":["tools"],"serverVersion":"3caa1fdd","protocolVersion":"2025-06-18"}},{"at":"2026-10-07T17:30:28.617Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":629,"error":null,"detail":{"tools":[{"name":"list_environments","description":"Saved environments owned by the current account or guest; empty without a session."},{"name":"create_environment","description":"Register a device UUID before discovery and collector selection. Registers one device (maximum 25 per owner), creating a guest if needed. The UUID is the one-ho"},{"name":"get_environment","description":"Read the detected environment and compatible measurements."},{"name":"create_device_input","description":"Create or rotate an authenticated collector channel for this device. Ownership is checked before the app asks the input central. The server chooses the channel "},{"name":"list_device_inputs","description":"List this device's collector channels, their state and their live numbers."},{"name":"get_device_input_setup","description":"The saved setup of one collector channel: the configuration in use, its files and steps. Returns the setup generated last for this channel — the one whose crede"},{"name":"list_device_input_history","description":"The batches this collector sent, newest first — filtered and paginated on the server. Every batch the input central received for this channel, as it arrived: wh"},{"name":"get_device_input_batch","description":"One received batch, decoded: its series with labels and values, or its NCPA checks. Remote Write (1.0 and 2.0), OTLP (protobuf or JSON) and NRDP become the same"},{"name":"delete_device_input","description":"Revokes and removes one collector channel from a device. The input central removes only a channel of the same owner. This stops new authenticated input and remo"},{"name":"set_device_input_active","description":"Pauses or resumes one collector channel. Pausing keeps the channel, its credential and its configuration: batches the collector sends while paused are accepted "},{"name":"list_input_fleet","description":"Every collector channel of the caller, with state and live numbers, in one response. One call for the whole fleet — one query to the time-series store for all c"},{"name":"report_environment","description":"Preview or save the allowlisted discovery report for one device. Send terminal and saidas (step id to pasted output), initially with conferir:true. Preview retu"},{"name":"list_collections","description":"Lists your measurements with commands adapted to each saved device environment. Two views of the same thing: `coletas` is one entry per measurement, `equipament"},{"name":"create_collection","description":"Adds compatible measurements to a previously detected device. First create /api/ambientes and submit its environment report. Reference that ambiente_id here; it"},{"name":"get_collection_series","description":"The latest readings of one device, for the screen that draws it. Authorised by YOUR session, never by the symbol in the crontab. A device that is not yours answ"},{"name":"update_collection","description":"Renames one measurement, or stops and resumes reading it. The id never changes: it is the write symbol already sitting in a crontab, and renaming on a screen mu"},{"name":"delete_collection","description":"Removes one measurement and frees that slot on the device. What disappears is the OWNERSHIP: your list, the authority to read that series, and the unique slot t"},{"name":"update_environment","description":"Renames a device, and its measurements along with it. One machine has one name. The measurements carry a copy of it, so renaming here renames them too — leaving"},{"name":"delete_environment","description":"Removes a device and every measurement on it, in one call. One call, not one per measurement — the same reason `GET /api/coletas/serie` exists. What goes away i"},{"name":"api_index","description":"Full index of the HookPulse API."},{"name":"health","description":"Liveness."},{"name":"create_guest","description":"Creates a guest token hp_… Keep the token: without it there is no way back to the monitors, unless you have already tied them to an e-mail."},{"name":"list_endpoints","description":"Lists the guest's/session's endpoints."},{"name":"create_endpoint","description":"Create a monitor for a routine. Use cron, tz and grace_sec for a schedule, or interval_sec for a fixed check-in interval. Set max_duration_sec to detect an open"},{"name":"import_crontab","description":"Reads a crontab and proposes one monitor per scheduled line. Without apply=1 nothing is written; the proposal says what was ignored and why. Passwords in the co"},{"name":"get_endpoint","description":"Status of one endpoint (use the endpoint token if you have it). The monitor token only reads: it lets you put the state on a third-party dashboard without handi"},{"name":"delete_endpoint","description":"Removes the owner's endpoint."},{"name":"list_events","description":"Latest ingest pings."},{"name":"ping_ingest","description":"Simulates the cron: GET on /in/:id. No credential on purpose — the caller is a cron, and the ID is already the secret. It costs nothing and there is no quota pe"},{"name":"signal_start","description":"Says the run STARTED. Does not clear the dead-man clock: a routine that starts and hangs still becomes a miss. The next success records the duration. `start` is"},{"name":"signal_fail","description":"Record a failed run. The next five-minute check sends the alert with reason fail. The monitor's alert_repeat_sec controls repeated alerts; the default is 24 hou"},{"name":"signal_exit_code","description":"The shell exit status: 0 behaves like a ping, 1-255 record the code as a failure. `curl -fsS $ORIGIN/in/ID/$?` at the end of a script is the whole integration. "},{"name":"ingest_key","description":"Returns (minting the first time) the key for /in/<key>/<slug>, where a ping creates its own monitor inside the free tier. Instruments a whole fleet with no setu"},{"name":"ingest_key_rotate","description":"Rotates the ingest key; the previous one stops creating monitors. Existing ones keep working. Monitors already created keep working — rotating only revokes the "},{"name":"ping_slug","description":"Create a monitor on its first check-in. The same slug uses the same monitor. Service and billing limits apply. A rejected creation writes no monitor or event. T"},{"name":"billing","description":"Read current free allowances, options with billing off, prices and the account's 90-day period. E-mail alerts cost $0.10 once per additional monitor, even with "},{"name":"status_feed_url","description":"Public URL (JSON and RSS) with the status of all the owner's endpoints. The feed token only reads status: it does not create, change or delete. Whoever has the "},{"name":"status_feed_rotate","description":"Rotates the status feed token; the previous URL stops working."},{"name":"list_templates","description":"Ingest snippets and the JSON HookPulse POSTs on a miss. It exists so nobody guesses the alert format: `miss_json` and `recovery_json` here are the same bodies t"},{"name":"contact","description":"Write to the people behind the product: a question, or a sponsorship/partnership/advertising proposal. Free, no captcha and no payment; one message every 10 s p"},{"name":"pricing","description":"Current public prices and free allowances; no charge."}],"toolCount":41,"toolsHash":"63ab6d80dfb0933a94b40f3d81436d4723d86251532aafe59d52ff2c42119cf8","serverName":"HookPulse","capabilities":["tools"],"serverVersion":"7de55ece","protocolVersion":"2025-06-18"}}],"tools":[{"name":"list_environments","description":"Saved environments owned by the current account or guest; empty without a session."},{"name":"create_environment","description":"Register a device UUID before discovery and collector selection. Registers one device (maximum 25 per owner), creating a guest if needed. The UUID is the one-ho"},{"name":"get_environment","description":"Read the detected environment and compatible measurements."},{"name":"create_device_input","description":"Create or rotate an authenticated collector channel for this device. Ownership is checked before the app asks the input central. The server chooses the channel "},{"name":"list_device_inputs","description":"List this device's collector channels, their state and their live numbers."},{"name":"get_device_input_setup","description":"The saved setup of one collector channel: the configuration in use, its files and steps. Returns the setup generated last for this channel — the one whose crede"},{"name":"list_device_input_history","description":"The batches this collector sent, newest first — filtered and paginated on the server. Every batch the input central received for this channel, as it arrived: wh"},{"name":"get_device_input_batch","description":"One received batch, decoded: its series with labels and values, or its NCPA checks. Remote Write (1.0 and 2.0), OTLP (protobuf or JSON) and NRDP become the same"},{"name":"delete_device_input","description":"Revokes and removes one collector channel from a device. The input central removes only a channel of the same owner. This stops new authenticated input and remo"},{"name":"set_device_input_active","description":"Pauses or resumes one collector channel. Pausing keeps the channel, its credential and its configuration: batches the collector sends while paused are accepted "},{"name":"list_input_fleet","description":"Every collector channel of the caller, with state and live numbers, in one response. One call for the whole fleet — one query to the time-series store for all c"},{"name":"report_environment","description":"Preview or save the allowlisted discovery report for one device. Send terminal and saidas (step id to pasted output), initially with conferir:true. Preview retu"},{"name":"list_collections","description":"Lists your measurements with commands adapted to each saved device environment. Two views of the same thing: `coletas` is one entry per measurement, `equipament"},{"name":"create_collection","description":"Adds compatible measurements to a previously detected device. First create /api/ambientes and submit its environment report. Reference that ambiente_id here; it"},{"name":"get_collection_series","description":"The latest readings of one device, for the screen that draws it. Authorised by YOUR session, never by the symbol in the crontab. A device that is not yours answ"},{"name":"update_collection","description":"Renames one measurement, or stops and resumes reading it. The id never changes: it is the write symbol already sitting in a crontab, and renaming on a screen mu"},{"name":"delete_collection","description":"Removes one measurement and frees that slot on the device. What disappears is the OWNERSHIP: your list, the authority to read that series, and the unique slot t"},{"name":"update_environment","description":"Renames a device, and its measurements along with it. One machine has one name. The measurements carry a copy of it, so renaming here renames them too — leaving"},{"name":"delete_environment","description":"Removes a device and every measurement on it, in one call. One call, not one per measurement — the same reason `GET /api/coletas/serie` exists. What goes away i"},{"name":"api_index","description":"Full index of the HookPulse API."},{"name":"health","description":"Liveness."},{"name":"create_guest","description":"Creates a guest token hp_… Keep the token: without it there is no way back to the monitors, unless you have already tied them to an e-mail."},{"name":"list_endpoints","description":"Lists the guest's/session's endpoints."},{"name":"create_endpoint","description":"Create a monitor for a routine. Use cron, tz and grace_sec for a schedule, or interval_sec for a fixed check-in interval. Set max_duration_sec to detect an open"},{"name":"import_crontab","description":"Reads a crontab and proposes one monitor per scheduled line. Without apply=1 nothing is written; the proposal says what was ignored and why. Passwords in the co"},{"name":"get_endpoint","description":"Status of one endpoint (use the endpoint token if you have it). The monitor token only reads: it lets you put the state on a third-party dashboard without handi"},{"name":"delete_endpoint","description":"Removes the owner's endpoint."},{"name":"list_events","description":"Latest ingest pings."},{"name":"ping_ingest","description":"Simulates the cron: GET on /in/:id. No credential on purpose — the caller is a cron, and the ID is already the secret. It costs nothing and there is no quota pe"},{"name":"signal_start","description":"Says the run STARTED. Does not clear the dead-man clock: a routine that starts and hangs still becomes a miss. The next success records the duration. `start` is"},{"name":"signal_fail","description":"Record a failed run. The next five-minute check sends the alert with reason fail. The monitor's alert_repeat_sec controls repeated alerts; the default is 24 hou"},{"name":"signal_exit_code","description":"The shell exit status: 0 behaves like a ping, 1-255 record the code as a failure. `curl -fsS $ORIGIN/in/ID/$?` at the end of a script is the whole integration. "},{"name":"ingest_key","description":"Returns (minting the first time) the key for /in/<key>/<slug>, where a ping creates its own monitor inside the free tier. Instruments a whole fleet with no setu"},{"name":"ingest_key_rotate","description":"Rotates the ingest key; the previous one stops creating monitors. Existing ones keep working. Monitors already created keep working — rotating only revokes the "},{"name":"ping_slug","description":"Create a monitor on its first check-in. The same slug uses the same monitor. Service and billing limits apply. A rejected creation writes no monitor or event. T"},{"name":"billing","description":"Read current free allowances, options with billing off, prices and the account's 90-day period. E-mail alerts cost $0.10 once per additional monitor, even with "},{"name":"status_feed_url","description":"Public URL (JSON and RSS) with the status of all the owner's endpoints. The feed token only reads status: it does not create, change or delete. Whoever has the "},{"name":"status_feed_rotate","description":"Rotates the status feed token; the previous URL stops working."},{"name":"list_templates","description":"Ingest snippets and the JSON HookPulse POSTs on a miss. It exists so nobody guesses the alert format: `miss_json` and `recovery_json` here are the same bodies t"},{"name":"contact","description":"Write to the people behind the product: a question, or a sponsorship/partnership/advertising proposal. Free, no captcha and no payment; one message every 10 s p"},{"name":"pricing","description":"Current public prices and free allowances; no charge."}],"package":null,"toolSurface":{"id":"ts_hcaxmu26y65y","endpointId":"ep_yypqj559qpjf","hash":"63ab6d80dfb0933a94b40f3d81436d4723d86251532aafe59d52ff2c42119cf8","toolCount":41,"serverName":"HookPulse","serverVersion":"8590f413","protocolVersion":"2025-06-18","firstSeenAt":"2026-10-06T20:27:50.413Z","lastSeenAt":"2026-10-10T04:32:50.548Z","observations":13,"toolNames":["list_environments","create_environment","get_environment","create_device_input","list_device_inputs","get_device_input_setup","list_device_input_history","get_device_input_batch","delete_device_input","set_device_input_active","list_input_fleet","report_environment","list_collections","create_collection","get_collection_series","update_collection","delete_collection","update_environment","delete_environment","api_index","health","create_guest","list_endpoints","create_endpoint","import_crontab","get_endpoint","delete_endpoint","list_events","ping_ingest","signal_start","signal_fail","signal_exit_code","ingest_key","ingest_key_rotate","ping_slug","billing","status_feed_url","status_feed_rotate","list_templates","contact","pricing"],"distinctSurfaces":6},"endpointFacts":[{"id":"ep_yypqj559qpjf","url":"https://hookpulse.net/mcp","type":"mcp_streamable_http","factsCheckedAt":"2026-10-09T16:32:03.542Z","auth":{"observedAt":"2026-10-09T16:32:03.761Z","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-09T16:32:04.168Z","protocol":"TLSv1.3","chainValid":true,"chainError":null,"hostMatches":true,"subject":"hookpulse.net","issuer":{"commonName":"YE2","organization":"Let's Encrypt"},"validFrom":"2026-09-23T20:22:27.000Z","validTo":"2026-12-22T20:22:26.000Z","daysToExpiry":73,"sanCount":2,"fingerprint256":"4A:B0:7A:F8:FC:C8:2E:FB:76:03:23:1B:8C:57:9E:04:64:58:C1:19:7E:F9:30:E9:3D:C9:91:21:1D:2C:74:68"}}]},"verification":{"claimed":false,"claimedAt":null,"proofs":[]},"provenance":{"sources":[{"source":"mcp_registry","key":"net.hookpulse/hookpulse","url":"https://registry.modelcontextprotocol.io/v0/servers/net.hookpulse%2Fhookpulse","firstSeenAt":"2026-09-07T08:19:34.702Z","fetchedAt":"2026-10-08T18:22:11.451Z","normalizedAt":"2026-10-08T18:22:11.451Z"}]},"firstSeenAt":"2026-09-07T08:19:34.702Z","updatedAt":"2026-10-10T04:34:49.846Z"}