PairOnce
NPM · PAIRONCE
Send files and text between an AI agent and your own paired devices, end-to-end encrypted.
Available components
Last scanned (21 minutes ago)
Scores higher than 26% of npm servers
How this component scores in each security and reliability category. Every signal is checked automatically from public evidence about the published package, including repeated runs of it in an isolated sandbox, and we only credit what we can confirm. How we score → Why this is hard to score →
Supply Chain Security99
- No malware found by supply-chain analysis.Pass
- No known CVEs affecting this package version or its production dependencies.Pass
- No install/post-install scripts declared.Pass
- 1 of 20 dependencies flagged as unhealthy (1 deprecated). View diagnostics → Partial
Provenance & Transparency97
- Source repository is publicly reachable at the declared URL. View diagnostics → Pass
- Cryptographically verified build provenance (signed, bound to paironce/cli). View diagnostics → Pass
- Clear OSI-approved license (Apache-2.0).Pass
- Actively maintained (last published 0 days ago).Pass
- Disclosure check failed: no security disclosure policy was found in the source repository. See how to fix → Fail
Schema Quality & AI Usability0
- Schema quality not yet verified: we do not have a sandbox capture of the MCP schema this version of the package serves yet.Unverified
Stability & Change Management0
- Stability not yet verified: we do not have a sandbox capture of the MCP schema this version of the package serves yet.Unverified
Tool Coverage0
- Tool coverage not yet verified: we do not have a sandbox capture of the tool definitions this version of the package serves yet.Unverified
Tool Safety0
- Tool safety not yet verified: we do not have a sandbox capture of the tool definitions this version of the package serves yet.Unverified
Capabilities0
- Protocol version not yet verified: we do not have a sandbox capture of the MCP handshake this version of the package performs yet.Unverified
Unverified: 5 categories
Categories scored 0 because our sandbox has not given us the schema these checks need to read. That is a gap on our side rather than a finding about the package, and we only credit what we can confirm, so the score stands at 0 until the capture succeeds. We are working through the fleet, so this normally clears without any action from you. How we score packages →
Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.
- 5 Nov 26 49
First indexed and scored.
Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.
Captured 5 Nov 2026 · Analysed npm/paironce@0.9.1
Provenance Verified
A signed build attestation was found and verified, binding this exact artifact to the source repository it claims to come from.
| Result | Verified |
|---|---|
| Ecosystem | npm |
| Reason | Verified |
| Discovered via | Registry attestation endpoint |
| Source repo | paironce/cli |
| Certificate issuer | https://token.actions.githubusercontent.com |
| Certificate SAN | https://github.com/paironce/cli/.github/workflows/publish.yml@refs/tags/v0.9.1 |
| Rekor log index | 3692359498 |
| Predicate type | SLSA build provenance https://slsa.dev/provenance/v1 |
| Subject digest | sha512:aec0d980d0e75ef074cd5e91573b7107c3873e90f9655aa5e65b2870cf8869b3872dd9011dad0adabedd68277e615269e280667e75718eb076d47057f |
Background: How many MCP packages publish verified provenance →
Dependencies 20 packages
| Packages resolved | 20 |
|---|---|
| Deprecated | 1 |
| Stale | 1 |
| Tree resolution | Complete |
Background: SBOMs and build attestations, explained →
The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability. A tool's description is untrusted text the model reads on every call, which is what makes this list a security surface and not just an inventory: how tool poisoning works →
list_devices ~20
List the devices this agent is paired with through PairOnce.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
pair_device ~165
Pair one of the user's devices (phone or computer) with this agent through PairOnce; needed once per device. Three calls. First call: returns a six-digit code; tell the user to open https://paironce.com on that device, choose "Enter a code" and type it. Second call: waits until they did and returns a safety code; ask the user whether their device shows the same one. Third call: confirm true if they said yes, false if not. Never confirm without asking the user.
| Name | Type | Req | Description |
|---|---|---|---|
| confirm | boolean | – | Third call: whether the user said their device shows the same safety code. |
| wait_seconds | number | – | Second call: how long to wait for the user to type the code, 120 by default, at most 600. |
No output schema declared.
No examples provided.
receive_files ~149
Wait for the user to send files (photos, scans, documents) from one of their paired devices, and save them into a folder here. Tell the user to open https://paironce.com on that device, tap Connect, then choose the files. Returns the saved paths and any messages the user sent.
| Name | Type | Req | Description |
|---|---|---|---|
| device | string | – | Name of a paired device (from list_devices). Optional when only one is paired. |
| folder | string | – | Where to save: a relative path inside the server's folder, with no folder starting with a dot. Default: inbox. |
| wait_seconds | number | – | How long to wait for the user, 120 by default, at most 600. |
No output schema declared.
No examples provided.
request_file ~160
Ask the user for a file from one of their paired devices: their device shows your request with your reason, they choose the file there, and it is saved here (default ./inbox). They may decline.
| Name | Type | Req | Description |
|---|---|---|---|
| device | string | – | Name of a paired device (from list_devices). Optional when only one is paired. |
| folder | string | – | Where to save: a relative path inside the server's folder, with no folder starting with a dot. Default: inbox. |
| purpose | string | yes | What you need and why, in one or two sentences the user reads on their device (at most 300 characters). |
| wait_seconds | number | – | How long to wait for the user, 120 by default, at most 600. |
No output schema declared.
No examples provided.
request_photo ~179
Ask the user for a photo from one of their paired devices (usually their phone), for example of a label, a screen, an error message or a document. Their device shows your request with your reason; they take the photo there and it is saved here (default ./inbox). They may decline.
| Name | Type | Req | Description |
|---|---|---|---|
| device | string | – | Name of a paired device (from list_devices). Optional when only one is paired. |
| folder | string | – | Where to save: a relative path inside the server's folder, with no folder starting with a dot. Default: inbox. |
| purpose | string | yes | What you need and why, in one or two sentences the user reads on their device (at most 300 characters). |
| wait_seconds | number | – | How long to wait for the user, 120 by default, at most 600. |
No output schema declared.
No examples provided.
request_scan ~168
Ask the user to scan paper pages with one of their paired devices (usually their phone): it makes a PDF there with straightened pages, which is saved here (default ./inbox). Their device shows your request with your reason. They may decline.
| Name | Type | Req | Description |
|---|---|---|---|
| device | string | – | Name of a paired device (from list_devices). Optional when only one is paired. |
| folder | string | – | Where to save: a relative path inside the server's folder, with no folder starting with a dot. Default: inbox. |
| purpose | string | yes | What you need and why, in one or two sentences the user reads on their device (at most 300 characters). |
| wait_seconds | number | – | How long to wait for the user, 120 by default, at most 600. |
No output schema declared.
No examples provided.
send_file ~90
Send files from this computer to one of the user's paired devices through PairOnce, end-to-end encrypted. The user accepts each file on that device, and PairOnce must be open there.
| Name | Type | Req | Description |
|---|---|---|---|
| device | string | – | Name of a paired device (from list_devices). Optional when only one is paired. |
| paths | array | yes | Files to send (absolute paths, or relative to the server's folder). |
No output schema declared.
No examples provided.
send_text ~67
Send a message or a link to one of the user's paired devices through PairOnce, end-to-end encrypted. PairOnce must be open there.
| Name | Type | Req | Description |
|---|---|---|---|
| device | string | – | Name of a paired device (from list_devices). Optional when only one is paired. |
| text | string | yes | – |
No output schema declared.
No examples provided.
watch_frames ~306
See what the user sees: ask to watch their camera or screen on one of their paired devices, then get still pictures of it, returned as images you can look at (and saved, default ./inbox/watch). The first call asks; their device shows your reason and they share the camera or the screen there, or decline. Later calls return new stills from the same share, so you can guide them step by step ("now turn the switch on the left"). It ends when they stop, when you call watch_stop, or after 5 minutes without a call; their device ends it after 15 minutes.
| Name | Type | Req | Description |
|---|---|---|---|
| count | number | – | Stills to take now, 1 to 5. Default 1. |
| device | string | – | Name of a paired device (from list_devices). Optional when only one is paired. |
| folder | string | – | Where to save the stills: a relative path inside the server's folder, with no folder starting with a dot. Default: inbox/watch. |
| interval_seconds | number | – | Seconds between those stills, 0.5 to 10. Default 1. |
| purpose | string | – | Needed when not watching yet: what you want to see and why, in one or two sentences the user reads on their device (at most 300 characters). |
| wait_seconds | number | – | When asking: how long to wait for the user to share, 120 by default, at most 600. |
No output schema declared.
No examples provided.
watch_stop ~25
Stop watching the user's camera or screen (see watch_frames). Their device stops sharing.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
How do I install the PairOnce MCP server?
PairOnce runs locally as an npm package, launched with npx -y paironce. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.
npm · paironce
claude mcp add paironce-cli -- npx -y paironce
What is the PairOnce MCP server?
PairOnce is an MCP server listed in the public MCP registry as io.github.paironce/cli. Send files and text between an AI agent and your own paired devices, end-to-end encrypted. This page covers its npm package (paironce).
Is the PairOnce MCP server safe to use?
PairOnce scores 49 out of 100 on VerifyMCP. We found no known CVEs affecting it as of 5 November 2026. It declares no install or post-install scripts. Its build provenance is signed and verified. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.
What tools does the PairOnce MCP server expose?
PairOnce exposes 10 tools: pair_device, list_devices, send_file, send_text, receive_files, and 5 more. Their descriptions and schemas cost roughly 1,329 tokens of context every time the server is loaded.
Is the PairOnce MCP server still maintained?
PairOnce is still listed as active in the MCP registry. We last reached this channel on 5 November 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.
What licence is the PairOnce MCP server under?
PairOnce declares the Apache-2.0 licence, which is OSI-approved. That covers the source only, and says nothing about the cost of any service it calls.