TypeScript SDK

Official SDK for JavaScript/TypeScript agents.

Installation

npm install @dcprotocol/client

Quick Start

import { DcpClient } from '@dcprotocol/client';

const dcp = new DcpClient({
  mode: 'auto',
  agentName: 'my-agent'
});

// Get address
const { address } = await dcp.getAddress('solana');

// Sign transaction
const result = await dcp.signTransaction({
  chain: 'solana',
  transaction: unsignedTx,
  amount: 1.5,
  currency: 'SOL'
});

// Read data
const email = await dcp.read('identity.email');

Configuration

Auto Mode (Default)

Automatically detects if vault is running locally.

const dcp = new DcpClient({
  mode: 'auto',
  agentName: 'my-agent'
});

Local Mode

Connect to local vault directly.

const dcp = new DcpClient({
  mode: 'local',
  agentName: 'my-agent',
  vaultUrl: 'http://127.0.0.1:8420'
});

Remote Mode

For agents on VPS connecting via relay.

const dcp = new DcpClient({
  mode: 'remote',
  agentName: 'my-vps-bot',
  pairingToken: 'token-from-dcp-pairing-start',
  relayUrl: 'wss://relay.dcp.1ly.store'
});

Methods

getAddress(chain)

const { address } = await dcp.getAddress('solana');
console.log(address); // "5Yz..."

signTransaction(params)

const result = await dcp.signTransaction({
  chain: 'solana',
  transaction: unsignedTx,
  amount: 1.5,
  currency: 'SOL',
  destination: '5Yz...'
});
console.log(result.signedTransaction);

read(scope)

const email = await dcp.read('identity.email');
const apiKey = await dcp.read('credentials.api.openai');

write(scope, value)

await dcp.write('identity.email', 'you@example.com');
await dcp.write('credentials.api.openai', 'sk-...');

Complete Example

import { DcpClient } from '@dcprotocol/client';

async function main() {
  const dcp = new DcpClient({ agentName: 'trading-bot' });

  // Get wallet address
  const { address } = await dcp.getAddress('solana');
  console.log('Wallet:', address);

  // Read API key
  const apiKey = await dcp.read('credentials.api.exchange');

  // Sign transaction
  const result = await dcp.signTransaction({
    chain: 'solana',
    transaction: buildTransaction(),
    amount: 2.5,
    currency: 'SOL'
  });

  // Broadcast
  await broadcast(result.signedTransaction);
}

main();