Pushbullet
The io.b3os/pushbullet pack: 2 actions with call snippets, fixture outputs, connection setup and error codes, generated from version 1.0.0.
io.b3os/pushbullet 1.0.0 · notifications, messaging, mobile · MIT
Push notifications to your own phones and browsers through Pushbullet with your Pushbullet access token: send a note or a link to all devices or one device, and list devices to find their identifiers.
Every call's result carries upstream_status and timing: validate_ms, inject_ms, render_ms, upstream_ms, map_ms and total_ms. upstream is the service's time; the others are B3OS's own (call actions). The snippets below show no timing values, because a fixture records none.
Connection
pushbullet, type api_key: Pushbullet access token.
An access token from pushbullet.com/#settings/account, sent as the Access-Token header to api.pushbullet.com only.
How to get one: docs.pushbullet.com.
The credential is sent only to api.pushbullet.com.
Store the credential once as a vault connection for this pack and key, then name its id in a call's connections. Leave the key out and B3OS uses the project's newest connection for the pack and key without a subject (connections).
Hosts it reaches: api.pushbullet.com.
Actions
| Action | Effect | MCP tool | Title |
|---|---|---|---|
send-push | irreversible | pushbullet__send-push | Send push |
list-devices | read | pushbullet__list-devices | List devices |
send-push
Send push. Send a note, or a link with a URL, to every device on the account or to one device (deviceIden from list-devices). Returns the push identifier.
Ref io.b3os/pushbullet/send-push@1.0.0 · effect irreversible · connection pushbullet · MCP tool pushbullet__send-push
bashcurl -s https://beta-api.b3os.org/v1/actions/call \ -H "Authorization: Bearer $B3OS_API_KEY" \ -H "Idempotency-Key: 7c1e2f6a-1d43-4a8e-b2a5-3f0c9d5e8b11" \ -H "Content-Type: application/json" \ -d '{ "ref": "io.b3os/pushbullet/send-push@1", "input": { "type": "link", "title": "Deploy finished", "body": "v2.4.1 is live", "url": "https://status.acme.example/deploys/241" }, "connections": {"pushbullet": "conn_01m5t6cbgdjs1ketgcqwa2sne8"} }'
tsimport { B3OS } from "@b3os/sdk";const b3os = new B3OS();const result = await b3os.actions.call({ ref: "io.b3os/pushbullet/send-push@1", input: { type: "link", title: "Deploy finished", body: "v2.4.1 is live", url: "https://status.acme.example/deploys/241", }, connections: { pushbullet: "conn_01m5t6cbgdjs1ketgcqwa2sne8" },}, { idempotencyKey: crypto.randomUUID() });console.log(result.output);
pythonimport uuidfrom b3os import B3OSb3os = B3OS()result = b3os.actions.call({ "ref": "io.b3os/pushbullet/send-push@1", "input": { "type": "link", "title": "Deploy finished", "body": "v2.4.1 is live", "url": "https://status.acme.example/deploys/241", }, "connections": {"pushbullet": "conn_01m5t6cbgdjs1ketgcqwa2sne8"},}, idempotency_key=str(uuid.uuid4()))print(result["output"])
json{ "method": "tools/call", "params": { "name": "pushbullet__send-push", "arguments": { "type": "link", "title": "Deploy finished", "body": "v2.4.1 is live", "url": "https://status.acme.example/deploys/241" } }}
Expose the pack as tools with --packs pushbullet on the local server or ?packs=pushbullet on the remote URL, and the agent calls pushbullet__send-push with the action's input. The tool uses your newest connection for each key without a subject. Without exposing the pack, actions_call takes the same input with ref.
Output, labeled fixture: Send push (documented response shape, example values). From the bundle's fixtures/send-push.json, not a live call.
json{"iden": "ujpah72o0sjAoRtnM0jc", "active": true}
When the service answers with an error, the call fails with upstream_error and pack_error.code is one of:
pack_error.code | Service status | Retryable | Message |
|---|---|---|---|
invalid_request | 400 | no | built from the service's response |
not_found | 404 | no | No such Pushbullet device. |
connection_unauthorized | 401 | no | Pushbullet rejected the access token; check the connection. |
forbidden | 403 | no | Pushbullet refused the request for this account. |
rate_limited | 429 | yes | Pushbullet rate limit reached for this account; retry later. |
list-devices
List devices. Active devices on the Pushbullet account with identifier, nickname, type (android, ios, chrome, firefox, ...) and whether they can receive pushes.
Ref io.b3os/pushbullet/list-devices@1.0.0 · effect read · connection pushbullet · MCP tool pushbullet__list-devices
bashcurl -s https://beta-api.b3os.org/v1/actions/call \ -H "Authorization: Bearer $B3OS_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "ref": "io.b3os/pushbullet/list-devices@1", "input": {}, "connections": {"pushbullet": "conn_01m5t6cbgdjs1ketgcqwa2sne8"} }'
tsimport { B3OS } from "@b3os/sdk";const b3os = new B3OS();const result = await b3os.actions.call({ ref: "io.b3os/pushbullet/list-devices@1", input: {}, connections: { pushbullet: "conn_01m5t6cbgdjs1ketgcqwa2sne8" },});console.log(result.output);
pythonfrom b3os import B3OSb3os = B3OS()result = b3os.actions.call({ "ref": "io.b3os/pushbullet/list-devices@1", "input": {}, "connections": {"pushbullet": "conn_01m5t6cbgdjs1ketgcqwa2sne8"},})print(result["output"])
json{ "method": "tools/call", "params": {"name": "pushbullet__list-devices", "arguments": {}}}
Expose the pack as tools with --packs pushbullet on the local server or ?packs=pushbullet on the remote URL, and the agent calls pushbullet__list-devices with the action's input. The tool uses your newest connection for each key without a subject. Without exposing the pack, actions_call takes the same input with ref.
Output, labeled fixture: List devices (documented response shape, example values). From the bundle's fixtures/list-devices.json, not a live call.
json{ "devices": [ { "iden": "ujpah72o0sjAoRtnM0jc", "nickname": "Pixel 9", "type": "android", "manufacturer": "Google", "model": "Pixel 9", "pushable": true }, { "iden": "ujpah72o0sjAsoeMFETtJs", "nickname": "Chrome", "type": "chrome", "manufacturer": null, "model": null, "pushable": true } ]}
When the service answers with an error, the call fails with upstream_error and pack_error.code is one of:
pack_error.code | Service status | Retryable | Message |
|---|---|---|---|
invalid_request | 400 | no | built from the service's response |
not_found | 404 | no | No such Pushbullet device. |
connection_unauthorized | 401 | no | Pushbullet rejected the access token; check the connection. |
forbidden | 403 | no | Pushbullet refused the request for this account. |
rate_limited | 429 | yes | Pushbullet rate limit reached for this account; retry later. |