{"name":"Papertrade Alerts","description":"Unofficial, self-hostable alerts for Papertrade wallets: liquidation distance, positions opened, closed or liquidated, session key expiry and staking rewards, delivered to Telegram, Discord or a signed webhook. Not affiliated with Papertrade.","url":"https://papertrade-alerts.ninabrekkerese.workers.dev/mcp","version":"0.2.0","protocolVersion":"0.3.0","preferredTransport":"JSONRPC","provider":{"organization":"nirholas (community, unofficial)","url":"https://github.com/nirholas/papertrade-alerts"},"documentationUrl":"https://papertrade-alerts.ninabrekkerese.workers.dev/docs/","iconUrl":"https://papertrade-alerts.ninabrekkerese.workers.dev/icon.svg","capabilities":{"streaming":false,"pushNotifications":false,"stateTransitionHistory":false},"defaultInputModes":["application/json","text/plain"],"defaultOutputModes":["application/json","text/plain"],"securitySchemes":{"managementToken":{"type":"http","scheme":"bearer","description":"One-time ptal_ token from create_subscription. Only the subscription tools need it."}},"skills":[{"id":"get_service_status","name":"Get service status","description":"Report whether this alerting deployment is ready: storage state, which delivery channels are configured, per-account limits and the result of the last cron poll. Call this first.","tags":["papertrade","alerts","read-only"],"inputModes":["application/json"],"outputModes":["application/json"],"examples":[]},{"id":"list_alert_types","name":"List alert types and rule limits","description":"Describe every alert this service can send, the rule field that controls it, its default, and the allowed numeric ranges. Use it to choose rules before calling create_alert_rule.","tags":["papertrade","alerts","read-only"],"inputModes":["application/json"],"outputModes":["application/json"],"examples":[]},{"id":"preview_wallet_alerts","name":"Preview which alerts a wallet would trigger","description":"Read a Papertrade wallet from the live API and report, for each open position, session key and the staking balance, whether the given rules would be alerting right now. Read-only: nothing is stored and nobody is notified. Works for any public wallet address.","tags":["papertrade","alerts","read-only"],"inputModes":["application/json"],"outputModes":["application/json"],"examples":[]},{"id":"validate_destination","name":"Validate a notification destination","description":"Check a Discord or webhook URL against the same rules add_destination enforces (https only, no private, loopback or link-local hosts, no embedded credentials). Makes no network request and stores nothing.","tags":["papertrade","alerts","read-only"],"inputModes":["application/json"],"outputModes":["application/json"],"examples":[]},{"id":"create_subscription","name":"Create an alert subscription","description":"Create an empty alert subscription and return its management token ONCE. Store it: it is the only credential and cannot be recovered. Then add a destination with add_destination and a rule with create_alert_rule. Hard rate limited per client.","tags":["papertrade","alerts","subscription"],"inputModes":["application/json"],"outputModes":["application/json"],"examples":[]},{"id":"add_destination","name":"Add a Discord or webhook destination","description":"Connect a destination YOU own: a Discord webhook URL or an https webhook endpoint. Webhook deliveries are signed with HMAC-SHA256 and the signing secret is returned once. Private, loopback and link-local hosts are refused. Telegram chats are linked from the bot with /start <code>, not here. Follow with test_destination.","tags":["papertrade","alerts","subscription"],"inputModes":["application/json"],"outputModes":["application/json"],"examples":[]},{"id":"test_destination","name":"Send a test message to a destination","description":"Deliver one real test message to one of your destinations and report whether it arrived. Messages the destination only, at most 5 per minute per account.","tags":["papertrade","alerts","subscription"],"inputModes":["application/json"],"outputModes":["application/json"],"examples":[]},{"id":"create_alert_rule","name":"Create an alert rule for a wallet","description":"Start watching a Papertrade wallet with the given rules (defaults apply to anything omitted). role \"own\" is your wallet with account-level alerts; \"follow\" watches another wallet for trades only. Idempotent per address and role. The first poll is seeded silently, so existing positions do not trigger alerts.","tags":["papertrade","alerts","subscription"],"inputModes":["application/json"],"outputModes":["application/json"],"examples":[]},{"id":"list_alert_rules","name":"List your alert rules and destinations","description":"Return every wallet rule and destination on the subscription, with polling health and the last delivery error per destination. Read-only.","tags":["papertrade","alerts","read-only"],"inputModes":["application/json"],"outputModes":["application/json"],"examples":[]},{"id":"delete_alert_rule","name":"Delete an alert rule","description":"Stop watching a wallet by deleting one rule. Destructive for that rule only (its alert state is dropped); the wallet, destinations and past alerts are untouched. Re-create it any time.","tags":["papertrade","alerts","subscription"],"inputModes":["application/json"],"outputModes":["application/json"],"examples":[]}],"additionalInterfaces":[{"url":"https://papertrade-alerts.ninabrekkerese.workers.dev/mcp","transport":"MCP-STREAMABLE-HTTP"}]}