@@ -33,7 +33,7 @@ The SDK is also available as a Docker image from GitHub Container Registry:
3333docker pull ghcr.io/thirdkeyai/symbiont-sdk-python:latest
3434
3535# Or pull a specific version
36- docker pull ghcr.io/thirdkeyai/symbiont-sdk-python:v0.2 .0
36+ docker pull ghcr.io/thirdkeyai/symbiont-sdk-python:v0.5 .0
3737```
3838
3939#### Running with Docker
@@ -631,6 +631,67 @@ print(f"Total vectors: {vector_count}")
631631client.delete_vector_collection("old_collection")
632632```
633633
634+ ## AgentPin: Credential Verification
635+
636+ The SDK integrates with [ AgentPin] ( https://github.com/ThirdKeyAI/agentpin ) for domain-anchored cryptographic identity verification of AI agents. AgentPin operations run client-side — no Symbiont Runtime required.
637+
638+ ### Key Generation & Credential Issuance
639+
640+ ``` python
641+ from symbiont import Client
642+
643+ client = Client()
644+
645+ # Generate P-256 key pair
646+ private_key, public_key = client.agentpin.generate_key_pair()
647+ kid = client.agentpin.generate_key_id(public_key)
648+
649+ # Issue an ES256 JWT credential
650+ jwt = client.agentpin.issue_credential(
651+ private_key_pem = private_key,
652+ kid = kid,
653+ issuer = " example.com" ,
654+ agent_id = " data-analyzer" ,
655+ capabilities = [" read:data" , " write:reports" ],
656+ ttl_secs = 3600 ,
657+ )
658+ ```
659+
660+ ### Credential Verification
661+
662+ ``` python
663+ # Online verification (fetches discovery document automatically)
664+ result = client.agentpin.verify_credential(jwt)
665+ print (f " Valid: { result.valid} , Agent: { result.agent_id} " )
666+
667+ # Offline verification with pre-fetched documents
668+ discovery = client.agentpin.fetch_discovery_document(" example.com" )
669+ offline_result = client.agentpin.verify_credential_offline(jwt, discovery)
670+
671+ # Trust bundle verification (fully offline, no network)
672+ bundle = client.agentpin.create_trust_bundle()
673+ bundle_result = client.agentpin.verify_credential_with_bundle(jwt, bundle)
674+ ```
675+
676+ ### Discovery & Key Pinning
677+
678+ ``` python
679+ # Fetch and validate discovery documents
680+ doc = client.agentpin.fetch_discovery_document(" example.com" )
681+ client.agentpin.validate_discovery_document(doc, " example.com" )
682+
683+ # TOFU key pinning
684+ pin_store = client.agentpin.create_pin_store()
685+
686+ # Trust bundle persistence
687+ client.agentpin.save_trust_bundle(bundle, " trust-bundle.json" )
688+ loaded = client.agentpin.load_trust_bundle(" trust-bundle.json" )
689+
690+ # JWK utilities
691+ jwk = client.agentpin.pem_to_jwk(public_key, kid)
692+ pem = client.agentpin.jwk_to_pem(jwk)
693+ ```
694+
634695## API Reference
635696### Enhanced Client Methods
636697
@@ -1063,6 +1124,21 @@ pytest
10631124- pydantic
10641125- python-dotenv
10651126
1127+ ## What's New in v0.5.0
1128+
1129+ ### AgentPin Integration
1130+
1131+ - ** AgentPinClient** — Client-side credential verification, discovery, and trust bundle support via the ` agentpin ` PyPI package
1132+ - ` client.agentpin.verify_credential() ` — Full 12-step online verification
1133+ - ` client.agentpin.verify_credential_offline() ` — Offline verification with pre-fetched documents
1134+ - ` client.agentpin.verify_credential_with_bundle() ` — Trust bundle-based verification (no network)
1135+ - ` client.agentpin.fetch_discovery_document() ` — Fetch ` .well-known/agent-identity.json `
1136+ - ` client.agentpin.issue_credential() ` — Issue ES256 JWT credentials
1137+ - ` client.agentpin.generate_key_pair() ` — P-256 key generation
1138+ - Key pinning (TOFU), trust bundle persistence, and JWK utilities
1139+
1140+ See the [ AgentPin section] ( #agentpin-credential-verification ) above for usage examples.
1141+
10661142## What's New in v0.3.0
10671143
10681144### Major New Features
0 commit comments