{"$schema":"https://wellknown.network/schemas/agent-record-v1.json","schemaVersion":"1","id":"ag_pmna64dqsdhh","handle":"ntfy-blade-mcp","url":"https://wellknown.network/agents/ntfy-blade-mcp","links":{"self":"https://wellknown.network/agents/ntfy-blade-mcp/record.json","html":"https://wellknown.network/agents/ntfy-blade-mcp","markdown":"https://wellknown.network/agents/ntfy-blade-mcp/record.md","api":"https://wellknown.network/api/v1/agents/ntfy-blade-mcp","status":"https://wellknown.network/api/v1/agents/ntfy-blade-mcp/status","claim":"https://wellknown.network/agents/ntfy-blade-mcp/claim","claimApi":"https://wellknown.network/api/v1/claims","claimDescriptor":"https://wellknown.network/agents/ntfy-blade-mcp/claim.json","badge":"https://wellknown.network/agents/ntfy-blade-mcp/badge.svg","openapi":"https://wellknown.network/openapi.json","history":"https://wellknown.network/api/v1/agents/ntfy-blade-mcp/history","tools":"https://wellknown.network/api/v1/agents/ntfy-blade-mcp/tools"},"ard":{"identifier":"urn:air::server:ntfy-blade-mcp","type":"application/mcp-server-card+json"},"kind":"mcp_server","declared":{"name":"ntfy-blade-mcp","summary":"ntfy push notification MCP Server — publish, poll, topic and token management","description":"# ntfy Blade MCP\n\nToken-efficient MCP server for [ntfy](https://ntfy.sh) push notifications. Publish alerts, poll topics, manage tokens and reservations.\n\n## Requirements\n\n- Python 3.12+\n- A ntfy server (self-hosted or ntfy.sh)\n- Optional: bearer token for authenticated access\n\n## Quick Start\n\n```bash\n# Install\nuv sync\n\n# Configure\nexport NTFY_BASE_URL=https://ntfy.sh\nexport NTFY_TOKEN=tk_your_token_here\nexport NTFY_DEFAULT_TOPIC=my-alerts\nexport NTFY_WRITE_ENABLED=true\n\n# Run\nuv run ntfy-blade-mcp\n```\n\n## Tools (10)\n\n| Tool | Type | Description |\n|------|------|-------------|\n| `ntfy_info` | read | Server health + capabilities + stats (3-in-1) |\n| `ntfy_account` | read | Usage limits, reserved topics, active tokens |\n| `ntfy_poll` | read | Poll topic(s) for cached messages |\n| `ntfy_publish` | write | Send notification (priority, tags, actions, markdown, delay) |\n| `ntfy_cancel` | write | Cancel a scheduled message |\n| `ntfy_reserve` | write | Reserve a topic (set ACL) |\n| `ntfy_unreserve` | write | Release a topic reservation |\n| `ntfy_token_create` | write | Create a new API token |\n| `ntfy_token_extend` | write | Extend/relabel a token |\n| `ntfy_token_revoke` | write | Revoke a token |\n\n## Security Model\n\n1. **Environment gate** — all write tools require `NTFY_WRITE_ENABLED=true`\n2. **Per-call confirmation** — every write tool requires `confirm=true`\n3. **Token redaction** — tokens are truncated in output (full token shown only on create)\n4. **PII scrubbing** — bearer tokens and API keys redacted from error messages\n5. **No admin endpoints** — user management excluded by design\n\n## Token Efficiency\n\n- `ntfy_info` collapses 3 API calls (health + config + stats) into 1 tool call\n- Pipe-delimited output, null-field omission, truncation at 200 chars\n- Default priority (3) omitted from poll output\n- `NTFY_DEFAULT_TOPIC` eliminates per-call topic specification\n\n## Environment Variables\n\n| Variable | Required | Secret | Description |\n|----------|----------|--------|--…","publisher":{"name":"Piers","url":null},"homepage":null,"repository":null,"version":"0.2.0","license":"MIT","protocols":["mcp"],"tags":["mcp","notifications","ntfy","push"],"pricing":null,"endpoints":[{"url":"pypi:ntfy-blade-mcp","type":"package_pypi","auth":null,"probeable":false}],"skills":null,"tools":null,"extra":null,"attribution":{"kind":"pypi","name":"pypi","license":"pypi","summary":"pypi","version":"pypi","description":"pypi","publisherName":"pypi"}},"derived":{"capabilities":[{"slug":"communication.notifications","name":"Notifications","confidence":1,"provenance":"declared"}],"categories":["communication"],"language":"en"},"observed":{"status":"unknown","statusReason":"Distributed as a package to run locally; no network endpoint to check.","lastOkAt":null,"lastProbedAt":null,"statusComputedAt":null,"reliability30d":null,"latestObservations":[],"tools":null,"package":{"name":"ntfy-blade-mcp","registry":"pypi","observedAt":"2026-10-28T18:28:14.216Z","publishedAt":"2026-04-28T04:25:14.044573Z","latestVersion":"0.2.0"},"toolSurface":null,"endpointFacts":[]},"verification":{"claimed":false,"claimedAt":null,"proofs":[]},"provenance":{"sources":[{"source":"pypi","key":"ntfy-blade-mcp","url":"https://pypi.org/project/ntfy-blade-mcp/","firstSeenAt":"2026-09-10T08:25:40.574Z","fetchedAt":"2026-10-28T18:26:20.260Z","normalizedAt":"2026-10-28T18:26:20.260Z"}]},"firstSeenAt":"2026-09-10T08:25:40.574Z","updatedAt":"2026-10-28T18:28:14.216Z"}