Valid · Authentication Profile

Valid Authentication

Authentication

Valid declares 3 security scheme(s) across its OpenAPI definitions.

CompanyAdvertisingMarketingArtificial IntelligenceCreativeMedia BuyingInfluencersMCPAgentsPerformance Marketing
Methods: Schemes: 3 OAuth flows: API key in:

Security Schemes

oauth2_authorization_code oauth2
outer_api_key apiKey
· in: header ()
mcp_bearer http
scheme: bearer

Source

Authentication Profile

valid-authentication.yml Raw ↑
generated: '2026-08-12'
method: probed
source: >-
  https://mcp.valid.co/.well-known/oauth-authorization-server and
  https://mcp.valid.co/.well-known/oauth-protected-resource (both HTTP 200,
  fetched 2026-08-12), plus observed WWW-Authenticate and error responses.
docs: null
docs_note: >-
  Valid publishes no developer authentication page. This profile is derived
  entirely from the machine-readable metadata the server itself serves and from
  live unauthenticated responses.
api: Valid Chat With Your Ads MCP Server
schemes:
- name: oauth2_authorization_code
  type: oauth2
  flow: authorizationCode
  authorization_url: https://mcp.valid.co/oauth/authorize
  token_url: https://mcp.valid.co/oauth/token
  registration_url: https://mcp.valid.co/oauth/register
  refresh_supported: true
  scopes:
    openid: OpenID Connect subject identifier
    email: Account email address
    profile: Basic profile claims
  pkce:
    required: unknown
    code_challenge_methods_supported: [S256, plain]
    note: >-
      The server advertises `plain` alongside `S256`. RFC 7636 §4.2 and the
      OAuth 2.1 draft both require S256 where the client can support it; offering
      `plain` at all is a downgrade an attacker can request. This is the single
      weakest point in an otherwise strong auth posture.
  dynamic_client_registration:
    supported: true
    endpoint: https://mcp.valid.co/oauth/register
    spec: RFC 7591
    note: GET returns 405 Method Not Allowed; registration is POST-only, as specified.
  token_endpoint_auth_methods_supported:
  - client_secret_basic
  - client_secret_post
  - none
  bearer_methods_supported: [header]
- name: outer_api_key
  type: apiKey
  in: header
  name_note: >-
    The header name is not published. An unauthenticated request to any gated path
    returns HTTP 407 {"error":"API key missing"}, which names the credential class
    but not the header. HTTP 407 is Proxy Authentication Required and the response
    carries no Proxy-Authenticate header, so this gate is non-conformant with
    RFC 9110 §15.5.8.
  applies_to: >-
    Every path on mcp.valid.co and v1.valid-gke-data-api.com EXCEPT /health and the
    three OAuth/OIDC metadata documents.
- name: mcp_bearer
  type: http
  scheme: bearer
  applies_to: https://mcp.valid.co/api/mcp/
  evidence: >-
    HTTP 401 with `www-authenticate: Bearer` and body {"detail":"Not authenticated"}
    on an anonymous JSON-RPC tools/list POST.
openid_connect:
  discovery_url: https://mcp.valid.co/.well-known/openid-configuration
  status: 200
  conformant: false
  note: >-
    The document served at the OIDC discovery path is byte-identical to the RFC 8414
    OAuth document. It omits every OIDC-required field — no `jwks_uri`, no
    `userinfo_endpoint`, no `subject_types_supported`, no
    `id_token_signing_alg_values_supported` — so despite advertising the `openid`
    scope this is an OAuth 2.0 authorization server metadata document served at an
    OIDC path, not an OpenID Provider configuration.
posture:
  summary: >-
    Strong for an unadvertised agent endpoint: OAuth 2.1-shaped authorization code
    flow with refresh tokens, PKCE, RFC 7591 dynamic client registration, RFC 8414
    authorization server metadata and RFC 9728 protected resource metadata — the
    full MCP authorization discovery chain, correctly wired. Weakened by `plain`
    PKCE remaining on offer, a non-conformant 407 outer gate, and the absence of any
    published authentication documentation.