SerenAI

Pay Per Call Agentic Commerce

PublisherResponse

Publisher response (excludes sensitive fields)

Properties

PropertyTypeRequiredDescription
a2a_agent_card any No Cached A2A agent card
a2a_endpoint_url string,null No A2A endpoint base URL (for compute_type = agent)
a2a_health_status string,null No A2A health status: unknown, healthy, unhealthy, unreachable
accepted_assets array,null No Accepted assets for payment
allowed_passthrough_headers Array<string> Yes
api_key_header string,null No Header name to inject upstream_api_key into (e.g., "Authorization", "X-API-Key")
api_key_query_param string,null No Query parameter name to inject upstream_api_key into (e.g., "api_key", "apiKey")
api_url string,null No External API URL (for integration_type = api)
billing_model string Yes
branch_id string,null No SerenDB branch ID (for database_type = serendb)
capabilities Array<string> Yes Publisher-declared capabilities for task matching
categories Array<string> Yes
compute_type any No
created_at string Yes
database_config any No Provider config (sensitive fields redacted)
database_name string,null No Database name within the SerenDB project
database_type any No
description string,null No
email string,null No Publisher contact email for notifications and support
endpoints array,null No Structured endpoint definitions for LLM discoverability and access control
gateway_fee_percent string Yes
id string Yes
integration_type any No
is_active boolean Yes
is_verified boolean Yes
logo_url string,null No
mcp_capabilities any No Cached MCP capabilities (tools, resources, prompts)
mcp_endpoint string,null No MCP server endpoint URL (for integration_type = mcp)
name string Yes
oauth_provider_id string,null No OAuth provider ID for BYOC (Bring Your Own Credentials) authentication
ownership_tracking_enabled boolean Yes
pricing array,null No Pricing config per asset (if included)
project_id string,null No SerenDB project ID (for database_type = serendb)
protected_operations any No
publisher_category PublisherCategory Yes Publisher category: database, integration, or compute
publisher_type PublisherType Yes
request_content_type string Yes Content-Type for upstream API requests
requires_user_oauth boolean Yes If true, users must connect via OAuth before using this publisher
resource_description string,null No
resource_id_response_path string,null No
resource_id_url_pattern string,null No
resource_name string,null No
routing any No
slug string Yes
token_cache_ttl_seconds integer,null No TTL for cached exchanged tokens in seconds
token_exchange_method string,null No HTTP method for exchange endpoint (POST or GET)
token_exchange_mode string,null No How to send Seren token: header, body, or query
token_exchange_url string,null No URL to call for exchanging Seren API keys for publisher auth tokens
token_response_field string,null No JSON field in exchange response containing the token
total_queries integer Yes
undocumented_endpoint_policy UndocumentedEndpointPolicy Yes Policy for handling requests to paths not in the endpoints catalog
unique_agents_served integer Yes
updated_at string Yes
upstream_cost_response_path string,null No Dot-separated path to upstream cost in response body (for pay_per_use and prepaid passthrough billing). Example: "usage.cost"
upstream_headers any Yes Non-sensitive headers to send to upstream API
usage_examples array,null No Usage examples showing how to call the publisher's API
use_cases Array<string> Yes Human-readable use case descriptions
verification_expires_at string,null No When verification expires (NULL = no expiry)
wallet_address WalletAddress Yes
wallet_network_id string Yes Network for the wallet address
View JSON Schema
{
  "type": "object",
  "description": "Publisher response (excludes sensitive fields)",
  "required": [
    "id",
    "name",
    "slug",
    "categories",
    "capabilities",
    "use_cases",
    "publisher_type",
    "wallet_address",
    "wallet_network_id",
    "publisher_category",
    "billing_model",
    "gateway_fee_percent",
    "allowed_passthrough_headers",
    "request_content_type",
    "upstream_headers",
    "ownership_tracking_enabled",
    "undocumented_endpoint_policy",
    "is_active",
    "is_verified",
    "total_queries",
    "unique_agents_served",
    "created_at",
    "updated_at",
    "requires_user_oauth"
  ],
  "properties": {
    "a2a_agent_card": {
      "description": "Cached A2A agent card"
    },
    "a2a_endpoint_url": {
      "type": [
        "string",
        "null"
      ],
      "description": "A2A endpoint base URL (for compute_type = agent)"
    },
    "a2a_health_status": {
      "type": [
        "string",
        "null"
      ],
      "description": "A2A health status: unknown, healthy, unhealthy, unreachable"
    },
    "accepted_assets": {
      "type": [
        "array",
        "null"
      ],
      "items": {
        "$ref": "#/components/schemas/AssetInfo"
      },
      "description": "Accepted assets for payment"
    },
    "allowed_passthrough_headers": {
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "api_key_header": {
      "type": [
        "string",
        "null"
      ],
      "description": "Header name to inject upstream_api_key into (e.g., \"Authorization\", \"X-API-Key\")"
    },
    "api_key_query_param": {
      "type": [
        "string",
        "null"
      ],
      "description": "Query parameter name to inject upstream_api_key into (e.g., \"api_key\", \"apiKey\")"
    },
    "api_url": {
      "type": [
        "string",
        "null"
      ],
      "description": "External API URL (for integration_type = api)"
    },
    "billing_model": {
      "type": "string"
    },
    "branch_id": {
      "type": [
        "string",
        "null"
      ],
      "format": "uuid",
      "description": "SerenDB branch ID (for database_type = serendb)"
    },
    "capabilities": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "Publisher-declared capabilities for task matching"
    },
    "categories": {
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "compute_type": {
      "oneOf": [
        {
          "type": "null"
        },
        {
          "$ref": "#/components/schemas/ComputeType",
          "description": "Compute type when publisher_category = compute"
        }
      ]
    },
    "created_at": {
      "type": "string",
      "format": "date-time"
    },
    "database_config": {
      "description": "Provider config (sensitive fields redacted)"
    },
    "database_name": {
      "type": [
        "string",
        "null"
      ],
      "description": "Database name within the SerenDB project"
    },
    "database_type": {
      "oneOf": [
        {
          "type": "null"
        },
        {
          "$ref": "#/components/schemas/DatabaseType",
          "description": "Database type when publisher_category = database"
        }
      ]
    },
    "description": {
      "type": [
        "string",
        "null"
      ]
    },
    "email": {
      "type": [
        "string",
        "null"
      ],
      "description": "Publisher contact email for notifications and support"
    },
    "endpoints": {
      "type": [
        "array",
        "null"
      ],
      "items": {
        "$ref": "#/components/schemas/EndpointDefinition"
      },
      "description": "Structured endpoint definitions for LLM discoverability and access control"
    },
    "gateway_fee_percent": {
      "type": "string"
    },
    "id": {
      "type": "string",
      "format": "uuid"
    },
    "integration_type": {
      "oneOf": [
        {
          "type": "null"
        },
        {
          "$ref": "#/components/schemas/IntegrationType",
          "description": "Integration type when publisher_category = integration"
        }
      ]
    },
    "is_active": {
      "type": "boolean"
    },
    "is_verified": {
      "type": "boolean"
    },
    "logo_url": {
      "type": [
        "string",
        "null"
      ]
    },
    "mcp_capabilities": {
      "description": "Cached MCP capabilities (tools, resources, prompts)"
    },
    "mcp_endpoint": {
      "type": [
        "string",
        "null"
      ],
      "description": "MCP server endpoint URL (for integration_type = mcp)"
    },
    "name": {
      "type": "string"
    },
    "oauth_provider_id": {
      "type": [
        "string",
        "null"
      ],
      "format": "uuid",
      "description": "OAuth provider ID for BYOC (Bring Your Own Credentials) authentication"
    },
    "ownership_tracking_enabled": {
      "type": "boolean"
    },
    "pricing": {
      "type": [
        "array",
        "null"
      ],
      "items": {
        "$ref": "#/components/schemas/PricingConfigResponse"
      },
      "description": "Pricing config per asset (if included)"
    },
    "project_id": {
      "type": [
        "string",
        "null"
      ],
      "format": "uuid",
      "description": "SerenDB project ID (for database_type = serendb)"
    },
    "protected_operations": {},
    "publisher_category": {
      "$ref": "#/components/schemas/PublisherCategory",
      "description": "Publisher category: database, integration, or compute"
    },
    "publisher_type": {
      "$ref": "#/components/schemas/PublisherType"
    },
    "request_content_type": {
      "type": "string",
      "description": "Content-Type for upstream API requests"
    },
    "requires_user_oauth": {
      "type": "boolean",
      "description": "If true, users must connect via OAuth before using this publisher"
    },
    "resource_description": {
      "type": [
        "string",
        "null"
      ]
    },
    "resource_id_response_path": {
      "type": [
        "string",
        "null"
      ]
    },
    "resource_id_url_pattern": {
      "type": [
        "string",
        "null"
      ]
    },
    "resource_name": {
      "type": [
        "string",
        "null"
      ]
    },
    "routing": {
      "oneOf": [
        {
          "type": "null"
        },
        {
          "$ref": "#/components/schemas/GeoRoutingConfig",
          "description": "Geographic routing configuration (if publisher has geo-restricted upstream API)"
        }
      ]
    },
    "slug": {
      "type": "string"
    },
    "token_cache_ttl_seconds": {
      "type": [
        "integer",
        "null"
      ],
      "format": "int32",
      "description": "TTL for cached exchanged tokens in seconds"
    },
    "token_exchange_method": {
      "type": [
        "string",
        "null"
      ],
      "description": "HTTP method for exchange endpoint (POST or GET)"
    },
    "token_exchange_mode": {
      "type": [
        "string",
        "null"
      ],
      "description": "How to send Seren token: header, body, or query"
    },
    "token_exchange_url": {
      "type": [
        "string",
        "null"
      ],
      "description": "URL to call for exchanging Seren API keys for publisher auth tokens"
    },
    "token_response_field": {
      "type": [
        "string",
        "null"
      ],
      "description": "JSON field in exchange response containing the token"
    },
    "total_queries": {
      "type": "integer",
      "format": "int64"
    },
    "undocumented_endpoint_policy": {
      "$ref": "#/components/schemas/UndocumentedEndpointPolicy",
      "description": "Policy for handling requests to paths not in the endpoints catalog"
    },
    "unique_agents_served": {
      "type": "integer",
      "format": "int64"
    },
    "updated_at": {
      "type": "string",
      "format": "date-time"
    },
    "upstream_cost_response_path": {
      "type": [
        "string",
        "null"
      ],
      "description": "Dot-separated path to upstream cost in response body (for pay_per_use and prepaid passthrough billing).\nExample: \"usage.cost\""
    },
    "upstream_headers": {
      "description": "Non-sensitive headers to send to upstream API"
    },
    "usage_examples": {
      "type": [
        "array",
        "null"
      ],
      "items": {
        "$ref": "#/components/schemas/UsageExample"
      },
      "description": "Usage examples showing how to call the publisher's API"
    },
    "use_cases": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "Human-readable use case descriptions"
    },
    "verification_expires_at": {
      "type": [
        "string",
        "null"
      ],
      "format": "date-time",
      "description": "When verification expires (NULL = no expiry)"
    },
    "wallet_address": {
      "$ref": "#/components/schemas/WalletAddress"
    },
    "wallet_network_id": {
      "type": "string",
      "description": "Network for the wallet address"
    }
  }
}