Releases: adcontextprotocol/adcp-client
v3.11.1
v3.11.0
v3.10.0
Minor Changes
-
d7f6ce7: Add OAuth discovery utilities for checking if MCP servers support OAuth authentication.
New exports:
discoverOAuthMetadata(agentUrl)- Fetches OAuth Authorization Server Metadata from/.well-known/oauth-authorization-serversupportsOAuth(agentUrl)- Simple boolean check if server supports OAuthsupportsDynamicRegistration(agentUrl)- Check if server supports dynamic client registrationOAuthMetadatatype - RFC 8414 Authorization Server Metadata structureDiscoveryOptionstype - Options for discovery requests (timeout, custom fetch)
Patch Changes
-
d7f6ce7: Export Account domain types from main entry point
Account- billing account interfaceListAccountsRequest- request params for listing accountsListAccountsResponse- response payload with accounts array
The types existed in tools.generated.ts but weren't explicitly exported from @adcp/client.
v3.9.0
Minor Changes
-
1e919b7: ### Breaking Changes
TaskExecutor behavior changes for async statuses:
workingstatus: Now returns immediately as a successful result (success: true,status: 'working') instead of polling until completion or timeout. Callers should use the returnedtaskIdto poll for completion or set up webhooks.input-requiredstatus: Now returns as a successful paused state (success: true,status: 'input-required') instead of throwingInputRequiredErrorwhen no handler is provided. Access the input request viaresult.metadata.inputRequest.
Migration:
// Before: catching InputRequiredError try { const result = await executor.executeTask(agent, task, params); } catch (error) { if (error instanceof InputRequiredError) { // Handle input request } } // After: checking result status const result = await executor.executeTask(agent, task, params); if (result.status === 'input-required') { const { question, field } = result.metadata.inputRequest; // Handle input request }
Conversation context changes:
wasFieldDiscussed(field): Now returnstrueonly if the agent explicitly requested that field via aninput-requiredresponse (previously checked if any message contained the field).getPreviousResponse(field): Now returns the user's response to a specific field request (previously returned any message content containing the field).
New Features
- Added v3 protocol testing scenarios:
capability_discovery- Testget_adcp_capabilitiesand verify v3 protocol supportgovernance_property_lists- Test property list CRUD operationsgovernance_content_standards- Test content standards listing and calibrationsi_session_lifecycle- Test full SI session: initiate → messages → terminatesi_availability- Quick check for SI offering availability
- Exported
ProtocolClientand related functions from main library for testing purposes
-
38ba6a6: Add OAuth support for MCP servers
- New OAuth module in
src/lib/auth/oauth/with pluggable flow handlers MCPOAuthProviderimplements MCP SDK'sOAuthClientProviderinterfaceCLIFlowHandlerfor browser-based OAuth with local callback server- OAuth tokens stored directly in AgentConfig alongside static auth tokens
- CLI flags:
--oauthfor OAuth auth,--clear-oauthto clear tokens --save-auth <alias> <url> --oauthto save agents with OAuth- Auto-detection of OAuth requirement when MCP servers return UnauthorizedError
- Helper functions:
hasValidOAuthTokens,clearOAuthTokens,getEffectiveAuthToken - Security fix: use spawn instead of exec for browser open to prevent command injection
- New OAuth module in
v3.8.1
Patch Changes
-
7365296: Fix schema validation for v2 pricing options in get_products responses
When servers return v2-style pricing options (rate, is_fixed, price_guidance.floor), schema validation now normalizes them to v3 format (fixed_price, floor_price) before validation. This ensures v2 server responses pass validation against v3 schemas.
v3.8.0
Minor Changes
-
d3869a1: Add ADCP v3.0 compatibility while preserving v2.5/v2.6 backward compatibility
New Features:
- Capability detection via
get_adcp_capabilitiestool or synthetic detection from tool list - v3 request/response adaptation for pricing fields (fixed_price, floor_price)
- Authoritative location redirect handling with loop detection and HTTPS validation
- Server-side adapter interfaces (ContentStandardsAdapter, PropertyListAdapter, ProposalManager, SISessionManager)
- New domains: governance, sponsored-intelligence, protocol
Adapters:
- Pricing adapter: normalizes v2 (rate, is_fixed) to v3 (fixed_price, floor_price)
- Creative adapter: handles v2/v3 creative assignment field differences
- Format renders adapter: normalizes format render structures
- Preview normalizer: handles v2/v3 preview response differences
Breaking Change Handling:
- All v2 responses automatically normalized to v3 API
- Clients always see v3 field names regardless of server version
- v2 servers receive adapted requests with v2 field names
- Capability detection via
Patch Changes
- d3869a1: Fix multi-agent partial failure handling using Promise.allSettled
v3.7.1
Patch Changes
- 3a60592: Fix JavaScript syntax error in testing UI and update hono for security
- UI Fix: Resolved syntax error in
index.htmldimension parsing logic that causedtoggleAddAgentand other functions to be undefined. The invalid} else { } else if {structure was corrected to proper nested conditionals. - Security: Updated
honofrom 4.11.3 to 4.11.4 to fix high-severity JWT algorithm confusion vulnerabilities (GHSA-3vhc-576x-3qv4, GHSA-f67f-6cw9-8mq4).
- UI Fix: Resolved syntax error in
v3.7.0
Minor Changes
- 302089a: Add AdCP v2.6 support with backward compatibility for Format schema changes
- New
assetsfield in Format schema (replaces deprecatedassets_required) - Added format-assets utilities:
getFormatAssets(),getRequiredAssets(),getOptionalAssets(), etc. - Updated testing framework to use new utilities
- Added URL input option for image/video assets in testing UI
- Added 21 unit tests for format-assets utilities
- New
v3.6.0
Minor Changes
-
2749985: Add
testsubcommand to CLI for running agent test scenariosNew CLI command enables testing AdCP agents directly from the command line:
# List available test scenarios npx @adcp/client test --list-scenarios # Run discovery tests against the built-in test agent npx @adcp/client test test # Run a specific scenario npx @adcp/client test test full_sales_flow # Test your own agent npx @adcp/client test https://my-agent.com discovery --auth $TOKEN # JSON output for CI pipelines npx @adcp/client test test discovery --json
Available scenarios include: health_check, discovery, create_media_buy, full_sales_flow,
error_handling, validation, pricing_edge_cases, and more.The command exits with code 0 on success, 3 on test failure, making it suitable for CI pipelines.
v3.5.2
Patch Changes
-
fb041b6: Fix validation error when agents return empty publisher_domains array
The JSON Schema defines
minItems: 1for publisher_domains, which caused validation to fail when agents returned empty arrays. This is a common scenario when an agent isn't authorized for any publishers yet.The fix relaxes the generated TypeScript types and Zod schemas to accept empty arrays by:
- Removing
minItemsconstraints during TypeScript type generation - Converting tuple patterns (
z.tuple([]).rest()) to arrays (z.array()) in Zod schema generation
This change improves interoperability with real-world agents that may return empty arrays for optional array fields.
- Removing