bpc-client
Python client SDK for the BPC (Bound Pair Credentials) protocol — cryptographic device-binding and per-request signing for APIs.
BPC replaces static API keys with a multi-factor, per-request signing protocol. Every request is signed with an ECDSA P-256 device key, a user-chosen secret (HMAC-derived), a fresh nonce, and a timestamp. Stolen credentials are useless without the device key.
Install
pip install bpc-client
3-Line Integration
from bpc_client import BPCClient
# Register a new pair (development mode — auto-approved)
client = BPCClient.register(base_url="https://api.example.com", name="my-app", secret="MySecret1!")
# Every request is automatically signed
response = client.get("/api/data")
response = client.post("/api/items", json={"name": "test"})
CLI
bpc pair register --url https://api.example.com --name my-app --secret MySecret1!
bpc pair list
bpc status --name my-app
bpc audit --name my-app
bpc request GET /api/data --name my-app
MCP Server (Claude Desktop)
{
"mcpServers": {
"bpc": { "command": "bpc-mcp" }
}
}
Protocol
BPC implements a 12-step server-side verification pipeline: device key (ECDSA P-256) + secret (HMAC-SHA-256) + nonce (UUID) + timestamp (60s window) + body hash (SHA-256) + scope enforcement.
See the full spec.
Release files for bpc-client 1.0.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| bpc_client-1.0.0.tar.gz | 13.4 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| bpc_client-1.0.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size:27.9 kB
Release files / bpc_client-1.0.0.tar.gz
| Download URL | bpc_client-1.0.0.tar.gz |
|---|---|
| Size | 13.4 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
2ea1e4844eea2d4541c01cbc7ff05b4fb8dbd345f00300edccfbac813af7bec6
|
|
BLAKE2b-256 checksum How to use checksums |
96f9a2e961c67c0a8f1079c547de0c3758a792e7e31dfea9543470fea50f4bff
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.11.0rc1
|
Release files / bpc_client-1.0.0-py3-none-any.whl
| Download URL | bpc_client-1.0.0-py3-none-any.whl |
|---|---|
| Size | 14.5 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
9723a8fb86c4c81f87f4fc6624323c93ce6b23bfad8dce375ce6c7e91997b6a1
|
|
BLAKE2b-256 checksum How to use checksums |
c4dd6c23c6285c0f6ba01080af2db0cac7f460873379e61e6c90c403e5beff50
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.11.0rc1
|