{
  "version": "2.0",
  "verified_at": "2026-10-12",
  "services": [
    {
      "id": "abliteration-ai",
      "name": "abliteration.ai",
      "operator": "Abliteration AI, Inc.",
      "service_type": "direct_model_api",
      "url": "https://docs.abliteration.ai",
      "description": "An OpenAI- and Anthropic-compatible API serving three operator-modified open-weight models with refusal behavior removed, alongside an optional request-policy gateway.",
      "service_boundary": "Represents the operator's public inference API and its policy gateway, not the upstream open-weight models it derives from, the console tooling, or negotiated enterprise arrangements.",
      "delivery_modes": [
        "on_demand"
      ],
      "model_sources": [
        "first_party"
      ],
      "api_styles": [
        "openai_compatible",
        "anthropic_compatible",
        "service_native"
      ],
      "regional_controls": "No customer-selectable region is exposed in the API or the developer documentation. The data-handling page names the United States as the default processing region and offers an European Union residency option that keeps prompts and responses on in-region infrastructure, with account, billing, and usage metadata handled globally. Residency and customer-managed key options are not self-serve and direct the reader to contact the operator; the underlying cloud is named only as major cloud providers.",
      "retention_controls": "The operator states that prompts, completions, and image uploads are processed in memory, are never stored, and are never used to train or fine-tune a model, retaining only token counts, timestamps, model identifiers, status codes, and billing metadata. Two exceptions are documented: web search and web fetch pass the query or target to a third-party provider under that provider's retention policy, and the console training-data generator stores generated datasets. The zero-retention statement is a product-page claim; the terms of service commit only to prompts and outputs being processed transiently and not stored by default.",
      "routing": "Callers name one of three model identifiers, and no cross-provider routing, fallback, or steering is documented. A parallel policy surface mirrors each compatible endpoint and applies per-project evaluation with allow, rewrite, summary, escalate, and refuse decisions, shadow and canary rollout, and automatic rollback when negative decisions spike.",
      "customization": "No fine-tuning, adapter training, or customer-weight deployment is documented. Customization is per request: reasoning-effort control, structured outputs, tool calling, server-side web search and fetch, per-request moderation categories, and project-scoped keys. Version pinning is not exposed, and the model identifiers are aliases whose underlying base has already been changed once.",
      "strengths": [
        "Three API surfaces share one host, with a compatibility matrix that marks unsupported features rather than eliding them.",
        "Retention is documented per endpoint, and the exceptions where it does not apply are named rather than buried.",
        "Rate limits are published as numbers for every tier at three enforcement scopes, with standard headers and retry semantics."
      ],
      "tradeoffs": [
        "The zero-retention promise appears on product pages while the terms of service commit only to transient processing by default.",
        "One synchronous path on one host, with no batch, reserved capacity, dedicated endpoint, regional endpoint, or documented failover.",
        "No service-level agreement, data-processing agreement, sub-processor list, or third-party audit attestation is published, and the base model's provenance is undisclosed."
      ],
      "score_profile": "inference_service",
      "score": {
        "operational_maturity": 5.4,
        "data_governance": 6.2,
        "regional_deployment_control": 3.8,
        "serving_flexibility": 3.6,
        "api_interoperability": 8.2,
        "traffic_resilience": 4.4,
        "customization_lifecycle": 4.6,
        "documentation_transparency": 6.8,
        "overall": 5.35
      },
      "terms": {
        "kind": "web_terms",
        "label": "abliteration.ai Terms of Service",
        "url": "https://abliteration.ai/terms-of-service",
        "verified_at": "2026-09-01"
      },
      "evidence": [
        {
          "kind": "web",
          "label": "Data handling and retention",
          "url": "https://abliteration.ai/data-handling",
          "verified_at": "2026-09-01"
        },
        {
          "kind": "web",
          "label": "API compatibility matrix",
          "url": "https://docs.abliteration.ai/compatibility-matrix",
          "verified_at": "2026-09-01"
        },
        {
          "kind": "web",
          "label": "Rate limits by tier",
          "url": "https://docs.abliteration.ai/rate-limits",
          "verified_at": "2026-09-01"
        },
        {
          "kind": "web",
          "label": "Model catalog and base-model derivation",
          "url": "https://docs.abliteration.ai/models",
          "verified_at": "2026-09-01"
        }
      ],
      "verified_at": "2026-09-01",
      "trust": {
        "verified_at": "2026-09-12",
        "properties": {
          "response_integrity": {
            "status": "undocumented",
            "note": "No signature, attestation, or equivalent mechanism for verifying that a response arrived unaltered from the model appears in the API reference or the security documentation.",
            "url": "https://docs.abliteration.ai",
            "scope": "abliteration.ai documentation, for the abliteration.ai API",
            "verified_at": "2026-09-12"
          },
          "upstream_disclosure": {
            "status": "documented_yes",
            "note": "The data-handling page states the operator processes the content: \"Prompts, completions, and images are processed in memory and never stored by default.\" No subprocessor is named.",
            "url": "https://abliteration.ai/data-handling",
            "scope": "abliteration.ai data-handling page, for the abliteration.ai API",
            "verified_at": "2026-09-12"
          },
          "credential_handling": {
            "status": "documented_no",
            "note": "The API offers no customer-supplied-key path: the authentication page says \"Generate keys in the console.\" and documents only bearer tokens issued there.",
            "url": "https://docs.abliteration.ai/authentication",
            "scope": "abliteration.ai authentication page, for the abliteration.ai API",
            "verified_at": "2026-09-12"
          },
          "cache_isolation": {
            "status": "undocumented",
            "note": "The compatibility matrix lists \"Automatic prompt caching\" as a feature and no page states how a cache is scoped.",
            "url": "https://docs.abliteration.ai/compatibility-matrix",
            "scope": "abliteration.ai compatibility matrix, for the abliteration.ai API",
            "verified_at": "2026-09-12"
          },
          "vulnerability_disclosure": {
            "status": "undocumented",
            "note": "No security contact or disclosure policy appears in the terms of service or the documentation, and no security.txt is served.",
            "url": "https://abliteration.ai/terms-of-service",
            "scope": "abliteration.ai terms of service, for the abliteration.ai API",
            "verified_at": "2026-09-12"
          },
          "independent_audit": {
            "status": "undocumented",
            "note": "No SOC 2, ISO 27001, or equivalent attestation is named; the terms say only that payments are handled by a PCI-compliant processor.",
            "url": "https://abliteration.ai/terms-of-service",
            "scope": "abliteration.ai terms of service, for the abliteration.ai API",
            "verified_at": "2026-09-12"
          }
        },
        "findings": []
      }
    },
    {
      "id": "ai21-studio",
      "name": "AI21 Studio",
      "operator": "AI21 Labs",
      "service_type": "direct_model_api",
      "url": "https://docs.ai21.com/",
      "description": "AI21 Labs' direct developer API for Jamba language models and task-oriented language services.",
      "service_boundary": "Represents AI21 Studio's direct API, not AI21 models served through Bedrock or other platforms and not AI21's end-user applications.",
      "delivery_modes": [
        "on_demand",
        "batch"
      ],
      "model_sources": [
        "first_party"
      ],
      "api_styles": [
        "service_native",
        "openai_compatible"
      ],
      "regional_controls": "The reviewed public direct-API documentation does not establish customer-selected processing regions.",
      "retention_controls": "Data handling follows AI21's service terms and enterprise arrangements; stateful or batch features require feature-specific review.",
      "routing": "Customers select AI21-operated models rather than upstream providers.",
      "customization": "Customization and enterprise deployment options are eligibility- and contract-dependent.",
      "strengths": [
        "Direct access to AI21's first-party language models.",
        "Official compatibility guidance supports common client conventions."
      ],
      "tradeoffs": [
        "The direct catalog is narrower than multi-publisher clouds.",
        "Public residency details are limited."
      ],
      "score_profile": "inference_service",
      "score": {
        "operational_maturity": 7.5,
        "data_governance": 6.2,
        "regional_deployment_control": 4.0,
        "serving_flexibility": 6.5,
        "api_interoperability": 8.0,
        "traffic_resilience": 4.8,
        "customization_lifecycle": 6.0,
        "documentation_transparency": 7.2,
        "overall": 6.28
      },
      "terms": {
        "kind": "web_terms",
        "label": "AI21 Terms of Service",
        "url": "https://www.ai21.com/terms-of-service/",
        "verified_at": "2026-08-28"
      },
      "evidence": [
        {
          "kind": "web",
          "label": "AI21 developer documentation",
          "url": "https://docs.ai21.com/",
          "verified_at": "2026-08-28"
        }
      ],
      "verified_at": "2026-08-28",
      "trust": {
        "verified_at": "2026-09-12",
        "properties": {
          "response_integrity": {
            "status": "undocumented",
            "note": "No signature, attestation, or equivalent mechanism for verifying that a response arrived unaltered from the model appears in the API reference or the security documentation.",
            "url": "https://docs.ai21.com/reference/jamba-1-6-api-ref",
            "scope": "AI21 API reference, for AI21 Studio",
            "verified_at": "2026-09-12"
          },
          "upstream_disclosure": {
            "status": "documented_yes",
            "note": "The privacy policy states the operator collects the content: \"We collect Personal Data that you provide in the input to our Services, including your prompts and other content you upload, and data from connected services, depending on the features you use (“User Content”).\" The trust centre carries a subprocessor list.",
            "url": "https://www.ai21.com/terms-policies/privacy-policy/",
            "scope": "AI21 privacy policy, for AI21 Studio",
            "verified_at": "2026-09-12"
          },
          "credential_handling": {
            "status": "documented_no",
            "note": "The API offers no customer-supplied-key path: \"All API requests must include an Authorization header with a Bearer token for authentication.\" issued by AI21 Studio.",
            "url": "https://docs.ai21.com/reference/authentication",
            "scope": "AI21 authentication reference, for AI21 Studio",
            "verified_at": "2026-09-12"
          },
          "cache_isolation": {
            "status": "undocumented",
            "note": "No prompt-caching feature or cache scope is documented in the API reference.",
            "url": "https://docs.ai21.com/reference/jamba-1-6-api-ref",
            "scope": "AI21 API reference, for AI21 Studio",
            "verified_at": "2026-09-12"
          },
          "vulnerability_disclosure": {
            "status": "documented_yes",
            "note": "The public trust centre publishes a security contact (\"security@ai21.com\") beside its controls summary.",
            "url": "https://trust.ai21.com/",
            "scope": "AI21 trust centre, for AI21 Studio",
            "verified_at": "2026-09-12"
          },
          "independent_audit": {
            "status": "undocumented",
            "note": "The public trust centre lists SOC 2, ISO/IEC 42001, ISO 27001, ISO 27017, and ISO 27018 for the company, with an \"AI21 SOC 2 Type II - Final Report\" behind a request-access control; nothing names AI21 Studio, so it is recorded as undocumented for the named service.",
            "url": "https://trust.ai21.com/",
            "scope": "AI21 trust centre compliance section, read for AI21 Studio",
            "verified_at": "2026-09-12"
          }
        },
        "findings": []
      }
    },
    {
      "id": "aiml-api",
      "name": "AI/ML API",
      "operator": "AIMLAPI OÜ",
      "service_type": "routing_aggregator",
      "url": "https://aimlapi.com/",
      "description": "A hosted API that resells access to roughly a thousand text, image, video, and voice models at its own per-token rates.",
      "service_boundary": "Represents the AI/ML API reselling service, not the labs whose models it forwards to.",
      "delivery_modes": [
        "on_demand",
        "batch"
      ],
      "model_sources": [
        "third_party_proprietary",
        "open_weight"
      ],
      "api_styles": [
        "openai_compatible",
        "anthropic_compatible"
      ],
      "regional_controls": "No customer control over processing geography is documented.",
      "retention_controls": "The privacy policy states no retention period beyond keeping data as long as necessary, and no position on training over customer prompts is documented.",
      "routing": "Requests reach a named model through one compatible endpoint; provider selection, fallback, and steering controls are not documented.",
      "customization": "No customer fine-tuning or private deployment is documented.",
      "strengths": [
        "A single compatible endpoint reaches an unusually broad multimodal catalogue spanning text, image, video, and voice vendors.",
        "Response headers report spend per request, making cost attribution possible without a separate metering system."
      ],
      "tradeoffs": [
        "Per-token rates are the operator's own and sit consistently above the rates other aggregators publish for the same models, with no statement anywhere of how they relate to upstream pricing.",
        "The terms promise to carry a last-updated date and carry none, and no position on training over customer prompts is stated.",
        "Subscription tiers and the paused free tier are visible only after signing in."
      ],
      "score_profile": "inference_service",
      "score": {
        "operational_maturity": 6.0,
        "data_governance": 3.8,
        "regional_deployment_control": 3.0,
        "serving_flexibility": 4.5,
        "api_interoperability": 8.2,
        "traffic_resilience": 5.0,
        "customization_lifecycle": 3.0,
        "documentation_transparency": 2.8,
        "overall": 4.66
      },
      "terms": {
        "kind": "web_terms",
        "label": "AI/ML API Terms and Conditions",
        "url": "https://aimlapi.com/terms-and-conditions",
        "verified_at": "2026-08-31"
      },
      "evidence": [
        {
          "kind": "web",
          "label": "Model catalogue and pricing",
          "url": "https://aimlapi.com/models",
          "verified_at": "2026-08-31"
        },
        {
          "kind": "web",
          "label": "API documentation",
          "url": "https://docs.aimlapi.com/",
          "verified_at": "2026-08-31"
        }
      ],
      "verified_at": "2026-08-31",
      "trust": {
        "verified_at": "2026-09-12",
        "properties": {
          "response_integrity": {
            "status": "undocumented",
            "note": "No signature, attestation, or equivalent mechanism for verifying that a response arrived unaltered from the upstream model appears in the request-tracing documentation or elsewhere in the API reference.",
            "url": "https://docs.aimlapi.com/capabilities/request-tracing-and-cost",
            "scope": "AI/ML API request-tracing documentation, for the AI/ML API",
            "verified_at": "2026-09-12"
          },
          "upstream_disclosure": {
            "status": "undocumented",
            "note": "The model database names each model's developer, such as \"Open AI\" for gpt-3.5-turbo and \"Alibaba Cloud\" for alibaba/qwen-plus, but no page names which parties receive request content or whether models are served by the developer, by AI/ML API, or by another host; the privacy policy is a website-visitor notice.",
            "url": "https://docs.aimlapi.com/api-references/model-database",
            "scope": "AI/ML API model database, for the AI/ML API",
            "verified_at": "2026-09-12"
          },
          "credential_handling": {
            "status": "documented_no",
            "note": "The documentation offers no customer-supplied-key path: the API-key guide states \"API keys are used to call our models from the Playground and from your own applications via the API.\" and every documented request authenticates with an AI/ML API key.",
            "url": "https://docs.aimlapi.com/faq/how-can-i-work-with-my-api-keys",
            "scope": "AI/ML API key guide, for the AI/ML API",
            "verified_at": "2026-09-12"
          },
          "cache_isolation": {
            "status": "undocumented",
            "note": "No prompt-caching feature is documented, and the privacy policy does not mention caching.",
            "url": "https://aimlapi.com/privacy-policy",
            "scope": "AI/ML API privacy policy, for the AI/ML API",
            "verified_at": "2026-09-12"
          },
          "vulnerability_disclosure": {
            "status": "undocumented",
            "note": "Neither the terms and conditions nor the privacy policy names a security contact or disclosure route, and no security.txt is served.",
            "url": "https://aimlapi.com/terms-and-conditions",
            "scope": "AI/ML API terms and conditions, for the AI/ML API",
            "verified_at": "2026-09-12"
          },
          "independent_audit": {
            "status": "undocumented",
            "note": "The enterprise page says only: \"We prioritise the security and privacy of your data with robust top level security measures, ensuring your data is fully protected with thorough encryption and strict compliance protocols.\" No certification is named.",
            "url": "https://aimlapi.com/enterprise-ai-api",
            "scope": "AI/ML API enterprise page, for the AI/ML API",
            "verified_at": "2026-09-12"
          }
        },
        "findings": []
      }
    },
    {
      "id": "alibaba-cloud-model-studio",
      "name": "Alibaba Cloud Model Studio",
      "operator": "Alibaba Cloud",
      "service_type": "cloud_model_platform",
      "url": "https://www.alibabacloud.com/help/en/model-studio/",
      "description": "Alibaba Cloud's managed generative-AI platform for Qwen and third-party models, tuning, applications, and model APIs.",
      "service_boundary": "Represents Alibaba Cloud Model Studio, not the Qwen model family, Qwen Chat, downloadable weights, or Alibaba Cloud's broader machine-learning platform.",
      "delivery_modes": [
        "on_demand",
        "batch",
        "reserved_capacity",
        "dedicated_endpoint"
      ],
      "model_sources": [
        "first_party",
        "third_party_proprietary",
        "open_weight",
        "customer_supplied"
      ],
      "api_styles": [
        "service_native",
        "openai_compatible",
        "anthropic_compatible"
      ],
      "regional_controls": "Keys, endpoints, model availability, storage, and inference deployment are region-scoped. Alibaba documents China and international regions plus Global, US, and EU deployment scopes with model-specific availability.",
      "retention_controls": "Alibaba states Model Studio data is not used for model training; stored resources and playground history have feature-specific behavior and remain region-dependent.",
      "routing": "Customers select models and region-scoped endpoints; compatible protocols do not imply automatic cross-provider routing.",
      "customization": "The platform supports tuning, application building, and deployment paths for eligible models and customer artifacts.",
      "strengths": [
        "Broad access to Qwen and other models through region-scoped cloud controls.",
        "OpenAI- and Anthropic-compatible protocols are documented."
      ],
      "tradeoffs": [
        "Model and feature availability vary substantially by region.",
        "The platform's broad scope requires model-specific terms and deployment review."
      ],
      "score_profile": "inference_service",
      "score": {
        "operational_maturity": 9.0,
        "data_governance": 8.5,
        "regional_deployment_control": 9.0,
        "serving_flexibility": 9.3,
        "api_interoperability": 9.2,
        "traffic_resilience": 7.5,
        "customization_lifecycle": 9.0,
        "documentation_transparency": 9.0,
        "overall": 8.82
      },
      "terms": {
        "kind": "web_terms",
        "label": "Alibaba Cloud Product Terms of Service",
        "url": "https://www.alibabacloud.com/help/en/legal/latest/alibaba-cloud-international-website-product-terms-of-service-v-3-8-0",
        "verified_at": "2026-08-28"
      },
      "evidence": [
        {
          "kind": "web",
          "label": "Model Studio overview",
          "url": "https://www.alibabacloud.com/help/en/model-studio/",
          "verified_at": "2026-08-28"
        },
        {
          "kind": "web",
          "label": "Regions and deployment scope",
          "url": "https://www.alibabacloud.com/help/en/model-studio/regions",
          "verified_at": "2026-08-28"
        },
        {
          "kind": "web",
          "label": "API keys and compatible protocols",
          "url": "https://www.alibabacloud.com/help/en/model-studio/get-api-key",
          "verified_at": "2026-08-28"
        }
      ],
      "verified_at": "2026-08-28",
      "trust": {
        "verified_at": "2026-09-12",
        "properties": {
          "response_integrity": {
            "status": "undocumented",
            "note": "No signature, attestation, or equivalent mechanism for verifying that a response arrived unaltered from the model appears in the API reference or the security documentation.",
            "url": "https://www.alibabacloud.com/help/en/model-studio/",
            "scope": "Alibaba Cloud Model Studio documentation, for Alibaba Cloud Model Studio",
            "verified_at": "2026-09-12"
          },
          "upstream_disclosure": {
            "status": "documented_yes",
            "note": "The Model Studio privacy notice states how the operator handles content: \"Alibaba Cloud strictly protects your data privacy and will never use your data for model training.\" It does not say whether the publishers of third-party models hosted on the platform receive prompt content.",
            "url": "https://www.alibabacloud.com/help/en/model-studio/privacy-notice",
            "scope": "Alibaba Cloud Model Studio privacy notice, for Alibaba Cloud Model Studio",
            "verified_at": "2026-09-12"
          },
          "credential_handling": {
            "status": "documented_no",
            "note": "The service offers no customer-supplied-key path: keys are issued by Model Studio (\"The plaintext key is displayed only once upon creation. It cannot be viewed again after the dialog box is closed. If lost, reset or create a new key.\") and every documented request uses one.",
            "url": "https://www.alibabacloud.com/help/en/model-studio/get-api-key",
            "scope": "Alibaba Cloud Model Studio API-key guide, for Alibaba Cloud Model Studio",
            "verified_at": "2026-09-12"
          },
          "cache_isolation": {
            "status": "documented_yes",
            "note": "The context-cache guide's FAQ states: \"A: No. Both implicit cache and explicit cache data is isolated at the account level.\"",
            "url": "https://www.alibabacloud.com/help/en/model-studio/context-cache",
            "scope": "Alibaba Cloud Model Studio context-cache guide, for Alibaba Cloud Model Studio",
            "verified_at": "2026-09-12"
          },
          "vulnerability_disclosure": {
            "status": "documented_yes",
            "note": "Alibaba's security response centre is the company-wide disclosure route: \"ASRC(Alibaba Security Response Center) is the point of contact of Alibaba security.\" It does not name Model Studio.",
            "url": "https://security.alibaba.com/",
            "scope": "Alibaba Security Response Center, for Alibaba Cloud Model Studio",
            "verified_at": "2026-09-12"
          },
          "independent_audit": {
            "status": "documented_yes",
            "note": "The privacy notice names the service: \"Alibaba Cloud Model Studio has achieved SOC 2 compliance with an unqualified opinion, validating its controls for Security, Availability, and Confidentiality.\"",
            "url": "https://www.alibabacloud.com/help/en/model-studio/privacy-notice",
            "scope": "Alibaba Cloud Model Studio privacy notice, for Alibaba Cloud Model Studio",
            "verified_at": "2026-09-12"
          }
        },
        "findings": []
      }
    },
    {
      "id": "amazon-bedrock",
      "name": "Amazon Bedrock",
      "operator": "Amazon Web Services",
      "service_type": "cloud_model_platform",
      "url": "https://docs.aws.amazon.com/bedrock/latest/userguide/what-is-bedrock.html",
      "description": "AWS's managed foundation-model platform for invoking, customizing, evaluating, and governing Amazon and third-party models within AWS accounts and regions.",
      "service_boundary": "Represents the Amazon Bedrock inference platform, not Amazon's model families, SageMaker-hosted endpoints, Amazon Q, or Bedrock AgentCore.",
      "delivery_modes": [
        "on_demand",
        "batch",
        "reserved_capacity"
      ],
      "model_sources": [
        "first_party",
        "third_party_proprietary",
        "open_weight",
        "customer_supplied"
      ],
      "api_styles": [
        "aws_native",
        "openai_compatible"
      ],
      "regional_controls": "Model, feature, and endpoint availability is region-specific. Inference profiles can route within a geography or globally, while single-region use and provisioned capacity have separate support matrices.",
      "retention_controls": "Data handling depends on the selected model, Bedrock feature, region, AWS account controls, and any applicable third-party model terms; cross-region profiles can change the processing locations involved.",
      "routing": "Bedrock inference profiles can route a selected model across supported AWS regions; this is regional capacity routing rather than arbitrary cross-model selection.",
      "customization": "Eligible base models can be customized, and imported or custom models use distinct identifiers and capacity requirements.",
      "strengths": [
        "One AWS control plane covers models from several publishers, regional IAM boundaries, and multiple capacity modes.",
        "Inference profiles and provisioned throughput support production capacity and residency choices."
      ],
      "tradeoffs": [
        "Availability and API compatibility vary by model, endpoint, feature, and AWS region.",
        "Third-party models can add publisher-specific terms on top of the AWS agreement."
      ],
      "score_profile": "inference_service",
      "score": {
        "operational_maturity": 9.3,
        "data_governance": 8.8,
        "regional_deployment_control": 9.0,
        "serving_flexibility": 9.0,
        "api_interoperability": 8.5,
        "traffic_resilience": 8.6,
        "customization_lifecycle": 8.8,
        "documentation_transparency": 9.0,
        "overall": 8.9
      },
      "terms": {
        "kind": "web_terms",
        "label": "AWS Service Terms",
        "url": "https://aws.amazon.com/service-terms/",
        "verified_at": "2026-09-15"
      },
      "evidence": [
        {
          "kind": "web",
          "label": "Bedrock overview",
          "url": "https://docs.aws.amazon.com/bedrock/latest/userguide/what-is-bedrock.html",
          "verified_at": "2026-08-28"
        },
        {
          "kind": "web",
          "label": "Model availability and compatibility",
          "url": "https://docs.aws.amazon.com/bedrock/latest/userguide/models.html",
          "verified_at": "2026-08-28"
        },
        {
          "kind": "web",
          "label": "Custom model import",
          "url": "https://docs.aws.amazon.com/bedrock/latest/userguide/import-pre-trained-model.html",
          "verified_at": "2026-08-28"
        },
        {
          "kind": "web",
          "label": "Inference profile regional behavior",
          "url": "https://docs.aws.amazon.com/bedrock/latest/userguide/inference-profiles-support.html",
          "verified_at": "2026-08-28"
        },
        {
          "kind": "web",
          "label": "Provisioned throughput",
          "url": "https://docs.aws.amazon.com/bedrock/latest/userguide/prov-throughput.html",
          "verified_at": "2026-08-28"
        }
      ],
      "verified_at": "2026-09-12",
      "trust": {
        "verified_at": "2026-09-12",
        "properties": {
          "response_integrity": {
            "status": "documented_yes",
            "note": "Scoped to reasoning-text blocks. The API reference states the `signature` field on a ReasoningTextBlock is \"A token that verifies that the reasoning text was generated by the model.\" Ordinary tool-call and message content carries no such field.",
            "url": "https://docs.aws.amazon.com/bedrock/latest/APIReference/API_runtime_ReasoningTextBlock.html",
            "scope": "Amazon Bedrock API reference, ReasoningTextBlock, for Amazon Bedrock",
            "verified_at": "2026-09-12"
          },
          "upstream_disclosure": {
            "status": "documented_no",
            "note": "The data-protection guide states: \"Because the model providers don't have access to those accounts, they don't have access to Amazon Bedrock logs or to customer prompts and completions.\" Third-party model providers are explicitly denied access to plaintext.",
            "url": "https://docs.aws.amazon.com/bedrock/latest/userguide/data-protection.html",
            "scope": "Amazon Bedrock data-protection guide, for Amazon Bedrock",
            "verified_at": "2026-09-12"
          },
          "credential_handling": {
            "status": "documented_no",
            "note": "The service offers no customer-supplied upstream-key path: \"You must be authenticated as the AWS account root user, an IAM user, or by assuming an IAM role.\"",
            "url": "https://docs.aws.amazon.com/bedrock/latest/userguide/security-iam.html",
            "scope": "Amazon Bedrock security and identity guide, for Amazon Bedrock",
            "verified_at": "2026-09-12"
          },
          "cache_isolation": {
            "status": "undocumented",
            "note": "The prompt-caching guide describes the feature, its pricing, and cache lifetime but never states whether a cache entry is scoped to the requesting account.",
            "url": "https://docs.aws.amazon.com/bedrock/latest/userguide/prompt-caching.html",
            "scope": "Amazon Bedrock prompt-caching guide, for Amazon Bedrock",
            "verified_at": "2026-09-12"
          },
          "vulnerability_disclosure": {
            "status": "documented_yes",
            "note": "AWS publishes a vulnerability-reporting programme scoped to \"AWS Services delivered by AWS and publicly available to customers. (e.g. Amazon EC2, Amazon RDS).\" Bedrock is such a service though not named individually.",
            "url": "https://aws.amazon.com/security/vulnerability-reporting/",
            "scope": "AWS vulnerability-reporting programme, for Amazon Bedrock",
            "verified_at": "2026-09-12"
          },
          "independent_audit": {
            "status": "documented_yes",
            "note": "The AWS SOC services-in-scope page names the service directly: \"Amazon Bedrock [excludes Amazon Bedrock Marketplace]\" is listed with a checkmark under SOC 1, 2, 3 in scope, dated \"Last updated: August 11, 2026\".",
            "url": "https://aws.amazon.com/compliance/services-in-scope/SOC/",
            "scope": "AWS SOC services-in-scope page, for Amazon Bedrock",
            "verified_at": "2026-09-12"
          }
        },
        "findings": [
          {
            "claim": "Table 2, Audit results for APIs where we did not detect prompt caching (✗ denotes caching was not detected): Amazon / Claude 3 Haiku / ✗ (same prompt, per-user). The audits were conducted in September and early October 2024.",
            "published_at": "2025-07-13",
            "source": {
              "label": "Auditing Prompt Caching in Language Model APIs, arXiv 2502.07776v2",
              "url": "https://arxiv.org/abs/2502.07776v2",
              "kind": "third_party",
              "content_sha256": "2d15ac6cd0431b885187028fef6cdb2f15feb328ba891b4e04e933d76fa3f624",
              "fetched_at": "2026-09-12"
            },
            "operator_response": null,
            "resolved": {
              "url": "https://docs.aws.amazon.com/bedrock/latest/userguide/prompt-caching.html",
              "verified_at": "2026-09-12",
              "summary": "Bedrock has since documented a prompt-caching feature; the paper found no caching detectable at the time of its 2024 audit, so this is not a finding of unsafe sharing."
            }
          }
        ]
      }
    },
    {
      "id": "anthropic-api",
      "name": "Anthropic API",
      "operator": "Anthropic",
      "service_type": "direct_model_api",
      "url": "https://docs.anthropic.com/en/api/overview",
      "description": "Anthropic's managed first-party API for Claude models, including Messages, streaming, prompt caching, files, and asynchronous message batches.",
      "service_boundary": "Represents Anthropic's direct commercial API, not Claude.ai, Claude Code, model access through Bedrock or Vertex AI, or individual Claude releases.",
      "delivery_modes": [
        "on_demand",
        "batch"
      ],
      "model_sources": [
        "first_party"
      ],
      "api_styles": [
        "anthropic_native"
      ],
      "regional_controls": "Commercial API access is limited to Anthropic's supported countries and regions; the reviewed direct-API sources do not establish customer-selected processing regions.",
      "retention_controls": "Standard API inputs and outputs are deleted from backend systems within 30 days, subject to policy-enforcement and legal exceptions. Approved enterprise API customers may receive Zero Data Retention, with documented exceptions for features such as files and some batch or caching behavior.",
      "routing": "Customers select Claude models within Anthropic's direct API; access to Claude through other cloud platforms is a separate inference-service boundary.",
      "customization": "The reviewed API emphasizes prompt caching, files, tools, and batch execution rather than customer-deployed model weights.",
      "strengths": [
        "The direct Messages API provides a focused first-party contract for Claude capabilities.",
        "Anthropic publishes separate commercial retention guidance and a documented enterprise Zero Data Retention boundary."
      ],
      "tradeoffs": [
        "The direct service is limited to Anthropic model families.",
        "Zero Data Retention is approval-based and feature-specific exceptions still require review."
      ],
      "score_profile": "inference_service",
      "score": {
        "operational_maturity": 8.9,
        "data_governance": 9.0,
        "regional_deployment_control": 5.8,
        "serving_flexibility": 7.2,
        "api_interoperability": 8.7,
        "traffic_resilience": 5.5,
        "customization_lifecycle": 5.8,
        "documentation_transparency": 9.0,
        "overall": 7.63
      },
      "terms": {
        "kind": "web_terms",
        "label": "Anthropic Commercial Terms of Service",
        "url": "https://www.anthropic.com/legal/commercial-terms",
        "verified_at": "2026-08-28"
      },
      "evidence": [
        {
          "kind": "web",
          "label": "API overview",
          "url": "https://docs.anthropic.com/en/api/overview",
          "verified_at": "2026-08-28"
        },
        {
          "kind": "web",
          "label": "Message Batches API",
          "url": "https://docs.anthropic.com/en/docs/build-with-claude/batch-processing",
          "verified_at": "2026-08-28"
        },
        {
          "kind": "web",
          "label": "Commercial API retention",
          "url": "https://privacy.anthropic.com/en/articles/7996866-how-long-do-you-store-my-organization-s-data",
          "verified_at": "2026-08-28"
        },
        {
          "kind": "web",
          "label": "Zero Data Retention scope",
          "url": "https://privacy.anthropic.com/en/articles/8956058-i-have-a-zero-data-retention-agreement-with-anthropic-what-products-does-it-apply-to",
          "verified_at": "2026-08-28"
        }
      ],
      "verified_at": "2026-08-28",
      "trust": {
        "verified_at": "2026-09-12",
        "properties": {
          "response_integrity": {
            "status": "undocumented",
            "note": "No signature, attestation, or equivalent mechanism for verifying that a response arrived unaltered from the model is documented for the API; the confidential-inference research post describes trusted-VM work, not a client-verifiable response signature.",
            "url": "https://www.anthropic.com/research/confidential-inference-trusted-vms",
            "scope": "Anthropic confidential-inference research post, read for the Anthropic API",
            "verified_at": "2026-09-12"
          },
          "upstream_disclosure": {
            "status": "documented_yes",
            "note": "The privacy centre states how the operator handles API content: \"For Anthropic API users, we automatically delete inputs and outputs on our backend within 30 days of receipt or generation\"; the operator is the party that receives plaintext.",
            "url": "https://privacy.claude.com/en/articles/7996866-how-long-do-you-store-my-organization-s-data",
            "scope": "Anthropic privacy centre, organisation data retention article, for the Anthropic API",
            "verified_at": "2026-09-12"
          },
          "credential_handling": {
            "status": "documented_no",
            "note": "The API offers no customer-supplied-key path: \"API keys are static secrets that you generate in the Claude Console and send on every request as a bearer token in the Authorization header.\"",
            "url": "https://platform.claude.com/docs/en/manage-claude/authentication",
            "scope": "Claude platform authentication documentation, for the Anthropic API",
            "verified_at": "2026-09-12"
          },
          "cache_isolation": {
            "status": "documented_yes",
            "note": "The prompt-caching guide states: \"Caches are isolated between organizations. Different organizations never share caches, even if they use identical prompts.\"",
            "url": "https://platform.claude.com/docs/en/build-with-claude/prompt-caching",
            "scope": "Claude platform prompt-caching guide, for the Anthropic API",
            "verified_at": "2026-09-12"
          },
          "vulnerability_disclosure": {
            "status": "documented_yes",
            "note": "A security.txt file is published with a disclosure policy (\"Policy: https://www.anthropic.com/responsible-disclosure-policy\").",
            "url": "https://www.anthropic.com/.well-known/security.txt",
            "scope": "Anthropic security.txt, for the Anthropic API",
            "verified_at": "2026-09-12"
          },
          "independent_audit": {
            "status": "documented_yes",
            "note": "The public trust centre's scope table has a row for \"Claude via Anthropic's API\" marked for SOC 2 Type 2, ISO 27001, ISO 42001, CSA Star, HIPAA, and NIST 800-171; the reports themselves are behind a request-access control.",
            "url": "https://trust.anthropic.com/",
            "scope": "Anthropic trust centre, for the Anthropic API",
            "verified_at": "2026-09-12"
          }
        },
        "findings": []
      }
    },
    {
      "id": "baidu-qianfan-modelbuilder",
      "name": "Baidu Qianfan ModelBuilder",
      "operator": "Baidu AI Cloud",
      "service_type": "cloud_model_platform",
      "url": "https://cloud.baidu.com/doc/wenxinworkshop/index.html",
      "description": "Baidu AI Cloud's managed foundation-model platform for ERNIE and third-party models, tuning, evaluation, and deployed inference services.",
      "service_boundary": "Represents Qianfan ModelBuilder, not the ERNIE model family, consumer chat products, Qianfan AppBuilder, or generic Baidu AI APIs.",
      "delivery_modes": [
        "on_demand",
        "batch",
        "dedicated_endpoint"
      ],
      "model_sources": [
        "first_party",
        "third_party_proprietary",
        "open_weight",
        "customer_supplied"
      ],
      "api_styles": [
        "service_native",
        "openai_compatible"
      ],
      "regional_controls": "International and mainland-China service paths and terms differ; endpoint and deployment availability must be verified for the selected Baidu Cloud region.",
      "retention_controls": "The Qianfan user agreement and applicable Baidu Cloud policies govern platform data; model, training, and deployed-service paths have distinct storage behavior.",
      "routing": "The platform exposes multiple models and deployment options but is not documented here as an automatic price- or latency-based upstream router.",
      "customization": "Qianfan supports data management, training, tuning, model management, and cloud deployment of inference services.",
      "strengths": [
        "Combines Baidu's first-party models with third-party and open-model services.",
        "Provides an end-to-end enterprise model development and serving path."
      ],
      "tradeoffs": [
        "International and mainland service boundaries differ.",
        "Most detailed operational documentation is Chinese-language and feature-specific."
      ],
      "score_profile": "inference_service",
      "score": {
        "operational_maturity": 8.3,
        "data_governance": 7.2,
        "regional_deployment_control": 7.0,
        "serving_flexibility": 8.6,
        "api_interoperability": 8.3,
        "traffic_resilience": 6.0,
        "customization_lifecycle": 9.0,
        "documentation_transparency": 7.2,
        "overall": 7.72
      },
      "terms": {
        "kind": "web_terms",
        "label": "Qianfan Platform User Agreement",
        "url": "https://intl.cloud.baidu.com/en/doc/qianfan/s/Cmn5zc5tn",
        "verified_at": "2026-08-28"
      },
      "evidence": [
        {
          "kind": "web",
          "label": "Qianfan ModelBuilder overview",
          "url": "https://cloud.baidu.com/doc/wenxinworkshop/index.html",
          "verified_at": "2026-08-28"
        },
        {
          "kind": "web",
          "label": "Qianfan developer center overview",
          "url": "https://cloud.baidu.com/doc/qianfan-docs/s/0m8r1domp",
          "verified_at": "2026-08-28"
        }
      ],
      "verified_at": "2026-08-28",
      "trust": {
        "verified_at": "2026-09-12",
        "properties": {
          "response_integrity": {
            "status": "undocumented",
            "note": "No signature, attestation, or equivalent mechanism for verifying that a response arrived unaltered from the model appears in the API reference or the security documentation.",
            "url": "https://cloud.baidu.com/doc/wenxinworkshop/index.html",
            "scope": "Qianfan ModelBuilder platform documentation, for Baidu Qianfan ModelBuilder",
            "verified_at": "2026-09-12"
          },
          "upstream_disclosure": {
            "status": "undocumented",
            "note": "No page found states whether prompt content is shared with third-party model publishers hosted on the platform, or is retained only by Baidu; the platform's user agreement addresses billing and acceptable use, not data flow to model providers.",
            "url": "https://cloud.baidu.com/doc/Agreements/s/Plr0fi68q",
            "scope": "Qianfan ModelBuilder platform user agreement, read for Baidu Qianfan ModelBuilder",
            "verified_at": "2026-09-12"
          },
          "credential_handling": {
            "status": "documented_no",
            "note": "The platform offers no customer-supplied-key path: every request is authenticated with a Baidu AI Cloud Access Key / Secret Access Key pair issued by the platform, computed into a signature rather than sent as a bearer token from a third party.",
            "url": "https://cloud.baidu.com/doc/Reference/s/Njwvz1wot",
            "scope": "Baidu AI Cloud signature-authentication reference, for Baidu Qianfan ModelBuilder",
            "verified_at": "2026-09-12"
          },
          "cache_isolation": {
            "status": "undocumented",
            "note": "No prompt or context caching feature or scope is documented in the platform's public documentation.",
            "url": "https://cloud.baidu.com/doc/wenxinworkshop/index.html",
            "scope": "Qianfan ModelBuilder platform documentation, for Baidu Qianfan ModelBuilder",
            "verified_at": "2026-09-12"
          },
          "vulnerability_disclosure": {
            "status": "undocumented",
            "note": "Baidu operates a company-wide security response centre at bsrc.baidu.com, but the site could not be read: a plain fetch and a rendered browser session both returned an empty page, so its stated scope could not be confirmed and it is not cited as evidence.",
            "url": "https://bsrc.baidu.com/",
            "scope": "Baidu AI Cloud compliance page, read for Baidu Qianfan ModelBuilder",
            "verified_at": "2026-09-12"
          },
          "independent_audit": {
            "status": "undocumented",
            "note": "The Baidu AI Cloud compliance page lists company-wide certifications and does not name Qianfan ModelBuilder.",
            "url": "https://cloud.baidu.com/safety/compliance.html",
            "scope": "Baidu AI Cloud compliance page, for Baidu Qianfan ModelBuilder",
            "verified_at": "2026-09-12"
          }
        },
        "findings": []
      }
    },
    {
      "id": "baseten",
      "name": "Baseten",
      "operator": "Baseten Labs",
      "service_type": "managed_inference_host",
      "url": "https://docs.baseten.co/overview",
      "description": "Managed inference platform offering hosted model APIs alongside dedicated deployments of open-source, fine-tuned, or customer-supplied models on autoscaled GPU capacity across several clouds and regions.",
      "service_boundary": "Represents Baseten's managed inference and training platform operated by Baseten Labs. The open-source packaging tooling it publishes and the models customers deploy remain separate boundaries.",
      "delivery_modes": [
        "on_demand",
        "dedicated_endpoint"
      ],
      "model_sources": [
        "open_weight",
        "customer_supplied"
      ],
      "api_styles": [
        "openai_compatible",
        "anthropic_compatible",
        "service_native"
      ],
      "regional_controls": "Baseten documents multi-cloud capacity management across providers and regions, regional environments intended to satisfy data-residency requirements, private networking, and workload isolation. Specific region availability depends on the hosting option selected.",
      "retention_controls": "Baseten's terms, rewritten on 2026-09-15, make the customer the owner of its content, bar Baseten from using customer content, models, outputs, or inference logs to train or fine-tune models, and limit analytics and benchmarking use to aggregated or de-identified form. Customers can export their content during the term and for thirty days after it; past that Baseten has no obligation to keep the content and deletes it on written request rather than automatically.",
      "routing": "The platform provisions GPU capacity across clouds and regions and autoscales dedicated deployments; it is not a cross-provider model router and does not expose upstream provider selection.",
      "customization": "Dedicated deployment of open-source, fine-tuned, and custom models is a primary path, alongside supervised fine-tuning and reinforcement learning loops and training jobs on dedicated GPU clusters.",
      "strengths": [
        "Hosted model APIs and dedicated deployment of customer-supplied models sit in one platform with a shared observability surface.",
        "Terms are explicit that customer content is customer-owned and is not used to train models, and that any analytics use is aggregated or de-identified.",
        "Multi-cloud capacity management with regional environments and private networking addresses procurement and residency constraints directly."
      ],
      "tradeoffs": [
        "Region and capacity availability depend on the hosting option and provider mix rather than a single published region list.",
        "The rewritten terms drop the previous commitment to destroy all copies after a retrieval window: content is exportable for thirty days after the term, and deletion then happens on written request.",
        "The platform targets teams operating their own models; it is not a catalogue of third-party proprietary frontier models.",
        "Anthropic Messages compatibility is documented as beta, so contract parity should be confirmed before relying on it."
      ],
      "score_profile": "inference_service",
      "score": {
        "operational_maturity": 8.0,
        "data_governance": 7.5,
        "regional_deployment_control": 7.5,
        "serving_flexibility": 7.5,
        "api_interoperability": 8.0,
        "traffic_resilience": 7.0,
        "customization_lifecycle": 8.5,
        "documentation_transparency": 7.0,
        "overall": 7.65
      },
      "terms": {
        "kind": "web_terms",
        "label": "Baseten Terms and Conditions",
        "url": "https://www.baseten.co/terms-and-conditions/",
        "verified_at": "2026-09-15"
      },
      "evidence": [
        {
          "kind": "web",
          "label": "Platform overview",
          "url": "https://docs.baseten.co/overview",
          "verified_at": "2026-08-29"
        },
        {
          "kind": "web",
          "label": "Model APIs documentation",
          "url": "https://docs.baseten.co/development/model-apis/overview",
          "verified_at": "2026-08-29"
        }
      ],
      "verified_at": "2026-09-15",
      "trust": {
        "verified_at": "2026-09-15",
        "properties": {
          "response_integrity": {
            "status": "undocumented",
            "note": "No signature, attestation, or equivalent mechanism for verifying that a response arrived unaltered from the model appears in the API reference or the security documentation.",
            "url": "https://docs.baseten.co/development/model-apis/overview",
            "scope": "Baseten Model APIs overview, for Baseten",
            "verified_at": "2026-09-15"
          },
          "upstream_disclosure": {
            "status": "undocumented",
            "note": "The terms disclose only the categories of party behind the service: Baseten uses \"compute, networking, storage, and hardware resources from third-party cloud service providers, GPU and hardware suppliers, data center and colocation operators, and chip developers (collectively, \" Infrastructure Providers \")\", and says \"Upon reasonable request, Baseten will make available a list of material Infrastructure Providers.\" No first-party page this review could read names them, and the trust centre's subprocessor list renders only by script.",
            "url": "https://www.baseten.co/terms-and-conditions/",
            "scope": "Baseten terms and conditions, read for Baseten",
            "verified_at": "2026-09-15"
          },
          "credential_handling": {
            "status": "documented_yes",
            "note": "Customer secrets used by deployed models are stored in a documented store: \"store a Hugging Face access token as a secret named hf_access_token in Baseten's secret manager\". Whether the store encrypts at rest is not stated.",
            "url": "https://docs.baseten.co/truss/examples/09-private-huggingface",
            "scope": "Baseten private Hugging Face model guide, for Baseten",
            "verified_at": "2026-09-15"
          },
          "cache_isolation": {
            "status": "undocumented",
            "note": "The runtime-caching page describes b10cache scopes for model artefacts, not prompt caching: \"Deployment scope: /cache/model/ Shared across every replica within a single deployment.\" No page states how a prompt or prefix cache is scoped.",
            "url": "https://docs.baseten.co/development/model/runtime-caching",
            "scope": "Baseten runtime-caching page, read for Baseten",
            "verified_at": "2026-09-15"
          },
          "vulnerability_disclosure": {
            "status": "documented_yes",
            "note": "The public trust centre publishes a disclosure route: \"If you believe you've discovered a security vulnerability in our services, please report it to security@baseten.co with details of your findings.\"",
            "url": "https://trust.baseten.co/",
            "scope": "Baseten trust centre, for Baseten",
            "verified_at": "2026-09-15"
          },
          "independent_audit": {
            "status": "documented_yes",
            "note": "The operator's announcement states: \"Baseten has completed a rigorous audit by Sensiba San Filippo LLP, a leading CPA firm, to achieve System and Organization Controls (SOC) 2 Type II certification.\" The public trust centre lists a Baseten Labs, Inc. SOC 2 Type 2 report behind a request-access control.",
            "url": "https://www.baseten.co/blog/soc-2-type-2/",
            "scope": "Baseten SOC 2 announcement, for Baseten",
            "verified_at": "2026-09-15"
          }
        },
        "findings": []
      }
    },
    {
      "id": "byteplus-modelark",
      "name": "BytePlus ModelArk",
      "operator": "BytePlus",
      "service_type": "cloud_model_platform",
      "url": "https://docs.byteplus.com/en/docs/modelark/1099455",
      "description": "BytePlus's managed model platform for Seed models and selected third-party models, online and batch inference, tuning, and endpoints.",
      "service_boundary": "Represents the international BytePlus ModelArk service, not mainland-China Volcengine Ark, ByteDance consumer products, individual Seed models, or Coding Plan subscriptions.",
      "delivery_modes": [
        "on_demand",
        "batch",
        "dedicated_endpoint"
      ],
      "model_sources": [
        "first_party",
        "third_party_proprietary",
        "open_weight",
        "customer_supplied"
      ],
      "api_styles": [
        "service_native",
        "openai_compatible"
      ],
      "regional_controls": "ModelArk documents AP and EU regions with region-isolated keys and endpoints. Some traffic may spill between the AP and EU service regions depending on the selected availability mode, so residency claims require endpoint-specific review.",
      "retention_controls": "Data processing and retention follow ModelArk-specific terms and the selected capability; batch, tuning, and dataset features have separate stateful boundaries.",
      "routing": "Customers choose models and region-scoped endpoints; documented availability spillover is infrastructure routing rather than arbitrary model routing.",
      "customization": "Tuning, datasets, online endpoints, and batch inference are documented, with capability differences by region.",
      "strengths": [
        "International AP and EU endpoints are explicitly documented.",
        "The service spans first-party Seed models and broader managed model workflows."
      ],
      "tradeoffs": [
        "EU feature and model coverage is narrower than AP coverage.",
        "Cross-region spillover behavior must be checked for residency-sensitive workloads."
      ],
      "score_profile": "inference_service",
      "score": {
        "operational_maturity": 8.2,
        "data_governance": 7.5,
        "regional_deployment_control": 8.0,
        "serving_flexibility": 8.5,
        "api_interoperability": 8.2,
        "traffic_resilience": 6.5,
        "customization_lifecycle": 8.5,
        "documentation_transparency": 8.0,
        "overall": 7.93
      },
      "terms": {
        "kind": "web_terms",
        "label": "ModelArk Terms and Conditions",
        "url": "https://docs.byteplus.com/api/docs/ModelArk/Terms_and_Conditions",
        "verified_at": "2026-09-12"
      },
      "evidence": [
        {
          "kind": "web",
          "label": "ModelArk overview",
          "url": "https://docs.byteplus.com/en/docs/modelark/1099455",
          "verified_at": "2026-08-28"
        },
        {
          "kind": "web",
          "label": "Region availability",
          "url": "https://docs.byteplus.com/api/docs/modelark/2191806",
          "verified_at": "2026-08-28"
        }
      ],
      "verified_at": "2026-08-28",
      "trust": {
        "verified_at": "2026-09-12",
        "properties": {
          "response_integrity": {
            "status": "undocumented",
            "note": "No signature, attestation, or equivalent mechanism for verifying that a response arrived unaltered from the model appears in the API reference or the security documentation.",
            "url": "https://docs.byteplus.com/en/docs/modelark/1099455",
            "scope": "BytePlus ModelArk documentation, for BytePlus ModelArk",
            "verified_at": "2026-09-12"
          },
          "upstream_disclosure": {
            "status": "documented_yes",
            "note": "The trust centre's security page states: \"Data confidentiality. Your privacy is paramount. Your data remains invisible to everyone except you.\" This is marketing prose rather than a scoped technical statement, and it does not name whether third-party model providers hosted on ModelArk receive request content.",
            "url": "https://www.byteplus.com/en/trust-center/security",
            "scope": "BytePlus trust centre, security page, for BytePlus ModelArk",
            "verified_at": "2026-09-12"
          },
          "credential_handling": {
            "status": "documented_no",
            "note": "The service offers no customer-supplied upstream-key path: \"Two authentication methods are supported: API key authentication (simple and convenient) and Access key authentication (traditional permission control for cloud resources...)\", both issued by BytePlus.",
            "url": "https://docs.byteplus.com/en/docs/ModelArk/1298459",
            "scope": "BytePlus ModelArk authentication guide, for BytePlus ModelArk",
            "verified_at": "2026-09-12"
          },
          "cache_isolation": {
            "status": "undocumented",
            "note": "No prompt or context caching feature or scope is documented for ModelArk.",
            "url": "https://docs.byteplus.com/en/docs/ModelArk/1398933",
            "scope": "BytePlus ModelArk documentation, for BytePlus ModelArk",
            "verified_at": "2026-09-12"
          },
          "vulnerability_disclosure": {
            "status": "undocumented",
            "note": "No security contact or disclosure policy is published on the trust centre's security page, and no security.txt is served on byteplus.com.",
            "url": "https://www.byteplus.com/en/trust-center/security",
            "scope": "BytePlus trust centre, security page, for BytePlus ModelArk",
            "verified_at": "2026-09-12"
          },
          "independent_audit": {
            "status": "undocumented",
            "note": "The trust centre's compliance page lists company-wide certifications and does not name ModelArk.",
            "url": "https://www.byteplus.com/en/trust-center/compliance",
            "scope": "BytePlus trust centre, compliance page, for BytePlus ModelArk",
            "verified_at": "2026-09-12"
          }
        },
        "findings": []
      }
    },
    {
      "id": "cerebras-inference",
      "name": "Cerebras Inference",
      "operator": "Cerebras Systems",
      "service_type": "managed_inference_host",
      "url": "https://inference-docs.cerebras.ai/",
      "description": "Cerebras's managed high-throughput inference API for a selected catalog of open models plus enterprise dedicated endpoints.",
      "service_boundary": "Represents the Cerebras hosted inference service, not Cerebras hardware systems, downloadable models, or customer-operated Cerebras deployments.",
      "delivery_modes": [
        "on_demand",
        "batch",
        "reserved_capacity",
        "dedicated_endpoint"
      ],
      "model_sources": [
        "open_weight",
        "customer_supplied"
      ],
      "api_styles": [
        "openai_compatible",
        "service_native"
      ],
      "regional_controls": "The shared API does not expose customer-selected regions in the reviewed docs; enterprise dedicated endpoints define separate capacity and placement arrangements.",
      "retention_controls": "Batch input files and results default to seven-day retention; prompt caches are ephemeral. Other request and logging behavior follows the service agreement and feature documentation.",
      "routing": "Customers select a hosted model or dedicated endpoint; service tiers affect admission priority rather than upstream-provider selection.",
      "customization": "Enterprise plans document fine-tuned models, uploaded model versions, and dedicated endpoints.",
      "strengths": [
        "The service is optimized for high token throughput on Cerebras infrastructure.",
        "Shared, batch, priority, and dedicated paths are documented."
      ],
      "tradeoffs": [
        "The shared production catalog is selective.",
        "Regional placement and custom endpoints require enterprise coordination."
      ],
      "score_profile": "inference_service",
      "score": {
        "operational_maturity": 8.2,
        "data_governance": 7.5,
        "regional_deployment_control": 5.8,
        "serving_flexibility": 9.0,
        "api_interoperability": 8.5,
        "traffic_resilience": 6.0,
        "customization_lifecycle": 8.3,
        "documentation_transparency": 8.5,
        "overall": 7.69
      },
      "terms": {
        "kind": "web_terms",
        "label": "Cerebras Terms of Service",
        "url": "https://www.cerebras.ai/terms-of-service",
        "verified_at": "2026-09-15"
      },
      "evidence": [
        {
          "kind": "web",
          "label": "Supported models",
          "url": "https://inference-docs.cerebras.ai/models/overview",
          "verified_at": "2026-08-28"
        },
        {
          "kind": "web",
          "label": "Batch processing",
          "url": "https://inference-docs.cerebras.ai/capabilities/batch",
          "verified_at": "2026-08-28"
        }
      ],
      "verified_at": "2026-08-28",
      "trust": {
        "verified_at": "2026-09-15",
        "properties": {
          "response_integrity": {
            "status": "undocumented",
            "note": "No signature, attestation, or equivalent mechanism for verifying that a response arrived unaltered from the model appears in the API reference or the security documentation.",
            "url": "https://inference-docs.cerebras.ai/",
            "scope": "Cerebras inference documentation, for Cerebras Inference",
            "verified_at": "2026-09-15"
          },
          "upstream_disclosure": {
            "status": "documented_yes",
            "note": "The terms of service state the operator's role over prompts and outputs: \"We reserve the right to use Service Content to provide the Service to you, comply with applicable law and enforce these Terms\", and that this \"does not grant Cerebras the right to use Service Content for the purpose of training or fine-tuning models\". No subprocessor is named; the trust centre's list is behind a request-access control.",
            "url": "https://www.cerebras.ai/terms-of-service",
            "scope": "Cerebras terms of service, for Cerebras Inference",
            "verified_at": "2026-09-15"
          },
          "credential_handling": {
            "status": "documented_no",
            "note": "The API offers no customer-supplied-key path: \"API keys are static secrets you generate in the Cloud Console and include in every request for authentication.\"",
            "url": "https://inference-docs.cerebras.ai/console/api-keys",
            "scope": "Cerebras Cloud Console API-keys page, for Cerebras Inference",
            "verified_at": "2026-09-15"
          },
          "cache_isolation": {
            "status": "documented_yes",
            "note": "The prompt-caching guide states: \"Prompt caches are never shared between organizations. Only members of your organization can benefit from caches created by identical prompts within your team.\"",
            "url": "https://inference-docs.cerebras.ai/capabilities/prompt-caching",
            "scope": "Cerebras prompt-caching guide, for Cerebras Inference",
            "verified_at": "2026-09-15"
          },
          "vulnerability_disclosure": {
            "status": "documented_yes",
            "note": "A responsible-disclosure policy is published: \"We welcome reports from the security community to help us identify and remediate vulnerabilities in a responsible manner.\"",
            "url": "https://www.cerebras.ai/cerebras-responsible-disclosure-policy",
            "scope": "Cerebras responsible-disclosure policy, for Cerebras Inference",
            "verified_at": "2026-09-15"
          },
          "independent_audit": {
            "status": "undocumented",
            "note": "The public trust centre shows company-level SOC 2 Type 2 material behind a request-access control (\"Use this Trust Center to learn about our security posture and request access to our security documentation.\") and nothing names the inference service, so it is recorded as undocumented for the named service.",
            "url": "https://trust.cerebras.ai",
            "scope": "Cerebras trust centre, read for Cerebras Inference",
            "verified_at": "2026-09-15"
          }
        },
        "findings": []
      }
    },
    {
      "id": "chutes",
      "name": "Chutes",
      "operator": "Chutes",
      "service_type": "managed_inference_host",
      "url": "https://chutes.ai/",
      "description": "An inference platform serving open-weight models on a decentralised GPU network, which also runs customer-supplied model code.",
      "service_boundary": "Represents the Chutes hosting service, not the underlying decentralised network protocol or the open-weight models it serves.",
      "delivery_modes": [
        "on_demand",
        "dedicated_endpoint"
      ],
      "model_sources": [
        "open_weight",
        "customer_supplied"
      ],
      "api_styles": [
        "openai_compatible",
        "service_native"
      ],
      "regional_controls": "Capacity comes from a decentralised operator network rather than named regions, and no customer control over processing geography is documented.",
      "retention_controls": "The terms state that API requests, responses, and application content are not used to train models, and that content is not logged for public inference. Customer-created deployments are noted as running code the operator does not control.",
      "routing": "Requests reach a named open-weight model on network capacity; private deployments run on dedicated hardware billed by time.",
      "customization": "Customers can deploy their own model code and weights as private endpoints on dedicated hardware.",
      "strengths": [
        "Confidential-compute execution is marked on every model in the public catalogue rather than offered as a premium tier.",
        "Capacity comes from a decentralised operator network rather than a single cloud, which changes the concentration risk profile.",
        "The platform's own core is published under a permissive licence, which is uncommon among hosted inference operators."
      ],
      "tradeoffs": [
        "The catalogue is open-weight only, so it is not an alternative for reaching proprietary frontier models.",
        "The operating entity is unclear, with no named legal company and a team page listing mostly handles.",
        "A pricing path on the operator's own site returns a not-found body under a success status, which would mislead automated checks."
      ],
      "score_profile": "inference_service",
      "score": {
        "operational_maturity": 6.0,
        "data_governance": 8.0,
        "regional_deployment_control": 3.0,
        "serving_flexibility": 7.4,
        "api_interoperability": 8.0,
        "traffic_resilience": 6.0,
        "customization_lifecycle": 7.6,
        "documentation_transparency": 6.4,
        "overall": 6.53
      },
      "terms": {
        "kind": "web_terms",
        "label": "Chutes Terms of Service",
        "url": "https://chutes.ai/terms",
        "verified_at": "2026-09-12"
      },
      "evidence": [
        {
          "kind": "web",
          "label": "Pricing and plans",
          "url": "https://chutes.ai/pricing",
          "verified_at": "2026-08-31"
        },
        {
          "kind": "web",
          "label": "Platform documentation",
          "url": "https://docs.chutes.ai/",
          "verified_at": "2026-08-31"
        }
      ],
      "verified_at": "2026-08-31",
      "trust": {
        "verified_at": "2026-09-12",
        "properties": {
          "response_integrity": {
            "status": "undocumented",
            "note": "The security-architecture page documents a validator-side check (\"cllmv (Chutes Large Language Model Verification): This component integrates with the SGLang inference engine to provide per-token verification hashes.\") that binds the model name and revision to output proofs, but it does not state that a client receives or can verify those proofs, so no client-verifiable mechanism is documented.",
            "url": "https://chutes.ai/docs/core-concepts/security-architecture",
            "scope": "Chutes security-architecture page, for Chutes",
            "verified_at": "2026-09-12"
          },
          "upstream_disclosure": {
            "status": "documented_yes",
            "note": "The terms state what the operator's servers see: \"In standard API mode, our servers may transiently read your request in memory to process it (e.g., extracting the model name for routing, or fetching images for vision models), but this data is never written to any database, log, or persistent storage.\" The security-architecture page states the compute is provided by anonymous, permissionless miners inside trusted execution environments.",
            "url": "https://chutes.ai/terms",
            "scope": "Chutes terms of service, for Chutes",
            "verified_at": "2026-09-12"
          },
          "credential_handling": {
            "status": "documented_no",
            "note": "The API offers no customer-supplied-key path: the authentication page documents Chutes-issued keys (\"Use the key as a bearer token.\") and OAuth sign-in only.",
            "url": "https://chutes.ai/docs/getting-started/authentication",
            "scope": "Chutes authentication page, for Chutes",
            "verified_at": "2026-09-12"
          },
          "cache_isolation": {
            "status": "undocumented",
            "note": "No prompt or prefix caching scope is documented on the security-architecture page or elsewhere in the documentation.",
            "url": "https://chutes.ai/docs/core-concepts/security-architecture",
            "scope": "Chutes security-architecture page, for Chutes",
            "verified_at": "2026-09-12"
          },
          "vulnerability_disclosure": {
            "status": "documented_yes",
            "note": "The contact page publishes a security route: \"Security Report vulnerabilities or security concerns. support@chutes.ai\".",
            "url": "https://chutes.ai/contact",
            "scope": "Chutes contact page, for Chutes",
            "verified_at": "2026-09-12"
          },
          "independent_audit": {
            "status": "undocumented",
            "note": "No SOC 2, ISO 27001, or equivalent attestation is named on the security-architecture page or elsewhere.",
            "url": "https://chutes.ai/docs/core-concepts/security-architecture",
            "scope": "Chutes security-architecture page, for Chutes",
            "verified_at": "2026-09-12"
          }
        },
        "findings": []
      }
    },
    {
      "id": "cloudflare-ai-gateway",
      "name": "Cloudflare AI Gateway",
      "operator": "Cloudflare",
      "service_type": "routing_aggregator",
      "url": "https://developers.cloudflare.com/ai-gateway/",
      "description": "A proxy that fronts requests to two dozen hosted model providers, adding caching, rate limiting, and analytics.",
      "service_boundary": "Represents Cloudflare's gateway product, not the upstream providers it fronts or Cloudflare's own model hosting.",
      "delivery_modes": [
        "on_demand"
      ],
      "model_sources": [
        "third_party_proprietary",
        "open_weight"
      ],
      "api_styles": [
        "service_native"
      ],
      "regional_controls": "Requests traverse the operator's global network; no gateway-level control over processing geography is documented.",
      "retention_controls": "Persistent log volumes differ by plan, and log forwarding is available on paid plans. Customer-supplied provider credentials can be stored so that the operator never holds the billing relationship.",
      "routing": "Caching, rate limiting, and request retry are configurable per gateway, and credential precedence runs from the request, to stored keys, to the operator's own billing.",
      "customization": "The gateway fronts existing provider APIs in their native formats; customer fine-tuning is not part of the product.",
      "strengths": [
        "Core caching, rate limiting, and analytics are available without charge on a free account and require no infrastructure.",
        "Customer-supplied provider credentials remove the operator from the billing path entirely.",
        "Data-loss prevention scanning is available on all plans rather than reserved for paid tiers."
      ],
      "tradeoffs": [
        "Providers connect through their own native request formats, and a single compatible endpoint across providers could not be confirmed from the documentation.",
        "Persistent log retention is capped far lower on the free tier, and forwarding logs elsewhere requires a paid plan.",
        "Credits bought through the operator's unified billing carry a stated percentage fee, avoidable only by supplying provider keys."
      ],
      "score_profile": "inference_service",
      "score": {
        "operational_maturity": 8.4,
        "data_governance": 7.2,
        "regional_deployment_control": 4.0,
        "serving_flexibility": 4.0,
        "api_interoperability": 6.4,
        "traffic_resilience": 8.2,
        "customization_lifecycle": 2.8,
        "documentation_transparency": 8.0,
        "overall": 6.2
      },
      "terms": {
        "kind": "web_terms",
        "label": "Cloudflare Self-Serve Subscription Agreement",
        "url": "https://www.cloudflare.com/terms/",
        "verified_at": "2026-08-31"
      },
      "evidence": [
        {
          "kind": "web",
          "label": "AI Gateway pricing",
          "url": "https://developers.cloudflare.com/ai-gateway/reference/pricing/",
          "verified_at": "2026-08-31"
        },
        {
          "kind": "web",
          "label": "Supported providers",
          "url": "https://developers.cloudflare.com/ai-gateway/usage/providers/",
          "verified_at": "2026-08-31"
        }
      ],
      "verified_at": "2026-08-31",
      "trust": {
        "verified_at": "2026-09-12",
        "properties": {
          "response_integrity": {
            "status": "undocumented",
            "note": "No signature, attestation, or equivalent mechanism for verifying that a response arrived unaltered from the upstream model appears in the AI Gateway overview, providers, caching, or bring-your-own-keys documentation.",
            "url": "https://developers.cloudflare.com/ai-gateway/",
            "scope": "Cloudflare AI Gateway documentation, for Cloudflare AI Gateway",
            "verified_at": "2026-09-12"
          },
          "upstream_disclosure": {
            "status": "documented_yes",
            "note": "The providers page (\"Connect to AI providers using their native API formats through AI Gateway.\") lists the twenty-four upstream providers a gateway can be configured for, from Workers AI and Amazon Bedrock through OpenAI, OpenRouter, and xAI; request content reaches whichever named provider a route targets.",
            "url": "https://developers.cloudflare.com/ai-gateway/usage/providers/",
            "scope": "Cloudflare AI Gateway providers page, for Cloudflare AI Gateway",
            "verified_at": "2026-09-12"
          },
          "credential_handling": {
            "status": "documented_yes",
            "note": "The bring-your-own-keys page states keys are stored with Secrets Store, whose page states: \"The secrets are securely encrypted and stored across all Cloudflare data centers.\" The encryption statement sits on the Secrets Store page rather than the AI Gateway page.",
            "url": "https://developers.cloudflare.com/secrets-store/",
            "scope": "Cloudflare Secrets Store documentation, read for AI Gateway bring-your-own-keys",
            "verified_at": "2026-09-12"
          },
          "cache_isolation": {
            "status": "documented_yes",
            "note": "The caching page documents the cache key: \"By default, AI Gateway constructs the cache key by concatenating the following and hashing the result with SHA-256: Provider (for example, openai, anthropic), Endpoint (the API path), Model (for example, gpt-4o), Provider authentication header (for example, the Authorization bearer token), Full request body.\" Entries are therefore keyed to the credential in use; the page does not address scope when Cloudflare-supplied rather than customer credentials are used.",
            "url": "https://developers.cloudflare.com/ai-gateway/configuration/caching/",
            "scope": "Cloudflare AI Gateway caching page, for Cloudflare AI Gateway",
            "verified_at": "2026-09-12"
          },
          "vulnerability_disclosure": {
            "status": "documented_yes",
            "note": "A platform-wide security.txt names a disclosure programme (\"Contact: https://hackerone.com/cloudflare\") and a policy page. AI Gateway is operated on the same domain under the same programme.",
            "url": "https://www.cloudflare.com/.well-known/security.txt",
            "scope": "Cloudflare security.txt, for Cloudflare AI Gateway",
            "verified_at": "2026-09-12"
          },
          "independent_audit": {
            "status": "documented_yes",
            "note": "The SOC 2 page's in-scope product list names the service: \"Browser Rendering, Cloudflare Images, Cloudflare for SaaS, D1, Durable Objects, Hyperdrive, Pages, R2, Stream, Vectorize, Workers, Workers AI, Cloudflare Workers KV, AI Gateway, Cloudflare Queues\". Scope is revised on an annual audit cycle.",
            "url": "https://www.cloudflare.com/trust-hub/compliance-resources/soc-2/",
            "scope": "Cloudflare SOC 2 compliance page, for Cloudflare AI Gateway",
            "verified_at": "2026-09-12"
          }
        },
        "findings": []
      }
    },
    {
      "id": "cloudflare-workers-ai",
      "name": "Cloudflare Workers AI",
      "operator": "Cloudflare",
      "service_type": "cloud_model_platform",
      "url": "https://developers.cloudflare.com/workers-ai/",
      "description": "Cloudflare's serverless inference platform for a selected catalog of open models deployed across Cloudflare's network.",
      "service_boundary": "Represents Workers AI inference, not Cloudflare AI Gateway, Vectorize, Workers runtime generally, model publishers, or customer-hosted GPU infrastructure.",
      "delivery_modes": [
        "on_demand",
        "batch"
      ],
      "model_sources": [
        "open_weight"
      ],
      "api_styles": [
        "service_native",
        "openai_compatible"
      ],
      "regional_controls": "Inference runs on Cloudflare's distributed network; the reviewed public product is not represented as a customer-selected single-region endpoint service.",
      "retention_controls": "Cloudflare's developer-platform terms and Workers AI data guidance govern request handling; AI Gateway logging is a separate optional service boundary.",
      "routing": "Customers select models from the Workers AI catalog; AI Gateway provider routing is a separate product.",
      "customization": "Fine-tunes and model catalog features are model-specific; arbitrary customer weight deployment is not claimed here.",
      "strengths": [
        "Inference can be invoked directly from Cloudflare Workers near application logic.",
        "A serverless API removes endpoint-capacity management for supported models."
      ],
      "tradeoffs": [
        "The model catalog is curated rather than arbitrary.",
        "Distributed execution is different from fixed-region residency."
      ],
      "score_profile": "inference_service",
      "score": {
        "operational_maturity": 8.7,
        "data_governance": 7.8,
        "regional_deployment_control": 5.8,
        "serving_flexibility": 7.2,
        "api_interoperability": 8.4,
        "traffic_resilience": 6.8,
        "customization_lifecycle": 5.5,
        "documentation_transparency": 8.2,
        "overall": 7.39
      },
      "terms": {
        "kind": "web_terms",
        "label": "Cloudflare Developer Platform Terms",
        "url": "https://www.cloudflare.com/service-specific-terms-developer-platform/",
        "verified_at": "2026-08-28"
      },
      "evidence": [
        {
          "kind": "web",
          "label": "Workers AI overview",
          "url": "https://developers.cloudflare.com/workers-ai/",
          "verified_at": "2026-08-28"
        },
        {
          "kind": "web",
          "label": "Workers AI models",
          "url": "https://developers.cloudflare.com/workers-ai/models/",
          "verified_at": "2026-08-28"
        }
      ],
      "verified_at": "2026-08-28",
      "trust": {
        "verified_at": "2026-09-12",
        "properties": {
          "response_integrity": {
            "status": "undocumented",
            "note": "No signature, attestation, or equivalent mechanism for verifying that a response arrived unaltered from the model appears in the API reference or the security documentation.",
            "url": "https://developers.cloudflare.com/workers-ai/",
            "scope": "Cloudflare Workers AI documentation, for Cloudflare Workers AI",
            "verified_at": "2026-09-12"
          },
          "upstream_disclosure": {
            "status": "undocumented",
            "note": "The data-usage page was read but states no sentence on whether third-party model licensors (Meta, Mistral, and others whose open-weight models Workers AI runs) receive request content; only Cloudflare's own role is described.",
            "url": "https://developers.cloudflare.com/workers-ai/platform/data-usage/",
            "scope": "Cloudflare Workers AI data-usage page, for Cloudflare Workers AI",
            "verified_at": "2026-09-12"
          },
          "credential_handling": {
            "status": "documented_no",
            "note": "The service offers no customer-supplied upstream-key path: \"After creating your API token, authenticate and make requests to the API using your API token in the request.\"",
            "url": "https://developers.cloudflare.com/workers-ai/get-started/rest-api/",
            "scope": "Cloudflare Workers AI REST API guide, for Cloudflare Workers AI",
            "verified_at": "2026-09-12"
          },
          "cache_isolation": {
            "status": "undocumented",
            "note": "The prompt-caching feature page documents the mechanism but never states whether a cache entry is scoped to the requesting account.",
            "url": "https://developers.cloudflare.com/workers-ai/features/prompt-caching",
            "scope": "Cloudflare Workers AI prompt-caching page, for Cloudflare Workers AI",
            "verified_at": "2026-09-12"
          },
          "vulnerability_disclosure": {
            "status": "documented_yes",
            "note": "Cloudflare's disclosure page states: \"If you have discovered a vulnerability in Cloudflare or another serious security or privacy issue, please submit it to our bounty program hosted by HackerOne.\"",
            "url": "https://www.cloudflare.com/disclosure/",
            "scope": "Cloudflare disclosure page, for Cloudflare Workers AI",
            "verified_at": "2026-09-12"
          },
          "independent_audit": {
            "status": "documented_yes",
            "note": "The SOC 2 scope table names the service under Developer Platform products: \"Developer Platform: Browser Rendering, Cloudflare Images, Cloudflare for SaaS, D1, Durable Objects, Hyperdrive, Pages, R2, Stream, Vectorize, Workers, Workers AI, Cloudflare Workers KV, AI Gateway, Cloudflare Queues\".",
            "url": "https://www.cloudflare.com/trust-hub/compliance-resources/soc-2/",
            "scope": "Cloudflare SOC 2 compliance page, for Cloudflare Workers AI",
            "verified_at": "2026-09-12"
          }
        },
        "findings": []
      }
    },
    {
      "id": "cohere-api",
      "name": "Cohere API",
      "operator": "Cohere",
      "service_type": "direct_model_api",
      "url": "https://docs.cohere.com/",
      "description": "Cohere's direct API platform for Command generation, Embed, Rerank, classification, and enterprise language-model workflows.",
      "service_boundary": "Represents Cohere's hosted SaaS API, not Cohere models served by Oracle, Bedrock, Azure, or another partner and not private customer-infrastructure deployments.",
      "delivery_modes": [
        "on_demand",
        "batch",
        "dedicated_endpoint"
      ],
      "model_sources": [
        "first_party"
      ],
      "api_styles": [
        "service_native",
        "openai_compatible"
      ],
      "regional_controls": "Private and partner deployments may provide different residency controls; the public direct-API docs do not establish one customer-selected regional endpoint model.",
      "retention_controls": "For paying SaaS Platform customers, Cohere's enterprise data commitments delete logged prompts and generations after 30 days unless law, a customer contract, or flagged misuse requires otherwise; enterprise customers can opt out of training use in dashboard settings, and approved enterprise customers can get zero data retention, under which prompts and generations are not logged. Trial API keys fall under the Terms of Use, whose default grant lets Cohere use customer data to improve and benchmark its offerings, including by sharing API and fine-tuning data with third parties.",
      "routing": "Customers select Cohere models and task APIs rather than upstream inference providers.",
      "customization": "Fine-tuning was deprecated on September 15, 2025. Model Vault serves Cohere models in Cohere-managed, single-tenant deployments with control over model selection and scaling; private customer-infrastructure deployments follow separate eligibility paths.",
      "strengths": [
        "First-party generation, embedding, and reranking APIs share one enterprise-oriented platform.",
        "The service supports retrieval-heavy application patterns beyond generation alone."
      ],
      "tradeoffs": [
        "Data commitments differ between trial and paying use: trial API keys fall under Terms of Use that allow sharing API data with third parties, and zero data retention requires enterprise approval.",
        "The Terms of Use and SaaS Agreement bar using the service for benchmarking or competitive analysis.",
        "Fine-tuning is no longer offered, so customization relies on model choice and Model Vault deployment configuration.",
        "The direct catalog is Cohere-centered rather than vendor-neutral."
      ],
      "score_profile": "inference_service",
      "score": {
        "operational_maturity": 8.4,
        "data_governance": 7.5,
        "regional_deployment_control": 6.5,
        "serving_flexibility": 7.2,
        "api_interoperability": 7.8,
        "traffic_resilience": 5.5,
        "customization_lifecycle": 5.5,
        "documentation_transparency": 8.0,
        "overall": 7.17
      },
      "terms": {
        "kind": "web_terms",
        "label": "Cohere Terms of Use",
        "url": "https://cohere.com/terms-of-use",
        "verified_at": "2026-09-15"
      },
      "evidence": [
        {
          "kind": "web",
          "label": "Cohere documentation",
          "url": "https://docs.cohere.com/",
          "verified_at": "2026-09-15"
        },
        {
          "kind": "web",
          "label": "Cohere legal policies",
          "url": "https://cohere.com/legal",
          "verified_at": "2026-09-15"
        },
        {
          "kind": "web",
          "label": "Enterprise data commitments",
          "url": "https://cohere.com/enterprise-data-commitments",
          "verified_at": "2026-09-15"
        },
        {
          "kind": "web",
          "label": "Commercial SaaS Agreement",
          "url": "https://cohere.com/saas-agreement",
          "verified_at": "2026-09-15"
        },
        {
          "kind": "web",
          "label": "Compatibility API for the OpenAI SDK",
          "url": "https://docs.cohere.com/docs/compatibility-api",
          "verified_at": "2026-09-15"
        },
        {
          "kind": "web",
          "label": "Fine-tuning deprecation notice",
          "url": "https://docs.cohere.com/docs/fine-tuning",
          "verified_at": "2026-09-15"
        },
        {
          "kind": "web",
          "label": "Model Vault overview",
          "url": "https://docs.cohere.com/docs/model-vault",
          "verified_at": "2026-09-15"
        },
        {
          "kind": "web",
          "label": "Embed Jobs API",
          "url": "https://docs.cohere.com/docs/embed-jobs-api",
          "verified_at": "2026-09-15"
        }
      ],
      "verified_at": "2026-09-15",
      "trust": {
        "verified_at": "2026-09-12",
        "properties": {
          "response_integrity": {
            "status": "documented_yes",
            "note": "Scoped to the Model Vault Encrypted tier only. Its confidential-computing page states: \"Verify before you trust: before any data is sent, the client verifies the deployment through remote attestation and refuses the connection if the environment is not genuine or is running unexpected code.\" The default API carries no signature or attestation.",
            "url": "https://docs.cohere.com/docs/model-vault/encrypted/confidential-computing",
            "scope": "Cohere Model Vault Encrypted confidential-computing page, for the Cohere API",
            "verified_at": "2026-09-12"
          },
          "upstream_disclosure": {
            "status": "documented_yes",
            "note": "The privacy policy states the operator collects the content: \"we collect content you submit to the Cohere Products, and outputs generated by the Cohere Products\". No subprocessor is named on a page this review could read.",
            "url": "https://cohere.com/privacy",
            "scope": "Cohere privacy policy, for the Cohere API",
            "verified_at": "2026-09-12"
          },
          "credential_handling": {
            "status": "documented_no",
            "note": "The API offers no customer-supplied-key path: \"To make a request to any model, you must pass in the Authorization Header and the request must be made through a POST request. The content of Authorization should be in the shape of BEARER [API_KEY].\"",
            "url": "https://docs.cohere.com/reference/about",
            "scope": "Cohere API reference, for the Cohere API",
            "verified_at": "2026-09-12"
          },
          "cache_isolation": {
            "status": "undocumented",
            "note": "No prompt-caching feature or cache scope is documented in the chat reference.",
            "url": "https://docs.cohere.com/reference/chat",
            "scope": "Cohere chat API reference, for the Cohere API",
            "verified_at": "2026-09-12"
          },
          "vulnerability_disclosure": {
            "status": "documented_yes",
            "note": "The security page publishes a bug-bounty programme: \"The Cohere Bug Bounty program is designed to recognize the community's support in protecting our users' privacy and security.\"",
            "url": "https://cohere.com/security",
            "scope": "Cohere security page, for the Cohere API",
            "verified_at": "2026-09-12"
          },
          "independent_audit": {
            "status": "documented_yes",
            "note": "The security page names the API: \"Our API platform is hosted on industry-leading cloud infrastructure and is SOC 2 Type II compliant\". The report is behind a request-access control.",
            "url": "https://cohere.com/security",
            "scope": "Cohere security page, for the Cohere API",
            "verified_at": "2026-09-12"
          }
        },
        "findings": []
      }
    },
    {
      "id": "orcarouter",
      "name": "OrcaRouter",
      "operator": "Continuum AI Pte. Ltd.",
      "service_type": "routing_aggregator",
      "url": "https://www.orcarouter.ai/",
      "description": "OpenAI-, Anthropic-, and Gemini-compatible gateway API that routes requests across providers at the providers' published prices, with adaptive auto-routing, fallback chains, bring-your-own-key, zero data retention as the default, and workspace-scoped guardrails and agent firewall.",
      "service_boundary": "Represents the hosted OrcaRouter routing service at api.orcarouter.ai, operated by CONTINUUM AI PTE. LTD. (Singapore). It is not the upstream providers it forwards to, which keep their own terms and retention, and not OrcaRouter-Lite, the vendor's separate MIT-licensed self-hosted gateway edition, even though a Lite deployment can register the hosted service as one provider in its routing chain. The published MCP server is an optional client tool, not this service boundary.",
      "delivery_modes": [
        "on_demand"
      ],
      "model_sources": [
        "third_party_proprietary",
        "open_weight",
        "customer_supplied"
      ],
      "api_styles": [
        "openai_compatible",
        "anthropic_compatible",
        "service_native"
      ],
      "regional_controls": "No customer-selected processing geography or regional endpoint is documented. The privacy policy states the service is operated from Singapore and relies on cloud infrastructure in Singapore, the United States, and Japan, with upstream providers and payment and email subprocessors in the United States and the European Union; the upstream provider actually serving a request determines where content is processed.",
      "retention_controls": "The privacy policy and the zero-data-retention documentation state that prompt and output content is processed in transit and never written to disk, and that content is not used for training. Per-request metadata (timestamp, key identifier, model, token counts, latency, status, truncated error, source IP) is retained for 13 months, server and security logs for 90 days, support correspondence for 24 months, and billing records for 7 years; account data is purged within 30 days of deletion. The guarantee covers OrcaRouter's own servers, not upstream providers; a BYOK key carries zero-retention traffic only after the workspace owner attests the provider account is configured for zero retention.",
      "routing": "A per-account orcarouter/auto router picks a model per request using gated-adaptive or LinUCB strategies seeded from live traffic, alongside balanced, quality, and cheapest strategies; named routers, programmable YAML-plus-CEL routing DSLs with shadow and canary rollout, session-affinity headers, and frontier escalation are documented. Fallback chains are set via extra_body.models and health-based failover is described as best-effort in the terms. BYOK keys fall back to platform capacity by default with a per-provider pin option that forbids fallback.",
      "customization": "Bring-your-own-key attaches upstream provider keys or custom OpenAI-compatible endpoints with model mapping to a workspace, billed as a platform fee rather than resold tokens; workspace-scoped prompt registry, guardrails content policy, and an agent firewall that evaluates tool calls and MCP dispatches with deterministic allow, deny, sanitize, hold-for-approval, or cost-cap rules are documented. No fine-tuning or deployment lifecycle for customer artifacts is offered.",
      "strengths": [
        "Zero-markup pass-through billing is stated in the terms and the documentation, with BYOK priced as a platform fee and even a documented fee-free configuration.",
        "Four client surfaces in one endpoint: OpenAI chat completions and responses, Anthropic messages, and a Gemini native passthrough, with documented SDK wiring and protocol translation between them.",
        "Zero data retention is the default rather than an opt-in flag, and the documentation is explicit that the guarantee excludes upstream providers and that BYOK ZDR requires owner attestation.",
        "Routing depth is unusually broad for a new router: adaptive per-request model selection, programmable routing DSL, session affinity, fallback chains, and BYOK failure policies with a per-provider no-fallback pin."
      ],
      "tradeoffs": [
        "The service is young (the open-source Lite repository dates from May 2026) with thin third-party adoption; at least one maintainer rejected its vendor-submitted integration PRs as a listing campaign, so ecosystem presence should not be read as independent endorsement.",
        "Processing geography is not customer-selectable and no regional endpoints are documented; requests land in Singapore, US, or Japan infrastructure depending on the upstream chosen.",
        "Only an on-demand path is documented: no batch, reserved capacity, or dedicated endpoint, and failover is contractually best-effort rather than guaranteed.",
        "No independent attestations (SOC 2, ISO 27001) or status page are documented, and the service has no first-party model line of its own to fall back on."
      ],
      "score_profile": "inference_service",
      "score": {
        "operational_maturity": 4.5,
        "data_governance": 9.0,
        "regional_deployment_control": 3.0,
        "serving_flexibility": 5.0,
        "api_interoperability": 8.5,
        "traffic_resilience": 7.0,
        "customization_lifecycle": 6.5,
        "documentation_transparency": 8.5,
        "overall": 6.36
      },
      "trust": {
        "verified_at": "2026-09-18",
        "properties": {
          "response_integrity": {
            "status": "undocumented",
            "note": "No signature, attestation, or equivalent mechanism by which a client verifies that a response arrived unaltered from the upstream model appears in the API reference or the security documentation: the X-Orca-* response headers report routing decisions (\"X-Orca-* headers that tell you how your request was routed\"), and the Ed25519-signed compliance reports are audit artifacts generated on request, not per-response verification.",
            "url": "https://docs.orcarouter.ai/routing/response-headers.md",
            "scope": "OrcaRouter response-headers documentation, for the OrcaRouter API",
            "verified_at": "2026-09-18"
          },
          "upstream_disclosure": {
            "status": "documented_yes",
            "note": "The privacy policy names the parties that receive request plaintext: the subprocessor table lists \"Upstream LLM providers — OpenAI, Anthropic, Google, Together AI, Groq, and others — Processing prompts you route to them\". The data-handling guide states: \"When you send a request, we forward it to the upstream provider (OpenAI, Anthropic, Google, etc.) under their own terms and privacy policy.\"",
            "url": "https://www.orcarouter.ai/privacy-policy",
            "scope": "OrcaRouter privacy policy, for the OrcaRouter API",
            "verified_at": "2026-09-18"
          },
          "credential_handling": {
            "status": "documented_yes",
            "note": "The BYOK guide states customer-supplied provider keys are never shown again after saving (\"The raw secret is never returned after you save it. The console only ever shows a masked label.\") and that a stored secret can fail only by becoming undecryptable, the documented trigger for auto-disabling a key: \"the stored secret can no longer be decrypted\". The console states the storage directly: \"Keys are encrypted at rest and only decrypted in memory at request time.\"",
            "url": "https://docs.orcarouter.ai/operations/byok.md",
            "scope": "OrcaRouter bring-your-own-key guide, for the OrcaRouter API",
            "verified_at": "2026-09-18"
          },
          "cache_isolation": {
            "status": "undocumented",
            "note": "The session-affinity guide states what the provider's prompt cache is keyed on — \"the same upstream deployment and API key\" — and that conversation pins \"never cross[ ] accounts. Two accounts sending the same head get separate pins.\" BYOK traffic therefore caches under the customer's own provider account, but no page states whose upstream credentials platform-credentialed traffic runs under, so whether provider caches pool across customers on shared credentials is not established.",
            "url": "https://docs.orcarouter.ai/routing/session-affinity.md",
            "scope": "OrcaRouter session-affinity guide, for the OrcaRouter API",
            "verified_at": "2026-09-18"
          },
          "vulnerability_disclosure": {
            "status": "documented_yes",
            "note": "A security.txt file is published with a contact address (\"Contact: mailto:security@orcarouter.ai\"), a policy link (\"Policy: https://www.orcarouter.ai/trust#disclosure\"), and an expiry in 2027; the trust centre's Report a vulnerability section states: \"If you have found a security issue in OrcaRouter, we want to hear about it.\"",
            "url": "https://www.orcarouter.ai/.well-known/security.txt",
            "scope": "OrcaRouter security.txt, for the OrcaRouter API",
            "verified_at": "2026-09-18"
          },
          "independent_audit": {
            "status": "documented_yes",
            "note": "The trust centre's Certifications and commitments section names SOC 2 (\"Independent audit of our security, availability and confidentiality controls against the AICPA Trust Services Criteria.\", pill \"Type II report\") and ISO (\"Certified information security management system covering the platform and the organisation that operates it.\", pill \"Certified\") for OrcaRouter, with Auditor, Period, and Valid-until fields. The reports and certificates are available to customers and prospects under NDA, so the attestation is recorded as an operator claim.",
            "url": "https://www.orcarouter.ai/trust",
            "scope": "OrcaRouter trust centre, for the OrcaRouter API",
            "verified_at": "2026-09-18"
          }
        },
        "findings": []
      },
      "terms": {
        "kind": "web_terms",
        "label": "OrcaRouter Terms of Service",
        "url": "https://www.orcarouter.ai/user-agreement",
        "verified_at": "2026-09-18"
      },
      "evidence": [
        {
          "kind": "web",
          "label": "Welcome, API surfaces, and provider catalog",
          "url": "https://docs.orcarouter.ai/introduction.md",
          "verified_at": "2026-09-18"
        },
        {
          "kind": "web",
          "label": "Data handling and retention schedule",
          "url": "https://docs.orcarouter.ai/operations/data-handling.md",
          "verified_at": "2026-09-18"
        },
        {
          "kind": "web",
          "label": "Zero data retention default and upstream caveat",
          "url": "https://docs.orcarouter.ai/operations/zero-data-retention.md",
          "verified_at": "2026-09-18"
        },
        {
          "kind": "web",
          "label": "Bring-your-own-key, fees, and fallback policy",
          "url": "https://docs.orcarouter.ai/operations/byok.md",
          "verified_at": "2026-09-18"
        },
        {
          "kind": "web",
          "label": "Auto router strategies",
          "url": "https://docs.orcarouter.ai/routing/auto-router.md",
          "verified_at": "2026-09-18"
        },
        {
          "kind": "web",
          "label": "Privacy policy",
          "url": "https://www.orcarouter.ai/privacy-policy",
          "verified_at": "2026-09-18"
        },
        {
          "kind": "web",
          "label": "Terms of service",
          "url": "https://www.orcarouter.ai/user-agreement",
          "verified_at": "2026-09-18"
        }
      ],
      "verified_at": "2026-09-18"
    },
    {
      "id": "databricks-foundation-model-apis",
      "name": "Databricks Foundation Model APIs",
      "operator": "Databricks",
      "service_type": "cloud_model_platform",
      "url": "https://docs.databricks.com/aws/en/machine-learning/foundation-model-apis",
      "description": "Databricks' managed foundation-model serving layer for pay-per-token, priority, provisioned-throughput, batch, and customer-model workloads.",
      "service_boundary": "Represents Databricks-hosted Foundation Model APIs and serving endpoints, not external-model credentials merely governed through Unity AI Gateway, MLflow alone, or model publishers' direct APIs.",
      "delivery_modes": [
        "on_demand",
        "batch",
        "reserved_capacity",
        "dedicated_endpoint"
      ],
      "model_sources": [
        "third_party_proprietary",
        "open_weight",
        "customer_supplied"
      ],
      "api_styles": [
        "service_native",
        "openai_compatible"
      ],
      "regional_controls": "Databricks documents region-specific model availability and treats Foundation Model APIs as a Designated Service using Databricks Geos for processing residency.",
      "retention_controls": "Logging and data processing follow workspace, serving-endpoint, and Databricks Geo controls; externally hosted models remain a separate downstream data boundary.",
      "routing": "Unity AI Gateway can apply governance across hosted and external model endpoints; this record's managed-host boundary covers Databricks-served models and endpoints.",
      "customization": "Provisioned throughput supports fine-tuned variants, supported architectures, and customer model weights registered through Unity Catalog.",
      "strengths": [
        "Inference integrates with Unity Catalog governance and Databricks data workflows.",
        "Pay-per-token, priority, provisioned, and batch modes cover distinct workloads."
      ],
      "tradeoffs": [
        "Capabilities and model catalogs differ across AWS, Azure, GCP, and regions.",
        "External model routing can add separate provider terms beyond the hosted-service boundary."
      ],
      "score_profile": "inference_service",
      "score": {
        "operational_maturity": 9.0,
        "data_governance": 8.8,
        "regional_deployment_control": 8.6,
        "serving_flexibility": 9.4,
        "api_interoperability": 8.5,
        "traffic_resilience": 7.8,
        "customization_lifecycle": 9.3,
        "documentation_transparency": 8.8,
        "overall": 8.79
      },
      "terms": {
        "kind": "web_terms",
        "label": "Databricks Terms of Use",
        "url": "https://www.databricks.com/legal/terms-of-use",
        "verified_at": "2026-08-28"
      },
      "evidence": [
        {
          "kind": "web",
          "label": "Foundation Model APIs overview",
          "url": "https://docs.databricks.com/aws/en/machine-learning/foundation-model-apis",
          "verified_at": "2026-08-28"
        },
        {
          "kind": "web",
          "label": "Supported models and regions",
          "url": "https://docs.databricks.com/aws/en/machine-learning/model-serving/foundation-model-overview",
          "verified_at": "2026-08-28"
        },
        {
          "kind": "web",
          "label": "Provisioned throughput",
          "url": "https://docs.databricks.com/aws/en/machine-learning/foundation-model-apis/deploy-prov-throughput-foundation-model-apis",
          "verified_at": "2026-08-28"
        }
      ],
      "verified_at": "2026-08-28",
      "trust": {
        "verified_at": "2026-09-12",
        "properties": {
          "response_integrity": {
            "status": "undocumented",
            "note": "No signature, attestation, or equivalent mechanism for verifying that a response arrived unaltered from the model appears in the API reference or the security documentation.",
            "url": "https://docs.databricks.com/aws/en/machine-learning/model-serving/score-foundation-models",
            "scope": "Databricks Foundation Model APIs documentation, for Databricks Foundation Model APIs",
            "verified_at": "2026-09-12"
          },
          "upstream_disclosure": {
            "status": "documented_yes",
            "note": "Scoped to the external-models feature. The documentation states: \"External models are third-party models hosted outside of Databricks.\" Whether Databricks-hosted proprietary models (its own GPT, Claude, and Gemini offerings) route content to the underlying model's own infrastructure is not stated.",
            "url": "https://docs.databricks.com/aws/en/machine-learning/foundation-models/external-models/",
            "scope": "Databricks external-models documentation, for Databricks Foundation Model APIs",
            "verified_at": "2026-09-12"
          },
          "credential_handling": {
            "status": "documented_yes",
            "note": "The model-serving documentation states: \"You must store credentials like your API key or other tokens as a Databricks secret.\" Databricks secrets are held in an encrypted store.",
            "url": "https://docs.databricks.com/aws/en/machine-learning/model-serving/store-env-variable-model-serving",
            "scope": "Databricks model-serving secrets documentation, for Databricks Foundation Model APIs",
            "verified_at": "2026-09-12"
          },
          "cache_isolation": {
            "status": "documented_yes",
            "note": "The operator's own engineering blog states: \"Security is a first-class concern at Databricks. Prompt caches are isolated, only reside in volatile memory and are never persisted.\"",
            "url": "https://www.databricks.com/blog/accelerating-llm-inference-prompt-caching-open-source-models-databricks",
            "scope": "Databricks prompt-caching engineering blog post, for Databricks Foundation Model APIs",
            "verified_at": "2026-09-12"
          },
          "vulnerability_disclosure": {
            "status": "documented_yes",
            "note": "A security.txt file is published: \"Policy: https://www.databricks.com/trust\", \"Contact: security@databricks.com\", \"Bug Bounty: https://hackerone.com/databricks\".",
            "url": "https://www.databricks.com/.well-known/security.txt",
            "scope": "Databricks security.txt, for Databricks Foundation Model APIs",
            "verified_at": "2026-09-12"
          },
          "independent_audit": {
            "status": "undocumented",
            "note": "The Databricks compliance page states SOC reports are available on request and does not name Foundation Model APIs specifically.",
            "url": "https://www.databricks.com/trust/compliance/soc",
            "scope": "Databricks SOC compliance page, read for Databricks Foundation Model APIs",
            "verified_at": "2026-09-12"
          }
        },
        "findings": []
      }
    },
    {
      "id": "deepinfra",
      "name": "DeepInfra",
      "operator": "DeepInfra",
      "service_type": "managed_inference_host",
      "url": "https://deepinfra.com/docs",
      "description": "DeepInfra's serverless and dedicated managed inference service for text, embeddings, reranking, image, audio, and other open models.",
      "service_boundary": "Represents DeepInfra-hosted APIs and deployments, not model publishers, client libraries, or customer-operated copies of the same weights.",
      "delivery_modes": [
        "on_demand",
        "dedicated_endpoint"
      ],
      "model_sources": [
        "open_weight",
        "customer_supplied"
      ],
      "api_styles": [
        "openai_compatible",
        "service_native"
      ],
      "regional_controls": "The reviewed serverless documentation does not establish customer-selected regions for every model; dedicated deployment placement requires plan-specific review.",
      "retention_controls": "Data handling follows DeepInfra's terms and privacy documentation; dedicated and serverless logging behavior should be verified separately.",
      "routing": "Customers select a DeepInfra-hosted model or endpoint rather than upstream inference providers.",
      "customization": "Dedicated deployments and custom model hosting are available for supported artifacts.",
      "strengths": [
        "A broad open-model catalog is available through compatible and task-specific APIs.",
        "Serverless and dedicated paths address different capacity needs."
      ],
      "tradeoffs": [
        "Catalog lifecycle follows upstream model availability.",
        "Enterprise regional and retention controls require plan-specific confirmation."
      ],
      "score_profile": "inference_service",
      "score": {
        "operational_maturity": 7.8,
        "data_governance": 5.8,
        "regional_deployment_control": 5.5,
        "serving_flexibility": 7.8,
        "api_interoperability": 8.4,
        "traffic_resilience": 5.2,
        "customization_lifecycle": 8.0,
        "documentation_transparency": 7.2,
        "overall": 6.91
      },
      "terms": {
        "kind": "web_terms",
        "label": "DeepInfra Terms of Use",
        "url": "https://deepinfra.com/terms",
        "verified_at": "2026-09-15"
      },
      "evidence": [
        {
          "kind": "web",
          "label": "DeepInfra documentation",
          "url": "https://deepinfra.com/docs",
          "verified_at": "2026-08-28"
        }
      ],
      "verified_at": "2026-09-12",
      "trust": {
        "verified_at": "2026-09-15",
        "properties": {
          "response_integrity": {
            "status": "undocumented",
            "note": "No signature, attestation, or equivalent mechanism for verifying that a response arrived unaltered from the model appears in the API reference or the security documentation.",
            "url": "https://deepinfra.com/docs",
            "scope": "DeepInfra documentation, for DeepInfra",
            "verified_at": "2026-09-15"
          },
          "upstream_disclosure": {
            "status": "documented_yes",
            "note": "The data-privacy page names the third parties that receive content for partner models: \"If you opt to use a Google model, Google will store the output as outlined in their Privacy Notice. ... If you opt to use an Anthropic model, Anthropic will store the output as outlined in their Trust Center.\" The operator serves the open-weight catalogue itself.",
            "url": "https://docs.deepinfra.com/account/data-privacy",
            "scope": "DeepInfra data-privacy page, for DeepInfra",
            "verified_at": "2026-09-15"
          },
          "credential_handling": {
            "status": "documented_no",
            "note": "The API offers no customer-supplied-key path: \"DeepInfra supports two authentication methods: API keys — full-access tokens for your own use Scoped JWTs — short-lived, scope-limited tokens you can issue to third parties\".",
            "url": "https://docs.deepinfra.com/account/authentication",
            "scope": "DeepInfra authentication page, for DeepInfra",
            "verified_at": "2026-09-15"
          },
          "cache_isolation": {
            "status": "documented_yes",
            "note": "The prompt-caching page states: \"Caches are per-model and per-account\".",
            "url": "https://docs.deepinfra.com/chat/prompt-caching",
            "scope": "DeepInfra prompt-caching page, for DeepInfra",
            "verified_at": "2026-09-15"
          },
          "vulnerability_disclosure": {
            "status": "undocumented",
            "note": "No security contact or disclosure policy appears in the terms or the documentation, no security.txt is served, and the trust portal refuses automated fetches.",
            "url": "https://deepinfra.com/terms",
            "scope": "DeepInfra terms of service, for DeepInfra",
            "verified_at": "2026-09-15"
          },
          "independent_audit": {
            "status": "documented_yes",
            "note": "The operator's funding announcement names the service: \"150+ open-source models through OpenAI-compatible APIs, zero data retention, SOC 2 and ISO 27001 certified — production-grade from day one.\" The trust portal holding the reports refuses automated fetches.",
            "url": "https://deepinfra.com/blog/deepinfra-series-b",
            "scope": "DeepInfra Series B announcement, for DeepInfra",
            "verified_at": "2026-09-15"
          }
        },
        "findings": [
          {
            "claim": "In 7 of these providers, we detected global cache sharing. The audit table records caching detected at the global level for Deep Infra's Llama 3.1 8B Instruct endpoint; the audits were conducted in September and early October 2024 and disclosed to each provider in October 2024.",
            "published_at": "2025-07-13",
            "source": {
              "label": "Auditing Prompt Caching in Language Model APIs, arXiv 2502.07776v2",
              "url": "https://arxiv.org/abs/2502.07776v2",
              "kind": "third_party",
              "content_sha256": "2d15ac6cd0431b885187028fef6cdb2f15feb328ba891b4e04e933d76fa3f624",
              "fetched_at": "2026-09-12"
            },
            "operator_response": null,
            "resolved": {
              "url": "https://docs.deepinfra.com/chat/prompt-caching",
              "verified_at": "2026-09-12",
              "summary": "The current prompt-caching page states caches are per-model and per-account; the paper does not name DeepInfra among the providers that confirmed a change."
            }
          }
        ]
      }
    },
    {
      "id": "deepseek-api",
      "name": "DeepSeek API",
      "operator": "DeepSeek",
      "service_type": "direct_model_api",
      "url": "https://api-docs.deepseek.com/",
      "description": "DeepSeek's direct managed API for its chat and reasoning model families through documented compatible interfaces.",
      "service_boundary": "Represents the DeepSeek Open Platform API, not the DeepSeek chat product, downloadable model weights, or DeepSeek models hosted by third parties.",
      "delivery_modes": [
        "on_demand"
      ],
      "model_sources": [
        "first_party"
      ],
      "api_styles": [
        "openai_compatible",
        "anthropic_compatible"
      ],
      "regional_controls": "The reviewed public documentation exposes a global API base URL and does not establish customer-selected inference regions.",
      "retention_controls": "The platform terms and privacy materials govern service data; the reviewed technical docs document request isolation but do not establish a universal Zero Data Retention option.",
      "routing": "Customers select DeepSeek-operated model endpoints; compatible interfaces do not make the service a router.",
      "customization": "The reviewed public direct API does not document customer-imported weights or dedicated deployments.",
      "strengths": [
        "Direct first-party access with widely used compatible API conventions.",
        "Technical documentation identifies model versions, limits, and isolation behavior."
      ],
      "tradeoffs": [
        "Public regional and retention controls are less explicit than major cloud platforms.",
        "The direct service is limited to DeepSeek model families.",
        "A January 2025 researcher disclosure reported a publicly exposed DeepSeek database holding chat history and secret keys, secured after disclosure; the operator published no statement, and no security contact or attestation is documented."
      ],
      "score_profile": "inference_service",
      "score": {
        "operational_maturity": 7.2,
        "data_governance": 5.5,
        "regional_deployment_control": 3.5,
        "serving_flexibility": 5.2,
        "api_interoperability": 8.8,
        "traffic_resilience": 4.5,
        "customization_lifecycle": 3.5,
        "documentation_transparency": 6.8,
        "overall": 5.68
      },
      "terms": {
        "kind": "web_terms",
        "label": "DeepSeek Open Platform Terms of Service",
        "url": "https://cdn.deepseek.com/policies/en-US/deepseek-open-platform-terms-of-service.html",
        "verified_at": "2026-08-28"
      },
      "evidence": [
        {
          "kind": "web",
          "label": "DeepSeek API documentation",
          "url": "https://api-docs.deepseek.com/api/deepseek-api/",
          "verified_at": "2026-08-28"
        },
        {
          "kind": "web",
          "label": "Rate limits and request isolation",
          "url": "https://api-docs.deepseek.com/quick_start/rate_limit/",
          "verified_at": "2026-08-28"
        }
      ],
      "verified_at": "2026-09-12",
      "trust": {
        "verified_at": "2026-09-12",
        "properties": {
          "response_integrity": {
            "status": "undocumented",
            "note": "No signature, attestation, or equivalent mechanism for verifying that a response arrived unaltered from the model appears in the API reference or the security documentation.",
            "url": "https://api-docs.deepseek.com/api/deepseek-api/",
            "scope": "DeepSeek API reference, for the DeepSeek API",
            "verified_at": "2026-09-12"
          },
          "upstream_disclosure": {
            "status": "documented_yes",
            "note": "The privacy policy states the operator collects the content: \"When you use our Services, we may collect your text input, voice input, prompt, uploaded files, photos, feedback, chat history, or other content that you provide to our model and Services\". No subprocessor is named.",
            "url": "https://cdn.deepseek.com/policies/en-US/deepseek-privacy-policy.html",
            "scope": "DeepSeek privacy policy, for the DeepSeek API",
            "verified_at": "2026-09-12"
          },
          "credential_handling": {
            "status": "documented_no",
            "note": "The API offers no customer-supplied-key path: \"To use the DeepSeek API, please create an API key first\" and every documented request uses that key.",
            "url": "https://api-docs.deepseek.com/api/deepseek-api/",
            "scope": "DeepSeek API reference, for the DeepSeek API",
            "verified_at": "2026-09-12"
          },
          "cache_isolation": {
            "status": "documented_yes",
            "note": "The chat-completion reference documents a per-request control: \"user_id can be used for KVCache isolation for privacy management.\" It does not state the cache scope when the field is omitted.",
            "url": "https://api-docs.deepseek.com/api/create-chat-completion/",
            "scope": "DeepSeek chat-completion reference, for the DeepSeek API",
            "verified_at": "2026-09-12"
          },
          "vulnerability_disclosure": {
            "status": "undocumented",
            "note": "No security contact or disclosure policy appears in the API documentation, the terms, or the privacy policy, and no security.txt is served on any DeepSeek host checked.",
            "url": "https://api-docs.deepseek.com/",
            "scope": "DeepSeek API documentation, for the DeepSeek API",
            "verified_at": "2026-09-12"
          },
          "independent_audit": {
            "status": "undocumented",
            "note": "No SOC 2, ISO 27001, or equivalent attestation is named in the API documentation, the terms, or the privacy policy.",
            "url": "https://api-docs.deepseek.com/",
            "scope": "DeepSeek API documentation, for the DeepSeek API",
            "verified_at": "2026-09-12"
          }
        },
        "findings": [
          {
            "claim": "A publicly accessible ClickHouse database belonging to DeepSeek allowed full control over database operations, including the ability to access internal data. The exposure included over a million lines of log streams containing chat history, secret keys, backend details, and other highly sensitive information. Wiz reports it disclosed the issue to DeepSeek, which promptly secured the exposure.",
            "published_at": "2025-01-29",
            "source": {
              "label": "Wiz Research Uncovers Exposed DeepSeek Database Leak",
              "url": "https://www.wiz.io/blog/wiz-research-uncovers-exposed-deepseek-database-leak",
              "kind": "third_party",
              "content_sha256": "cfa90c12d4612e7e32ab2f725f551145e83e14819166145d84ae1f04b7530813",
              "fetched_at": "2026-09-12"
            },
            "operator_response": null,
            "resolved": null
          }
        ]
      }
    },
    {
      "id": "eden-ai",
      "name": "Eden AI",
      "operator": "Eden AI SAS",
      "service_type": "routing_aggregator",
      "url": "https://www.edenai.co/",
      "description": "A French-operated API that forwards one request format to language, document, speech, translation, and vision models from many vendors.",
      "service_boundary": "Represents Eden AI's aggregation API across several model categories, not the upstream vendors it forwards to.",
      "delivery_modes": [
        "on_demand"
      ],
      "model_sources": [
        "third_party_proprietary",
        "open_weight"
      ],
      "api_styles": [
        "openai_compatible",
        "service_native"
      ],
      "regional_controls": "The operator is a French company and documents European data governance; upstream processing geography follows the selected provider.",
      "retention_controls": "The terms state customer data is not used to train models and that prompts and outputs are not stored by default, with limited billing metadata retained. The operator explicitly disclaims control over upstream providers' retention.",
      "routing": "Requests are directed to a selected vendor for a chosen capability, with fallback across vendors for the same task.",
      "customization": "The service focuses on aggregating existing vendor models across categories rather than customer fine-tuning.",
      "strengths": [
        "Coverage extends past language models to document, speech, translation, and vision vendors through one contract and one request format.",
        "The operator is a named French company with dated terms and a stated position on training and storage."
      ],
      "tradeoffs": [
        "Documented model and provider counts differ across the vendor's own pages.",
        "Breadth across model categories means the effective data boundary varies by which vendor a request reaches.",
        "Whether platform fees apply to customer-supplied provider keys is not documented."
      ],
      "score_profile": "inference_service",
      "score": {
        "operational_maturity": 7.2,
        "data_governance": 8.0,
        "regional_deployment_control": 7.0,
        "serving_flexibility": 4.5,
        "api_interoperability": 7.6,
        "traffic_resilience": 6.6,
        "customization_lifecycle": 3.5,
        "documentation_transparency": 7.4,
        "overall": 6.63
      },
      "terms": {
        "kind": "web_terms",
        "label": "Eden AI Terms of Service",
        "url": "https://www.edenai.co/terms",
        "verified_at": "2026-08-31"
      },
      "evidence": [
        {
          "kind": "web",
          "label": "Plans and pricing",
          "url": "https://www.edenai.co/pricing",
          "verified_at": "2026-08-31"
        },
        {
          "kind": "web",
          "label": "Privacy policy",
          "url": "https://www.edenai.co/privacy",
          "verified_at": "2026-08-31"
        }
      ],
      "verified_at": "2026-08-31",
      "trust": {
        "verified_at": "2026-09-12",
        "properties": {
          "response_integrity": {
            "status": "undocumented",
            "note": "No signature, attestation, or equivalent mechanism for verifying that a response arrived unaltered from the upstream model appears on the security page or in the LLM documentation.",
            "url": "https://www.edenai.co/security",
            "scope": "Eden AI security page, for the Eden AI API",
            "verified_at": "2026-09-12"
          },
          "upstream_disclosure": {
            "status": "documented_yes",
            "note": "The provider data-policies page states: \"When you call a model through Eden AI, your request is forwarded to the underlying provider, whose own policy governs what happens to it.\" It carries a per-provider table of training use, retention, and zero-data-retention availability.",
            "url": "https://www.edenai.co/docs/v3/data-governance/provider-data-policies",
            "scope": "Eden AI provider data-policies page, for the Eden AI API",
            "verified_at": "2026-09-12"
          },
          "credential_handling": {
            "status": "undocumented",
            "note": "The bring-your-own-key page states: \"Eden AI lets you use your own provider API keys (OpenAI, Google, Anthropic, etc.) instead of going through Eden AI's billing.\" Neither it nor the security page says how those keys are stored or whether they are encrypted at rest.",
            "url": "https://www.edenai.co/docs/v3/general/byok",
            "scope": "Eden AI bring-your-own-key page, for the Eden AI API",
            "verified_at": "2026-09-12"
          },
          "cache_isolation": {
            "status": "documented_yes",
            "note": "The prompt-caching page states: \"The cache belongs to the provider endpoint that handled the request. It is not shared between providers, regions, accounts, or unrelated models.\" The page does not define whether \"accounts\" means Eden AI customers or the upstream accounts Eden AI holds, which matters for traffic on Eden AI's own credentials.",
            "url": "https://www.edenai.co/docs/v3/llms/prompt-caching",
            "scope": "Eden AI prompt-caching page, for the Eden AI API",
            "verified_at": "2026-09-12"
          },
          "vulnerability_disclosure": {
            "status": "undocumented",
            "note": "No security contact or disclosure policy appears on the security page, which offers only a general contact link.",
            "url": "https://www.edenai.co/security",
            "scope": "Eden AI security page, for the Eden AI API",
            "verified_at": "2026-09-12"
          },
          "independent_audit": {
            "status": "documented_yes",
            "note": "The security page states: \"Eden AI is SOC 2 and ISO 27001 certified, demonstrating independently assessed security controls and a structured information security management system.\" No certificate, report, or auditor is linked.",
            "url": "https://www.edenai.co/security",
            "scope": "Eden AI security page, for the Eden AI API",
            "verified_at": "2026-09-12"
          }
        },
        "findings": []
      }
    },
    {
      "id": "fireworks-ai",
      "name": "Fireworks AI",
      "operator": "Fireworks AI",
      "service_type": "managed_inference_host",
      "url": "https://docs.fireworks.ai/getting-started/introduction",
      "description": "Fireworks AI's managed inference platform for serverless models, on-demand and reserved deployments, fine-tuning, and batch workloads.",
      "service_boundary": "Represents Fireworks-hosted model APIs and deployments, not model publishers, Fireworks client libraries, or customer-operated inference runtimes.",
      "delivery_modes": [
        "on_demand",
        "batch",
        "reserved_capacity",
        "dedicated_endpoint"
      ],
      "model_sources": [
        "third_party_proprietary",
        "open_weight",
        "customer_supplied"
      ],
      "api_styles": [
        "openai_compatible",
        "service_native"
      ],
      "regional_controls": "Regional and private deployment options are enterprise- and deployment-specific; public serverless placement is not universally customer-selected.",
      "retention_controls": "Data handling follows Fireworks terms and feature-specific behavior for serverless inference, batch files, fine-tunes, and deployments.",
      "routing": "Customers select a model or deployment; Fireworks manages serving capacity rather than routing to unrelated upstream providers.",
      "customization": "Fine-tuning, LoRA, custom models, and dedicated deployments are documented for supported formats.",
      "strengths": [
        "Multiple capacity modes support both bursty and predictable workloads.",
        "OpenAI-compatible APIs cover a broad hosted model catalog."
      ],
      "tradeoffs": [
        "Production controls depend on deployment tier and contract.",
        "Publisher terms and model lifecycle remain model-specific."
      ],
      "score_profile": "inference_service",
      "score": {
        "operational_maturity": 8.7,
        "data_governance": 7.0,
        "regional_deployment_control": 6.5,
        "serving_flexibility": 9.2,
        "api_interoperability": 8.6,
        "traffic_resilience": 6.3,
        "customization_lifecycle": 9.2,
        "documentation_transparency": 8.3,
        "overall": 7.92
      },
      "terms": {
        "kind": "web_terms",
        "label": "Fireworks AI Terms of Service",
        "url": "https://fireworks.ai/terms-of-service",
        "verified_at": "2026-08-28"
      },
      "evidence": [
        {
          "kind": "web",
          "label": "Fireworks platform introduction",
          "url": "https://docs.fireworks.ai/getting-started/introduction",
          "verified_at": "2026-08-28"
        }
      ],
      "verified_at": "2026-09-12",
      "trust": {
        "verified_at": "2026-09-12",
        "properties": {
          "response_integrity": {
            "status": "undocumented",
            "note": "No signature, attestation, or equivalent mechanism for verifying that a response arrived unaltered from the model appears in the API reference or the security documentation.",
            "url": "https://docs.fireworks.ai/guides/security_compliance/data_security",
            "scope": "Fireworks data-security guide, for Fireworks AI",
            "verified_at": "2026-09-12"
          },
          "upstream_disclosure": {
            "status": "documented_yes",
            "note": "The public trust centre names the third party that receives content for select models, in an update published 2026-03-23: \"Fireworks AI uses Anthropic PBC as a Sub-processor to power select AI services. We have entered into a zero data retention agreement with Anthropic, under which no User Content or Output is retained by Anthropic following the completion of a request.\" The data-security guide states Fireworks does not log or store prompts for open models without opt-in.",
            "url": "https://trust.fireworks.ai/",
            "scope": "Fireworks trust centre subprocessor updates, for Fireworks AI",
            "verified_at": "2026-09-12"
          },
          "credential_handling": {
            "status": "documented_no",
            "note": "The API offers no customer-supplied-key path: keys are created by the Fireworks API-key endpoint, whose reference even records whether \"the plaintext value of the API key is unknown to Fireworks\", and every documented request uses a Fireworks key.",
            "url": "https://docs.fireworks.ai/api-reference/create-api-key",
            "scope": "Fireworks create-API-key reference, for Fireworks AI",
            "verified_at": "2026-09-12"
          },
          "cache_isolation": {
            "status": "documented_yes",
            "note": "The prompt-caching guide states: \"Serverless deployments maintain separate caches for each Fireworks account to prevent data leakage and timing attacks.\" The same guide describes on-demand deployments as a customer's own capacity.",
            "url": "https://docs.fireworks.ai/guides/prompt-caching",
            "scope": "Fireworks prompt-caching guide, for Fireworks AI",
            "verified_at": "2026-09-12"
          },
          "vulnerability_disclosure": {
            "status": "documented_yes",
            "note": "The public trust centre publishes a security contact, security@fireworks.ai, and a vulnerability disclosure portal; the data-security guide itself names no contact.",
            "url": "https://trust.fireworks.ai/",
            "scope": "Fireworks trust centre, for Fireworks AI",
            "verified_at": "2026-09-12"
          },
          "independent_audit": {
            "status": "documented_yes",
            "note": "The platform's own security-and-compliance guide states \"SOC 2 Type II (certified)\" and lists ISO 27001 as achieved; the public trust centre lists SOC 2 Type 2, ISO 27001:2022, ISO 27701, and ISO/IEC 42001 with reports behind a request-access control. The guide names no product scope beyond the platform it documents.",
            "url": "https://docs.fireworks.ai/guides/security_compliance/data_security",
            "scope": "Fireworks data-security guide, for Fireworks AI",
            "verified_at": "2026-09-12"
          }
        },
        "findings": [
          {
            "claim": "In 7 of these providers, we detected global cache sharing. The audit table records caching detected at the global level for Fireworks AI's Llama 3.1 8B Instruct endpoint; the audits were conducted in September and early October 2024 and disclosed to each provider in October 2024.",
            "published_at": "2025-07-13",
            "source": {
              "label": "Auditing Prompt Caching in Language Model APIs, arXiv 2502.07776v2",
              "url": "https://arxiv.org/abs/2502.07776v2",
              "kind": "third_party",
              "content_sha256": "2d15ac6cd0431b885187028fef6cdb2f15feb328ba891b4e04e933d76fa3f624",
              "fetched_at": "2026-09-12"
            },
            "operator_response": null,
            "resolved": {
              "url": "https://docs.fireworks.ai/guides/prompt-caching",
              "verified_at": "2026-09-12",
              "summary": "The current prompt-caching guide states that serverless deployments maintain separate caches for each Fireworks account; the paper does not name Fireworks among the providers that confirmed a change."
            }
          }
        ]
      }
    },
    {
      "id": "google-gemini-api",
      "name": "Gemini API",
      "operator": "Google",
      "service_type": "direct_model_api",
      "url": "https://ai.google.dev/gemini-api/docs",
      "description": "Google's direct developer API for Gemini generation, embeddings, media, tools, caching, files, and batch workloads.",
      "service_boundary": "Represents the Gemini API reached through Google AI Studio credentials, not Gemini Apps, Vertex AI, individual Gemini releases, or Google Cloud-hosted partner models.",
      "delivery_modes": [
        "on_demand",
        "batch"
      ],
      "model_sources": [
        "first_party"
      ],
      "api_styles": [
        "service_native",
        "openai_compatible"
      ],
      "regional_controls": "The direct API is a global developer service; customer-selected Google Cloud regions and residency controls belong to the separate Vertex AI boundary.",
      "retention_controls": "Data use and logging depend on whether access is through paid services and on enabled features; customers must review the current Gemini API additional terms and feature-specific storage behavior.",
      "routing": "Customers select models from Google's direct catalog; this is not a cross-provider router.",
      "customization": "The reviewed direct API supports prompting, caching, files, tools, and tuned-model features where documented, not customer-managed serving infrastructure.",
      "strengths": [
        "Direct access to Google's multimodal model APIs and developer tooling.",
        "Native and OpenAI-compatible integration paths are documented."
      ],
      "tradeoffs": [
        "Its governance boundary differs from Vertex AI.",
        "Feature availability and data behavior vary across free, paid, and stateful features."
      ],
      "score_profile": "inference_service",
      "score": {
        "operational_maturity": 8.7,
        "data_governance": 7.0,
        "regional_deployment_control": 4.5,
        "serving_flexibility": 7.2,
        "api_interoperability": 8.6,
        "traffic_resilience": 5.5,
        "customization_lifecycle": 6.5,
        "documentation_transparency": 8.2,
        "overall": 7.05
      },
      "terms": {
        "kind": "web_terms",
        "label": "Gemini API Additional Terms",
        "url": "https://ai.google.dev/gemini-api/terms",
        "verified_at": "2026-08-28"
      },
      "evidence": [
        {
          "kind": "web",
          "label": "Gemini API documentation",
          "url": "https://ai.google.dev/gemini-api/docs",
          "verified_at": "2026-08-28"
        },
        {
          "kind": "web",
          "label": "OpenAI compatibility",
          "url": "https://ai.google.dev/gemini-api/docs/openai",
          "verified_at": "2026-08-28"
        }
      ],
      "verified_at": "2026-08-28",
      "trust": {
        "verified_at": "2026-09-12",
        "properties": {
          "response_integrity": {
            "status": "undocumented",
            "note": "No signature, attestation, or equivalent mechanism for verifying that a response arrived unaltered from the model appears in the API reference; the thinking guide's \"thought signatures\" are opaque tokens for carrying reasoning state between turns, not a client-verifiable signature of the response.",
            "url": "https://ai.google.dev/gemini-api/docs/thinking",
            "scope": "Gemini API thinking guide, read for response verification, for the Gemini API",
            "verified_at": "2026-09-12"
          },
          "upstream_disclosure": {
            "status": "documented_yes",
            "note": "The logs policy states how Google handles API content, including that \"Human reviewers may read, annotate, and process the API inputs and outputs you share.\" on the unpaid tier; the operator is the party that receives plaintext.",
            "url": "https://ai.google.dev/gemini-api/docs/logs-policy",
            "scope": "Gemini API logs policy, for the Gemini API",
            "verified_at": "2026-09-12"
          },
          "credential_handling": {
            "status": "documented_no",
            "note": "The API offers no customer-supplied-key path: \"Google AI Studio automatically creates a default Google Cloud project and API key after you accept the Terms of Service.\" and every documented request uses that key.",
            "url": "https://ai.google.dev/gemini-api/docs/api-key",
            "scope": "Gemini API key guide, for the Gemini API",
            "verified_at": "2026-09-12"
          },
          "cache_isolation": {
            "status": "undocumented",
            "note": "The context-caching guide documents explicit and implicit caching, their pricing, and their lifetimes, but never states whether a cache is scoped to the project or key that created it or can be reached from another customer's requests.",
            "url": "https://ai.google.dev/gemini-api/docs/caching",
            "scope": "Gemini API context-caching guide, for the Gemini API",
            "verified_at": "2026-09-12"
          },
          "vulnerability_disclosure": {
            "status": "documented_yes",
            "note": "Google publishes a company-wide security.txt with a disclosure route (\"Contact: https://g.co/vulnz\" and \"Contact: mailto:security@google.com\"), and its Bug Hunters site carries an AI vulnerability reward programme covering Google AI products; neither names the Gemini API specifically.",
            "url": "https://www.google.com/.well-known/security.txt",
            "scope": "Google security.txt, for the Gemini API",
            "verified_at": "2026-09-12"
          },
          "independent_audit": {
            "status": "undocumented",
            "note": "The Google Cloud SOC 2 page (\"Below are Google Cloud services that are in scope for SOC 2.\") lists the in-scope services and does not name the Gemini API or Google AI Studio, and no AI Studio compliance page was found; recorded as undocumented for the named service.",
            "url": "https://cloud.google.com/security/compliance/soc-2",
            "scope": "Google Cloud SOC 2 scope page, read for the Gemini API",
            "verified_at": "2026-09-12"
          }
        },
        "findings": []
      }
    },
    {
      "id": "vertex-ai-generative-ai",
      "name": "Gemini Enterprise Agent Platform Generative AI",
      "operator": "Google Cloud",
      "service_type": "cloud_model_platform",
      "url": "https://docs.cloud.google.com/gemini-enterprise-agent-platform",
      "description": "Google Cloud's managed generative-AI platform, formerly Vertex AI, for accessing Google, partner, open, and customer-deployed models through Gemini Enterprise Agent Platform and Model Garden.",
      "service_boundary": "Represents managed generative inference on Gemini Enterprise Agent Platform, formerly Vertex AI, not Gemini Apps, Google AI Studio, individual Gemini releases, or the platform's broader agent features.",
      "delivery_modes": [
        "on_demand",
        "batch",
        "reserved_capacity",
        "dedicated_endpoint"
      ],
      "model_sources": [
        "first_party",
        "third_party_proprietary",
        "open_weight",
        "customer_supplied"
      ],
      "api_styles": [
        "google_cloud_native"
      ],
      "regional_controls": "Availability, data residency, and processing location depend on the selected model, endpoint type, and Google Cloud region; serverless and self-deployed Model Garden paths have different boundaries.",
      "retention_controls": "Data governance follows the selected Vertex AI service, project configuration, model publisher, and Google Cloud terms; customers must review model- and feature-specific documentation rather than infer one platform-wide rule.",
      "routing": "The platform provides a common cloud control plane across model sources, but the reviewed service is not represented as an automatic latency- or price-based cross-provider router.",
      "customization": "Model Garden supports managed APIs, tuning, and deployment paths for eligible Google, partner, open, and customer models, including dedicated endpoints for self-deployed models.",
      "strengths": [
        "Model Garden combines first-party, partner, open, and customer deployment paths with Google Cloud governance.",
        "Serverless, provisioned, batch, and dedicated deployment choices cover distinct production needs."
      ],
      "tradeoffs": [
        "Serving mode, region support, terms, and operational responsibility differ substantially across model categories.",
        "The broad platform boundary requires model-specific review before treating any capability as universal."
      ],
      "score_profile": "inference_service",
      "score": {
        "operational_maturity": 9.2,
        "data_governance": 8.6,
        "regional_deployment_control": 9.2,
        "serving_flexibility": 9.4,
        "api_interoperability": 8.2,
        "traffic_resilience": 7.5,
        "customization_lifecycle": 9.2,
        "documentation_transparency": 9.0,
        "overall": 8.81
      },
      "terms": {
        "kind": "web_terms",
        "label": "Google Cloud Service Specific Terms",
        "url": "https://cloud.google.com/terms/service-terms",
        "verified_at": "2026-08-28"
      },
      "evidence": [
        {
          "kind": "web",
          "label": "Google Cloud product page: Gemini Enterprise Agent Platform (formerly Vertex AI)",
          "url": "https://cloud.google.com/products/gemini-enterprise-agent-platform",
          "verified_at": "2026-09-25"
        },
        {
          "kind": "web",
          "label": "Generative AI on Vertex AI overview",
          "url": "https://cloud.google.com/vertex-ai/generative-ai/docs",
          "verified_at": "2026-08-28"
        },
        {
          "kind": "web",
          "label": "Model Garden overview",
          "url": "https://cloud.google.com/vertex-ai/generative-ai/docs/model-garden/explore-models",
          "verified_at": "2026-08-28"
        },
        {
          "kind": "web",
          "label": "Partner-model deployment",
          "url": "https://cloud.google.com/vertex-ai/generative-ai/docs/partner-models/deploy-partner-models",
          "verified_at": "2026-08-28"
        },
        {
          "kind": "web",
          "label": "Custom container inference",
          "url": "https://cloud.google.com/vertex-ai/docs/predictions/use-custom-container",
          "verified_at": "2026-08-28"
        },
        {
          "kind": "web",
          "label": "Provisioned throughput support",
          "url": "https://cloud.google.com/vertex-ai/generative-ai/docs/provisioned-throughput/supported-models",
          "verified_at": "2026-08-28"
        }
      ],
      "verified_at": "2026-09-12",
      "trust": {
        "verified_at": "2026-09-12",
        "properties": {
          "response_integrity": {
            "status": "documented_yes",
            "note": "Scoped to generated media, not text or tool-call responses. The Content Credentials guide states: \"This technology utilizes cryptographically signed metadata to provide secure and verifiable records of a media file's origin and any changes it's undergone. Being cryptographically signed, this information is tamper-evident.\" Ordinary chat and tool-call responses carry no signature.",
            "url": "https://cloud.google.com/vertex-ai/generative-ai/docs/content-credentials",
            "scope": "Vertex AI generative-AI content-credentials guide, for Gemini Enterprise Agent Platform Generative AI",
            "verified_at": "2026-09-12"
          },
          "upstream_disclosure": {
            "status": "undocumented",
            "note": "The partner-models usage guide describes how to call third-party models but does not state whether the model's publisher (Anthropic, Meta, and others hosted through Vertex) receives the request content or whether it stays within Google's own infrastructure.",
            "url": "https://cloud.google.com/vertex-ai/generative-ai/docs/partner-models/use-partner-models",
            "scope": "Vertex AI partner-models usage guide, for Gemini Enterprise Agent Platform Generative AI",
            "verified_at": "2026-09-12"
          },
          "credential_handling": {
            "status": "documented_no",
            "note": "The service offers no customer-supplied upstream-key path: \"To use Gemini on Gemini Enterprise Agent Platform, authenticate by using a Google Cloud API key or application default credentials.\"",
            "url": "https://cloud.google.com/vertex-ai/generative-ai/docs/start/api-keys",
            "scope": "Vertex AI generative-AI API-keys guide, for Gemini Enterprise Agent Platform Generative AI",
            "verified_at": "2026-09-12"
          },
          "cache_isolation": {
            "status": "documented_yes",
            "note": "The data-governance page states: \"By default, Google's published Gemini models cache Customer Data (inputs, outputs, and derived data) in-memory to reduce latency and accelerate responses. This data is stored only in-memory (not at-rest), is isolated at the project level, and has a 24-hour TTL.\"",
            "url": "https://cloud.google.com/vertex-ai/generative-ai/docs/data-governance",
            "scope": "Vertex AI generative-AI data-governance page, for Gemini Enterprise Agent Platform Generative AI",
            "verified_at": "2026-09-12"
          },
          "vulnerability_disclosure": {
            "status": "documented_yes",
            "note": "Google's Cloud Vulnerability Reward Program states its scope: \"In principle, any Google Cloud product or web service that handles reasonably sensitive user data is intended to be in scope.\" It does not name the service individually.",
            "url": "https://bughunters.google.com/about/rules/google-friends/4849867320328192/cloud-vulnerability-reward-program-rules",
            "scope": "Google Cloud Vulnerability Reward Program rules, for Gemini Enterprise Agent Platform Generative AI",
            "verified_at": "2026-09-12"
          },
          "independent_audit": {
            "status": "documented_yes",
            "note": "The Google Cloud SOC 2 scope page names the service, under its current product name: \"Generative AI on Gemini Enterprise Agent Platform (formerly Generative AI on Vertex AI)\".",
            "url": "https://cloud.google.com/security/compliance/soc-2",
            "scope": "Google Cloud SOC 2 compliance page, for Gemini Enterprise Agent Platform Generative AI",
            "verified_at": "2026-09-12"
          }
        },
        "findings": [
          {
            "claim": "Table 2, Audit results for APIs where we did not detect prompt caching (✗ denotes caching was not detected): Google / Gemini 1.5 Flash / ✗ and Google / text-embedding-004 / ✗. The audits were conducted in September and early October 2024; the provider is labelled only \"Google\" and the paper does not distinguish the Gemini API from Vertex AI as the tested endpoint.",
            "published_at": "2025-07-13",
            "source": {
              "label": "Auditing Prompt Caching in Language Model APIs, arXiv 2502.07776v2",
              "url": "https://arxiv.org/abs/2502.07776v2",
              "kind": "third_party",
              "content_sha256": "2d15ac6cd0431b885187028fef6cdb2f15feb328ba891b4e04e933d76fa3f624",
              "fetched_at": "2026-09-12"
            },
            "operator_response": null,
            "resolved": {
              "url": "https://cloud.google.com/vertex-ai/generative-ai/docs/data-governance",
              "verified_at": "2026-09-12",
              "summary": "The current data-governance page documents project-level, in-memory, 24-hour caching; the paper detected no caching for the tested Google models at the time of its 2024 audit, so this is not a finding of unsafe sharing."
            }
          }
        ]
      }
    },
    {
      "id": "groqcloud",
      "name": "GroqCloud",
      "operator": "Groq",
      "service_type": "managed_inference_host",
      "url": "https://console.groq.com/docs/overview",
      "description": "Groq's managed inference service for a selected production and preview catalog of openly available text, audio, safety, and compound AI models and systems.",
      "service_boundary": "Represents the GroqCloud developer API, not GroqChat, Groq Playground, Groq hardware, individual hosted models, or third-party model publishers.",
      "delivery_modes": [
        "on_demand",
        "batch"
      ],
      "model_sources": [
        "open_weight"
      ],
      "api_styles": [
        "openai_compatible"
      ],
      "regional_controls": "Reviewed documentation states that retained customer data is stored in United States Google Cloud buckets; the pilot does not claim customer-selected inference regions.",
      "retention_controls": "Inference inputs and outputs are not retained by default except for reliability or abuse handling; customers can enable Zero Data Retention. Batch, fine-tuning, and other stateful features have separate retention behavior.",
      "routing": "Customers select among models hosted by Groq; Flex processing changes capacity behavior but is not a multi-provider routing layer.",
      "customization": "Fine-tuning and LoRA state are documented as retained until customer deletion; support and availability remain model-specific.",
      "strengths": [
        "The service documents production versus preview models, token-speed signals, and OpenAI-compatible access.",
        "On-demand, Flex, and batch paths expose distinct capacity and workload tradeoffs."
      ],
      "tradeoffs": [
        "The hosted catalog is selective and preview models may be discontinued on short notice.",
        "Regional choice is narrower than multi-region cloud platforms in the reviewed documentation."
      ],
      "score_profile": "inference_service",
      "score": {
        "operational_maturity": 8.2,
        "data_governance": 9.0,
        "regional_deployment_control": 4.8,
        "serving_flexibility": 7.3,
        "api_interoperability": 8.5,
        "traffic_resilience": 6.0,
        "customization_lifecycle": 7.0,
        "documentation_transparency": 8.8,
        "overall": 7.5
      },
      "terms": {
        "kind": "web_terms",
        "label": "Groq Services Agreement",
        "url": "https://console.groq.com/docs/legal/services-agreement",
        "verified_at": "2026-08-28"
      },
      "evidence": [
        {
          "kind": "web",
          "label": "GroqCloud overview",
          "url": "https://console.groq.com/docs/overview",
          "verified_at": "2026-08-28"
        },
        {
          "kind": "web",
          "label": "Supported models",
          "url": "https://console.groq.com/docs/models",
          "verified_at": "2026-08-28"
        },
        {
          "kind": "web",
          "label": "Customer data controls",
          "url": "https://console.groq.com/docs/your-data",
          "verified_at": "2026-08-28"
        },
        {
          "kind": "web",
          "label": "Batch processing",
          "url": "https://console.groq.com/docs/batch",
          "verified_at": "2026-08-28"
        },
        {
          "kind": "web",
          "label": "Flex processing",
          "url": "https://console.groq.com/docs/flex-processing",
          "verified_at": "2026-08-28"
        }
      ],
      "verified_at": "2026-08-28",
      "trust": {
        "verified_at": "2026-09-12",
        "properties": {
          "response_integrity": {
            "status": "undocumented",
            "note": "No signature, attestation, or equivalent mechanism for verifying that a response arrived unaltered from the model appears in the API reference or the security documentation.",
            "url": "https://console.groq.com/docs/api-reference",
            "scope": "GroqCloud API reference, for GroqCloud",
            "verified_at": "2026-09-12"
          },
          "upstream_disclosure": {
            "status": "documented_yes",
            "note": "The customer data-processing addendum states the operator processes the content: \"Groq will Process Personal Data only: (a) to provide, maintain, and support the Cloud Services and fulfill its obligations to Customer under the Agreement; (b) on Customer's behalf in compliance with Customer's documented instructions.\" The public trust centre carries a subprocessor list.",
            "url": "https://console.groq.com/docs/legal/customer-data-processing-addendum",
            "scope": "GroqCloud customer data-processing addendum, for GroqCloud",
            "verified_at": "2026-09-12"
          },
          "credential_handling": {
            "status": "documented_no",
            "note": "The API offers no customer-supplied-key path: the quickstart says \"Configure your API key as an environment variable\" for the Groq-issued key, and every documented request uses it.",
            "url": "https://console.groq.com/docs/quickstart",
            "scope": "GroqCloud quickstart, for GroqCloud",
            "verified_at": "2026-09-12"
          },
          "cache_isolation": {
            "status": "documented_yes",
            "note": "The prompt-caching page states: \"All cached data exists only in volatile memory and automatically expires within a few hours. No prompt or response content is ever stored in persistent storage or shared between organizations.\"",
            "url": "https://console.groq.com/docs/prompt-caching",
            "scope": "GroqCloud prompt-caching page, for GroqCloud",
            "verified_at": "2026-09-12"
          },
          "vulnerability_disclosure": {
            "status": "documented_yes",
            "note": "A security.txt file is published with a contact address (\"Contact: mailto:security@groq.com\").",
            "url": "https://groq.com/.well-known/security.txt",
            "scope": "Groq security.txt, for GroqCloud",
            "verified_at": "2026-09-12"
          },
          "independent_audit": {
            "status": "undocumented",
            "note": "The public trust centre announces that the company \"successfully maintained our SOC 2 Type II compliance, with our latest report now available as of 2025\" and lists a \"Groq, Inc. SOC2 Type II Report\" behind a request-access control; nothing names GroqCloud, so it is recorded as undocumented for the named service.",
            "url": "https://trust.groq.com/",
            "scope": "Groq trust centre, read for GroqCloud",
            "verified_at": "2026-09-12"
          }
        },
        "findings": []
      }
    },
    {
      "id": "hugging-face-inference-endpoints",
      "name": "Hugging Face Inference Endpoints",
      "operator": "Hugging Face",
      "service_type": "managed_inference_host",
      "url": "https://huggingface.co/docs/inference-endpoints/index",
      "description": "Hugging Face's managed dedicated and autoscaling deployment service for models and custom handlers sourced from Hub repositories.",
      "service_boundary": "Represents customer-created Inference Endpoints, not Inference Providers routing, the Hub repository alone, Spaces, or self-hosted inference engines.",
      "delivery_modes": [
        "dedicated_endpoint",
        "reserved_capacity"
      ],
      "model_sources": [
        "open_weight",
        "customer_supplied"
      ],
      "api_styles": [
        "service_native",
        "openai_compatible"
      ],
      "regional_controls": "Customers choose among documented AWS, Azure, and Google Cloud regions and instance types; private connectivity support is provider- and region-specific.",
      "retention_controls": "Hugging Face states it does not store endpoint request payloads or tokens and retains service logs for 30 days. Uploaded model repositories and deployment resources remain stored customer assets.",
      "routing": "Traffic targets a customer-created endpoint and its autoscaling replicas rather than an external provider-selection layer.",
      "customization": "Customers choose model repositories, revisions, inference engines, containers, hardware, scaling, and custom handlers.",
      "strengths": [
        "Dedicated model deployments combine Hub artifacts with managed infrastructure and autoscaling.",
        "Cloud, region, hardware, access, and private-network choices are explicit."
      ],
      "tradeoffs": [
        "Customers retain more deployment and model-compatibility responsibility than serverless catalogs.",
        "Available regions and private connectivity differ by underlying cloud."
      ],
      "score_profile": "inference_service",
      "score": {
        "operational_maturity": 8.7,
        "data_governance": 9.0,
        "regional_deployment_control": 9.0,
        "serving_flexibility": 8.5,
        "api_interoperability": 8.4,
        "traffic_resilience": 7.0,
        "customization_lifecycle": 9.6,
        "documentation_transparency": 9.0,
        "overall": 8.67
      },
      "terms": {
        "kind": "web_terms",
        "label": "Hugging Face Terms of Service",
        "url": "https://huggingface.co/terms-of-service",
        "verified_at": "2026-08-28"
      },
      "evidence": [
        {
          "kind": "web",
          "label": "Inference Endpoints overview",
          "url": "https://huggingface.co/docs/inference-endpoints/index",
          "verified_at": "2026-08-28"
        },
        {
          "kind": "web",
          "label": "Endpoint configuration",
          "url": "https://huggingface.co/docs/inference-endpoints/guides/configuration",
          "verified_at": "2026-08-28"
        },
        {
          "kind": "web",
          "label": "Security and data handling",
          "url": "https://huggingface.co/docs/inference-endpoints/security",
          "verified_at": "2026-08-28"
        }
      ],
      "verified_at": "2026-08-28",
      "trust": {
        "verified_at": "2026-09-12",
        "properties": {
          "response_integrity": {
            "status": "undocumented",
            "note": "No signature, attestation, or equivalent mechanism for verifying that a response arrived unaltered from the model appears in the API reference or the security documentation.",
            "url": "https://huggingface.co/docs/inference-endpoints/security",
            "scope": "Hugging Face Inference Endpoints security page, for Hugging Face Inference Endpoints",
            "verified_at": "2026-09-12"
          },
          "upstream_disclosure": {
            "status": "documented_yes",
            "note": "The security page states how the operator handles content: \"Hugging Face does not store any customer data in terms of payloads or tokens that are passed to the Inference Endpoint.\" The operator runs the dedicated deployment; no subprocessor is named on that page.",
            "url": "https://huggingface.co/docs/inference-endpoints/security",
            "scope": "Hugging Face Inference Endpoints security page, for Hugging Face Inference Endpoints",
            "verified_at": "2026-09-12"
          },
          "credential_handling": {
            "status": "documented_no",
            "note": "The service offers no customer-supplied upstream-key path: an endpoint is called with a Hugging Face token (\"Private (default): Accessible only to you, or members of your Hugging Face organization, using a personal HF access token.\") and serves a model the customer deploys.",
            "url": "https://huggingface.co/docs/inference-endpoints/guides/configuration",
            "scope": "Hugging Face Inference Endpoints configuration guide, for Hugging Face Inference Endpoints",
            "verified_at": "2026-09-12"
          },
          "cache_isolation": {
            "status": "undocumented",
            "note": "Each endpoint is a dedicated deployment, but no page states how a prefix cache is scoped; the serving engine's documentation says only that with several replicas \"the cache will not be present, meaning no speed benefit.\"",
            "url": "https://huggingface.co/docs/text-generation-inference/en/conceptual/chunking",
            "scope": "Text Generation Inference chunking documentation, read for Hugging Face Inference Endpoints",
            "verified_at": "2026-09-12"
          },
          "vulnerability_disclosure": {
            "status": "documented_yes",
            "note": "A security.txt file is published with a contact address (\"Contact: security@huggingface.co\").",
            "url": "https://huggingface.co/.well-known/security.txt",
            "scope": "Hugging Face security.txt, for Hugging Face Inference Endpoints",
            "verified_at": "2026-09-12"
          },
          "independent_audit": {
            "status": "documented_yes",
            "note": "The security page names the service: \"The Hugging Face Hub, and Inference Endpoints, is SOC2 Type 2 certified.\"",
            "url": "https://huggingface.co/docs/inference-endpoints/security",
            "scope": "Hugging Face Inference Endpoints security page, for Hugging Face Inference Endpoints",
            "verified_at": "2026-09-12"
          }
        },
        "findings": []
      }
    },
    {
      "id": "hugging-face-inference-providers",
      "name": "Hugging Face Inference Providers",
      "operator": "Hugging Face",
      "service_type": "routing_aggregator",
      "url": "https://huggingface.co/docs/inference-providers/index",
      "description": "Hugging Face's unified proxy, authentication, and billing layer for hundreds of models served by integrated inference providers.",
      "service_boundary": "Represents routed Inference Providers requests, not dedicated Hugging Face Inference Endpoints, the Hub model repository, local inference, or the upstream providers themselves.",
      "delivery_modes": [
        "on_demand"
      ],
      "model_sources": [
        "first_party",
        "third_party_proprietary",
        "open_weight"
      ],
      "api_styles": [
        "service_native",
        "openai_compatible"
      ],
      "regional_controls": "Processing location depends on the selected upstream provider and model; the proxy does not establish one universal Hugging Face inference region.",
      "retention_controls": "Requests traverse Hugging Face proxy infrastructure and the selected provider unless a custom provider key path states otherwise; both layers' data policies apply.",
      "routing": "Automatic selection can prefer fastest, cheapest, or user-preferred providers and can fail over when a provider is unavailable; callers can also name a provider explicitly.",
      "customization": "The service routes existing provider-model combinations and is not a customer-weight deployment product.",
      "strengths": [
        "One token and client can access many integrated providers and models.",
        "Explicit fastest, cheapest, preferred, and provider-specific selection policies are documented."
      ],
      "tradeoffs": [
        "Requests add a proxy boundary and may reach different upstream operators.",
        "Residency, retention, capabilities, and availability remain provider-specific."
      ],
      "score_profile": "inference_service",
      "score": {
        "operational_maturity": 8.0,
        "data_governance": 6.5,
        "regional_deployment_control": 5.0,
        "serving_flexibility": 5.5,
        "api_interoperability": 8.7,
        "traffic_resilience": 9.0,
        "customization_lifecycle": 4.0,
        "documentation_transparency": 8.7,
        "overall": 6.86
      },
      "terms": {
        "kind": "web_terms",
        "label": "Hugging Face Terms of Service",
        "url": "https://huggingface.co/terms-of-service",
        "verified_at": "2026-08-28"
      },
      "evidence": [
        {
          "kind": "web",
          "label": "Inference Providers overview",
          "url": "https://huggingface.co/docs/inference-providers/index",
          "verified_at": "2026-08-28"
        },
        {
          "kind": "web",
          "label": "Routing and billing paths",
          "url": "https://huggingface.co/docs/inference-providers/pricing",
          "verified_at": "2026-08-28"
        }
      ],
      "verified_at": "2026-08-28",
      "trust": {
        "verified_at": "2026-09-12",
        "properties": {
          "response_integrity": {
            "status": "undocumented",
            "note": "No signature, attestation, or equivalent mechanism for verifying that a response arrived unaltered from the upstream provider appears on the security page or in the Inference Providers documentation.",
            "url": "https://huggingface.co/docs/inference-providers/security",
            "scope": "Hugging Face Inference Providers security page, for Hugging Face Inference Providers",
            "verified_at": "2026-09-12"
          },
          "upstream_disclosure": {
            "status": "documented_yes",
            "note": "The documentation index's partner table names the providers a request can be routed to: Baseten, Cerebras, Cohere, DeepInfra, Fal AI, Featherless AI, Fireworks, Groq, HF Inference, Novita, Nscale, OVHcloud AI Endpoints, Public AI, Replicate, Scaleway, Together, WaveSpeedAI, and Z.ai. The security page adds: \"For more information on how your data is handled, please refer to the Data Security Policies of each provider.\"",
            "url": "https://huggingface.co/docs/inference-providers/index",
            "scope": "Hugging Face Inference Providers documentation index, for Hugging Face Inference Providers",
            "verified_at": "2026-09-12"
          },
          "credential_handling": {
            "status": "undocumented",
            "note": "The pricing page documents the customer-supplied-key path (\"You can set your custom provider key in the settings page on the Hub, or in the InferenceClient when using the JavaScript or Python SDKs.\") but neither it nor the security page says how such keys are stored or whether they are encrypted at rest; the security page's statement that \"no user data or tokens are stored\" concerns debugging logs.",
            "url": "https://huggingface.co/docs/inference-providers/pricing",
            "scope": "Hugging Face Inference Providers pricing page, read for custom provider keys",
            "verified_at": "2026-09-12"
          },
          "cache_isolation": {
            "status": "undocumented",
            "note": "The security page states: \"We do not store the request body or response when routing requests through Hugging Face.\" Nothing states whether prompt caches at the partner providers are scoped per Hugging Face account or pooled behind Hugging Face's routed credentials.",
            "url": "https://huggingface.co/docs/inference-providers/security",
            "scope": "Hugging Face Inference Providers security page, for Hugging Face Inference Providers",
            "verified_at": "2026-09-12"
          },
          "vulnerability_disclosure": {
            "status": "documented_yes",
            "note": "A security.txt file is published with a contact address (\"Contact: security@huggingface.co\").",
            "url": "https://huggingface.co/.well-known/security.txt",
            "scope": "Hugging Face security.txt, for Hugging Face Inference Providers",
            "verified_at": "2026-09-12"
          },
          "independent_audit": {
            "status": "documented_yes",
            "note": "The security page states: \"The Hugging Face Hub, which Inference Providers is a feature of, is SOC2 Type 2 certified.\" and that external providers are responsible for their own security measures.",
            "url": "https://huggingface.co/docs/inference-providers/security",
            "scope": "Hugging Face Inference Providers security page, for Hugging Face Inference Providers",
            "verified_at": "2026-09-12"
          }
        },
        "findings": []
      }
    },
    {
      "id": "ibm-watsonx-ai",
      "name": "IBM watsonx.ai Runtime",
      "operator": "IBM",
      "service_type": "cloud_model_platform",
      "url": "https://dataplatform.cloud.ibm.com/docs/content/wsj/analyze-data/fm-api.html?context=wx",
      "description": "IBM's managed foundation-model inference and deployment runtime for IBM Granite, third-party, open, and customer models.",
      "service_boundary": "Represents model inference and deployments in watsonx.ai Runtime, not watsonx Assistant, watsonx.data, individual Granite releases, or models hosted outside IBM Cloud.",
      "delivery_modes": [
        "on_demand",
        "batch",
        "dedicated_endpoint"
      ],
      "model_sources": [
        "first_party",
        "third_party_proprietary",
        "open_weight",
        "customer_supplied"
      ],
      "api_styles": [
        "service_native"
      ],
      "regional_controls": "IBM Cloud service instances, supported models, and deployment spaces are region-specific; availability depends on the selected IBM Cloud location.",
      "retention_controls": "Data handling follows IBM Cloud terms, account controls, and the selected foundation-model or deployment feature; stored assets and stateless calls have distinct boundaries.",
      "routing": "Customers select foundation models or deployed assets in IBM Cloud rather than automatic upstream-provider routing.",
      "customization": "Prompt tuning, fine-tuning, custom foundation models, and deployment spaces are available for supported workflows.",
      "strengths": [
        "IBM Granite and third-party models integrate with IBM Cloud governance and deployment spaces.",
        "The service covers hosted APIs and customer deployment workflows."
      ],
      "tradeoffs": [
        "Availability and feature support vary by region and cloud plan.",
        "The API surface spans several watsonx resource types rather than one universal endpoint."
      ],
      "score_profile": "inference_service",
      "score": {
        "operational_maturity": 8.7,
        "data_governance": 8.5,
        "regional_deployment_control": 8.2,
        "serving_flexibility": 8.7,
        "api_interoperability": 7.5,
        "traffic_resilience": 6.2,
        "customization_lifecycle": 9.0,
        "documentation_transparency": 8.3,
        "overall": 8.2
      },
      "terms": {
        "kind": "web_terms",
        "label": "IBM Cloud Service Agreement",
        "url": "https://www.ibm.com/support/customer/csol/terms/",
        "verified_at": "2026-08-28"
      },
      "evidence": [
        {
          "kind": "web",
          "label": "Foundation model API",
          "url": "https://dataplatform.cloud.ibm.com/docs/content/wsj/analyze-data/fm-api.html?context=wx",
          "verified_at": "2026-08-28"
        }
      ],
      "verified_at": "2026-08-28",
      "trust": {
        "verified_at": "2026-09-12",
        "properties": {
          "response_integrity": {
            "status": "undocumented",
            "note": "No signature, attestation, or equivalent mechanism for verifying that a response arrived unaltered from the model appears in the API reference or the security documentation.",
            "url": "https://dataplatform.cloud.ibm.com/docs/content/wsj/analyze-data/fm-api.html?context=wx",
            "scope": "IBM watsonx.ai foundation-model API documentation, for IBM watsonx.ai Runtime",
            "verified_at": "2026-09-12"
          },
          "upstream_disclosure": {
            "status": "documented_yes",
            "note": "The foundation-model security page for watsonx.ai on IBM Cloud states: \"The foundation models are hosted in IBM Cloud or AWS; your prompts are not sent to third-party platforms.\" and \"IBM does not use your work to improve IBM models.\"",
            "url": "https://dataplatform.cloud.ibm.com/docs/content/wsj/analyze-data/fm-security.html?context=wx",
            "scope": "IBM watsonx.ai foundation-model security page, for IBM watsonx.ai Runtime",
            "verified_at": "2026-09-12"
          },
          "credential_handling": {
            "status": "documented_no",
            "note": "The service offers no customer-supplied-key path: \"Use your API key to generate an IAM bearer token.\" and every documented request uses IBM Cloud credentials.",
            "url": "https://www.ibm.com/docs/en/watsonx/saas?topic=resources-credentials-programmatic-access",
            "scope": "IBM watsonx.ai credentials for programmatic access, for IBM watsonx.ai Runtime",
            "verified_at": "2026-09-12"
          },
          "cache_isolation": {
            "status": "undocumented",
            "note": "No prompt or prefix caching scope is documented in the foundation-model API documentation.",
            "url": "https://dataplatform.cloud.ibm.com/docs/content/wsj/analyze-data/fm-api.html?context=wx",
            "scope": "IBM watsonx.ai foundation-model API documentation, for IBM watsonx.ai Runtime",
            "verified_at": "2026-09-12"
          },
          "vulnerability_disclosure": {
            "status": "documented_yes",
            "note": "IBM publishes a company-wide security.txt naming its product security incident response team (\"Contact: https://www.ibm.com/trust/security-psirt\", \"Contact: mailto:psirt@us.ibm.com\").",
            "url": "https://www.ibm.com/.well-known/security.txt",
            "scope": "IBM security.txt, for IBM watsonx.ai Runtime",
            "verified_at": "2026-09-12"
          },
          "independent_audit": {
            "status": "undocumented",
            "note": "The IBM Cloud SOC 2 page lists the platform services in scope and does not name watsonx.ai, so it is recorded as undocumented for the named service.",
            "url": "https://www.ibm.com/products/cloud/compliance/soc-2",
            "scope": "IBM Cloud SOC 2 compliance page, read for IBM watsonx.ai Runtime",
            "verified_at": "2026-09-12"
          }
        },
        "findings": []
      }
    },
    {
      "id": "zai-model-api",
      "name": "Z.ai Model API",
      "operator": "Jingsheng Hengxing Technology Pte. Ltd. (Z.ai)",
      "service_type": "direct_model_api",
      "url": "https://docs.z.ai/api-reference/introduction",
      "description": "Z.ai's direct managed API for GLM text, reasoning, coding, vision, image, video, and related model capabilities.",
      "service_boundary": "Represents the Z.ai Model API operated through api.z.ai, not the Z.ai chat product, open-weight GLM releases, or GLM models hosted elsewhere.",
      "delivery_modes": [
        "on_demand"
      ],
      "model_sources": [
        "first_party"
      ],
      "api_styles": [
        "service_native",
        "openai_compatible"
      ],
      "regional_controls": "The reviewed Model API documentation uses a common platform endpoint and does not establish customer-selected inference regions.",
      "retention_controls": "The API-specific terms govern submitted inputs and outputs; the reviewed public technical docs do not establish a universal customer-configurable retention tier.",
      "routing": "Customers select Z.ai model endpoints; OpenAI SDK compatibility is an interface choice, not cross-provider routing.",
      "customization": "The reviewed public Model API focuses on hosted models and does not establish customer-supplied weight deployment.",
      "strengths": [
        "Direct access to the GLM family across several modalities.",
        "Official examples document both native HTTP and OpenAI SDK access."
      ],
      "tradeoffs": [
        "Public regional and retention controls require further contract-level review.",
        "The direct service is limited to Z.ai-operated model families."
      ],
      "score_profile": "inference_service",
      "score": {
        "operational_maturity": 7.0,
        "data_governance": 5.2,
        "regional_deployment_control": 3.5,
        "serving_flexibility": 5.2,
        "api_interoperability": 8.2,
        "traffic_resilience": 4.5,
        "customization_lifecycle": 3.5,
        "documentation_transparency": 6.8,
        "overall": 5.52
      },
      "terms": {
        "kind": "web_terms",
        "label": "Z.ai Model API Terms of Use",
        "url": "https://docs.z.ai/legal-agreement/terms-of-use",
        "verified_at": "2026-08-28"
      },
      "evidence": [
        {
          "kind": "web",
          "label": "Z.ai API introduction",
          "url": "https://docs.z.ai/api-reference/introduction",
          "verified_at": "2026-08-28"
        },
        {
          "kind": "web",
          "label": "Model overview",
          "url": "https://docs.z.ai/guides/overview/overview",
          "verified_at": "2026-08-28"
        }
      ],
      "verified_at": "2026-08-28",
      "trust": {
        "verified_at": "2026-09-12",
        "properties": {
          "response_integrity": {
            "status": "undocumented",
            "note": "No signature, attestation, or equivalent mechanism for verifying that a response arrived unaltered from the model appears in the API reference or the security documentation.",
            "url": "https://docs.z.ai/api-reference/introduction",
            "scope": "Z.ai API reference, for the Z.ai Model API",
            "verified_at": "2026-09-12"
          },
          "upstream_disclosure": {
            "status": "documented_yes",
            "note": "The privacy policy states the operator processes the content: \"This information is processed in real-time to provide you with the Service.\" No subprocessor is named.",
            "url": "https://docs.z.ai/legal-agreement/privacy-policy",
            "scope": "Z.ai privacy policy, for the Z.ai Model API",
            "verified_at": "2026-09-12"
          },
          "credential_handling": {
            "status": "documented_no",
            "note": "The API offers no customer-supplied-key path: \"Create an API Key in the [API Keys] management page.\" and every documented request uses that key.",
            "url": "https://docs.z.ai/guides/develop/http/introduction",
            "scope": "Z.ai HTTP guide, for the Z.ai Model API",
            "verified_at": "2026-09-12"
          },
          "cache_isolation": {
            "status": "undocumented",
            "note": "The cache guide documents the caching feature and its billing but never states whether a cache is scoped to the account that created it.",
            "url": "https://docs.z.ai/guides/capabilities/cache",
            "scope": "Z.ai cache guide, for the Z.ai Model API",
            "verified_at": "2026-09-12"
          },
          "vulnerability_disclosure": {
            "status": "documented_yes",
            "note": "The terms of use publish a disclosure route without a named contact: \"If you discover any vulnerabilities or defects in the services provided by Z.ai, you are encouraged to report them through the feedback feature available within the interface or through the designated contact methods\". No security.txt is served.",
            "url": "https://docs.z.ai/legal-agreement/terms-of-use",
            "scope": "Z.ai terms of use, for the Z.ai Model API",
            "verified_at": "2026-09-12"
          },
          "independent_audit": {
            "status": "undocumented",
            "note": "No SOC 2, ISO 27001, or equivalent attestation is named in the API reference, the terms, or the privacy policy.",
            "url": "https://docs.z.ai/api-reference/introduction",
            "scope": "Z.ai API reference, for the Z.ai Model API",
            "verified_at": "2026-09-12"
          }
        },
        "findings": []
      }
    },
    {
      "id": "trustedrouter",
      "name": "TrustedRouter",
      "operator": "Lore Hex Corp",
      "service_type": "routing_aggregator",
      "url": "https://trustedrouter.com/",
      "description": "Routes requests to hundreds of models through one compatible endpoint, using hardware-attested gateways that log no prompt or output content.",
      "service_boundary": "Represents the TrustedRouter routing service and its attested gateway, not the upstream providers it forwards to. A small set of house composite models is layered over other providers' models rather than separately trained.",
      "delivery_modes": [
        "on_demand",
        "batch"
      ],
      "model_sources": [
        "third_party_proprietary",
        "open_weight",
        "first_party"
      ],
      "api_styles": [
        "openai_compatible"
      ],
      "regional_controls": "A European routing alias is documented alongside zero-retention and end-to-end aliases; upstream provider selection still determines where processing occurs.",
      "retention_controls": "The privacy policy states prompts and outputs are never logged, with an opt-in batch path retaining enclave-encrypted artifacts for up to thirty days. Request metadata is itemised but carries no fixed retention period. Upstream retention is disclaimed twice, and only a minority of catalogue models route to a zero-retention upstream.",
      "routing": "Aliases select automatic health-based failover, zero-retention routes, end-to-end encrypted routes, or European routes, and per-request constraints can require a minimum privacy class.",
      "customization": "Customer-supplied provider keys are supported on many models; no customer fine-tuning is documented, and the house models are ensembles over existing providers.",
      "strengths": [
        "The privacy claim is cryptographically checkable rather than asserted: a live attestation signed by the cloud operator names an image digest matching the published one, and binds the connection's own certificate.",
        "Three confidential-computing planes are documented, with signed trust artifacts recorded in a public transparency log.",
        "Corporate identity is disclosed to an unusual degree, including registration identifiers and a named signatory, in a category where anonymous operators are common."
      ],
      "tradeoffs": [
        "The gateway and control plane are published under a source-available licence granting no production use for four years, so the service's own description of the code as fully open is inaccurate.",
        "No third-party audit exists; the operator states its compliance certification is not obtained and its processing addendum is an unsigned draft.",
        "Documented provider coverage is materially higher than the live catalogue supports, and most models do not route to a zero-retention upstream.",
        "The operation rests on one named individual with no disclosed funding, and the trust page links a repository that does not exist."
      ],
      "score_profile": "inference_service",
      "score": {
        "operational_maturity": 5.6,
        "data_governance": 8.8,
        "regional_deployment_control": 6.6,
        "serving_flexibility": 5.2,
        "api_interoperability": 8.6,
        "traffic_resilience": 7.4,
        "customization_lifecycle": 3.6,
        "documentation_transparency": 8.2,
        "overall": 6.81
      },
      "terms": {
        "kind": "web_terms",
        "label": "TrustedRouter Terms of Service",
        "url": "https://trustedrouter.com/terms",
        "verified_at": "2026-08-31"
      },
      "evidence": [
        {
          "kind": "web",
          "label": "Privacy policy",
          "url": "https://trustedrouter.com/privacy",
          "verified_at": "2026-08-31"
        },
        {
          "kind": "web",
          "label": "Attestation and trust artifacts",
          "url": "https://trust.trustedrouter.com/",
          "verified_at": "2026-08-31"
        },
        {
          "kind": "web",
          "label": "Pricing",
          "url": "https://trustedrouter.com/pricing",
          "verified_at": "2026-08-31"
        },
        {
          "kind": "web",
          "label": "Compliance status",
          "url": "https://trustedrouter.com/legal",
          "verified_at": "2026-08-31"
        }
      ],
      "verified_at": "2026-08-31",
      "trust": {
        "verified_at": "2026-09-12",
        "properties": {
          "response_integrity": {
            "status": "documented_yes",
            "note": "The receipts page states: \"Add one header to any chat or responses call and TrustedRouter returns a signed receipt: a compact proof that this exact request produced this exact response, which model and provider served it, and how the upstream was verified.\" The receipt is signed inside TrustedRouter's attested enclave and binds the response bytes; whether it reaches the upstream model depends on the route's stated verification tier.",
            "url": "https://trustedrouter.com/docs/receipts",
            "scope": "TrustedRouter receipts documentation, for the TrustedRouter API",
            "verified_at": "2026-09-12"
          },
          "upstream_disclosure": {
            "status": "documented_yes",
            "note": "The sub-processor page names the downstream model providers individually and states: \"Downstream model providers are subprocessors only when customer traffic is routed to them.\"",
            "url": "https://trustedrouter.com/legal/subprocessors",
            "scope": "TrustedRouter sub-processor list, for the TrustedRouter API",
            "verified_at": "2026-09-12"
          },
          "credential_handling": {
            "status": "documented_yes",
            "note": "The privacy policy states: \"Raw API keys are shown once and stored only as protected hashes. BYOK provider credentials are encrypted.\"",
            "url": "https://trustedrouter.com/privacy",
            "scope": "TrustedRouter privacy policy, for the TrustedRouter API",
            "verified_at": "2026-09-12"
          },
          "cache_isolation": {
            "status": "undocumented",
            "note": "The prompt-caching guide says only that \"Provider caches are generally scoped to a provider, account, model, and prompt prefix.\" It does not say whose provider account a request on TrustedRouter's own credentials is cached under, so it does not establish whether caches are pooled across customers.",
            "url": "https://trustedrouter.com/docs/prompt-caching",
            "scope": "TrustedRouter prompt-caching guide, for the TrustedRouter API",
            "verified_at": "2026-09-12"
          },
          "vulnerability_disclosure": {
            "status": "documented_yes",
            "note": "The legal page states: \"Security contact: security@trustedrouter.com.\"",
            "url": "https://trustedrouter.com/legal",
            "scope": "TrustedRouter legal page, for the TrustedRouter API",
            "verified_at": "2026-09-12"
          },
          "independent_audit": {
            "status": "documented_no",
            "note": "The legal page states: \"TrustedRouter does not yet have SOC 2, ISO 27001, HIPAA certification, or a third-party audit report.\"",
            "url": "https://trustedrouter.com/legal",
            "scope": "TrustedRouter legal page, for the TrustedRouter API",
            "verified_at": "2026-09-12"
          }
        },
        "findings": []
      }
    },
    {
      "id": "martian",
      "name": "Martian Gateway",
      "operator": "Martian Learning, Inc.",
      "service_type": "routing_aggregator",
      "url": "https://docs.withmartian.com/",
      "description": "A routing API forwarding to a few hundred hosted models, alongside a separately branded endpoint applying inference-time optimisation.",
      "service_boundary": "Represents the Martian routing gateway, not the operator's research work or the separately branded optimisation product sold under another name.",
      "delivery_modes": [
        "on_demand"
      ],
      "model_sources": [
        "third_party_proprietary",
        "open_weight"
      ],
      "api_styles": [
        "openai_compatible",
        "anthropic_compatible"
      ],
      "regional_controls": "No customer control over processing geography is documented.",
      "retention_controls": "The terms grant the operator a sublicensable right to use customer materials, defined to include all input data, for purposes that expressly include training and improving the operator's own machine-learning models. No retention period is stated.",
      "routing": "Requests reach named models through one compatible endpoint; a separately branded endpoint applies inference-time optimisation to frontier models.",
      "customization": "Inference-time optimisation is sold as a distinct endpoint rather than as customer fine-tuning.",
      "strengths": [
        "Inference-time optimisation is offered as a product with a stated quality commitment, which is a different proposition from routing alone.",
        "The gateway exposes both compatible request formats and publishes a public model listing without requiring a key."
      ],
      "tradeoffs": [
        "The terms expressly license the operator to train its own models on customer inputs, which is the opposite of the default among comparable services.",
        "The pricing page the operator's own contract cites does not exist, so the fee model cannot be established from published documents.",
        "The product has been repositioned twice and now sits alongside a separately branded successor, leaving the durable boundary unclear."
      ],
      "score_profile": "inference_service",
      "score": {
        "operational_maturity": 5.4,
        "data_governance": 2.4,
        "regional_deployment_control": 3.0,
        "serving_flexibility": 4.0,
        "api_interoperability": 7.8,
        "traffic_resilience": 5.4,
        "customization_lifecycle": 4.2,
        "documentation_transparency": 3.2,
        "overall": 4.37
      },
      "terms": {
        "kind": "web_terms",
        "label": "Martian Terms of Service",
        "url": "https://withmartian.com/terms-of-service",
        "verified_at": "2026-08-31"
      },
      "evidence": [
        {
          "kind": "web",
          "label": "Gateway documentation",
          "url": "https://docs.withmartian.com/",
          "verified_at": "2026-08-31"
        },
        {
          "kind": "web",
          "label": "Company site",
          "url": "https://withmartian.com/",
          "verified_at": "2026-08-31"
        }
      ],
      "verified_at": "2026-08-31",
      "trust": {
        "verified_at": "2026-09-12",
        "properties": {
          "response_integrity": {
            "status": "undocumented",
            "note": "No signature, attestation, or equivalent mechanism for verifying that a response arrived unaltered from the upstream model appears in the endpoints reference or elsewhere in the API documentation.",
            "url": "https://docs.withmartian.com/api-reference/endpoints",
            "scope": "Martian API reference, endpoints page, for Martian Gateway",
            "verified_at": "2026-09-12"
          },
          "upstream_disclosure": {
            "status": "undocumented",
            "note": "The models page says only that \"Martian Gateway supports 200+ models across major providers.\" and names no provider; no privacy or sub-processor page names the parties that receive request content.",
            "url": "https://docs.withmartian.com/api-reference/models",
            "scope": "Martian API reference, models page, for Martian Gateway",
            "verified_at": "2026-09-12"
          },
          "credential_handling": {
            "status": "documented_no",
            "note": "The documentation offers no customer-supplied-key path: the authentication page documents only a Martian-issued key (\"Store your API key in environment variables or a secure secrets management system.\").",
            "url": "https://docs.withmartian.com/api-reference/authentication",
            "scope": "Martian API reference, authentication page, for Martian Gateway",
            "verified_at": "2026-09-12"
          },
          "cache_isolation": {
            "status": "undocumented",
            "note": "No prompt-caching behaviour or cache scope is described in the advanced-usage page or elsewhere in the API reference.",
            "url": "https://docs.withmartian.com/api-reference/advanced",
            "scope": "Martian API reference, advanced page, for Martian Gateway",
            "verified_at": "2026-09-12"
          },
          "vulnerability_disclosure": {
            "status": "undocumented",
            "note": "The privacy policy names no security contact or disclosure route, and no security.txt is served.",
            "url": "https://withmartian.com/privacy-policy",
            "scope": "Martian privacy policy, for Martian Gateway",
            "verified_at": "2026-09-12"
          },
          "independent_audit": {
            "status": "undocumented",
            "note": "No SOC 2, ISO 27001, or equivalent attestation is named on the site or in the documentation.",
            "url": "https://withmartian.com/",
            "scope": "Martian website, for Martian Gateway",
            "verified_at": "2026-09-12"
          }
        },
        "findings": []
      }
    },
    {
      "id": "meta-model-api",
      "name": "Meta Model API",
      "operator": "Meta Platforms",
      "service_type": "direct_model_api",
      "url": "https://dev.meta.ai/docs/",
      "description": "Meta's self-serve managed API for its hosted Muse model families, exposing OpenAI-compatible and Anthropic-compatible request formats over one inference pipeline.",
      "service_boundary": "Represents the developer inference API Meta operates at api.meta.ai, not the consumer Meta AI assistant, the Muse Code coding agent, individual Muse or Llama model releases, or open-weight Muse Glimmer running on customer hardware.",
      "delivery_modes": [
        "on_demand"
      ],
      "model_sources": [
        "first_party"
      ],
      "api_styles": [
        "openai_compatible",
        "anthropic_compatible"
      ],
      "regional_controls": "Availability is jurisdiction-gated by a dated Model Designation and Geographic Use Policy that names restricted territories and per-model country exclusions, and Meta may enable or restrict any jurisdiction at its discretion. Meta states it does not receive, determine, or route traffic based on end-user location, and no customer-selected processing region, regional endpoint, or private networking option is documented.",
      "retention_controls": "Data handling is tied to a published model tier rather than an account setting. Standard-tier models are processed under the Meta Global Processor Terms and are not used to train Meta models; the discounted Contributor tier grants Meta permission to train on prompts and completions, carries an instruction not to submit confidential or personal information, and offers no per-request opt-out. Meta retains content and usage data to deliver the service, meet legal obligations, exercise its rights, and run safety, abuse, and policy review; no zero-retention or customer deletion control is documented.",
      "routing": "Customers select a published Meta model id; the service exposes only Meta's own hosted models and performs no cross-provider routing or fallback.",
      "customization": "No fine-tuning, customer-supplied models, or dedicated deployments are documented. Lifecycle control is limited to pinning published checkpoint model ids and to prompt caching.",
      "strengths": [
        "Three interchangeable request formats run the same models over one pipeline, so existing OpenAI or Anthropic client code ports with a base-URL and key change.",
        "Training use is bound to an explicitly labelled model id and backed by processor terms, a data security addendum, and a published subprocessor list, rather than to an account toggle.",
        "An unauthenticated status endpoint reports overall service state, per-model health, and recent incident history alongside documented retry guidance."
      ],
      "tradeoffs": [
        "The terms govern a limited preview period, and there is no batch, reserved-capacity, dedicated-endpoint, or fine-tuning path.",
        "Regional control is a restriction list rather than a customer choice: no processing geography, regional endpoint, or private-network option is offered.",
        "Only Meta's own hosted models are served, and account administration is limited to team-scoped API keys and shared rate limits with no documented SSO, audit logging, or service-level commitment."
      ],
      "score_profile": "inference_service",
      "score": {
        "operational_maturity": 5.6,
        "data_governance": 7.4,
        "regional_deployment_control": 2.6,
        "serving_flexibility": 3.0,
        "api_interoperability": 8.6,
        "traffic_resilience": 3.2,
        "customization_lifecycle": 2.8,
        "documentation_transparency": 7.8,
        "overall": 5.19
      },
      "terms": {
        "kind": "web_terms",
        "label": "Meta Model API Terms of Service",
        "url": "https://dev.meta.ai/legal/terms-of-service",
        "verified_at": "2026-08-30"
      },
      "evidence": [
        {
          "kind": "web",
          "label": "Meta Model API documentation overview",
          "url": "https://dev.meta.ai/docs/overview",
          "verified_at": "2026-08-30"
        },
        {
          "kind": "web",
          "label": "Request formats and compatibility contracts",
          "url": "https://dev.meta.ai/docs/protocols",
          "verified_at": "2026-08-30"
        },
        {
          "kind": "web",
          "label": "Hosted model families and data-use tiers",
          "url": "https://dev.meta.ai/docs/models",
          "verified_at": "2026-08-30"
        },
        {
          "kind": "web",
          "label": "Model Designation and Geographic Use Policy",
          "url": "https://dev.meta.ai/legal/geographic-use-policy",
          "verified_at": "2026-08-30"
        },
        {
          "kind": "web",
          "label": "Meta Model API Acceptable Use Policy",
          "url": "https://dev.meta.ai/legal/acceptable-use-policy",
          "verified_at": "2026-08-30"
        },
        {
          "kind": "web",
          "label": "Team API keys and shared rate-limit scope",
          "url": "https://dev.meta.ai/docs/authentication",
          "verified_at": "2026-08-30"
        },
        {
          "kind": "web",
          "label": "Service status and incident-history endpoint",
          "url": "https://dev.meta.ai/docs/api-reference/status",
          "verified_at": "2026-08-30"
        }
      ],
      "verified_at": "2026-08-30",
      "trust": {
        "verified_at": "2026-09-12",
        "properties": {
          "response_integrity": {
            "status": "undocumented",
            "note": "No signature, attestation, or equivalent mechanism for verifying that a response arrived unaltered from the model appears in the API reference or the security documentation.",
            "url": "https://dev.meta.ai/docs/protocols",
            "scope": "Meta Model API protocols page, for the Meta Model API",
            "verified_at": "2026-09-12"
          },
          "upstream_disclosure": {
            "status": "documented_yes",
            "note": "The terms of service state the operator processes the content as a processor and that \"You authorize Meta to engage subprocessors included in the list located here, as may be updated by Meta from time to time.\" The linked list is the named disclosure.",
            "url": "https://dev.meta.ai/legal/terms-of-service",
            "scope": "Meta Model API terms of service, for the Meta Model API",
            "verified_at": "2026-09-12"
          },
          "credential_handling": {
            "status": "documented_no",
            "note": "The API offers no customer-supplied-key path: \"Log in and open the API keys tab. Click Create API key, give it a descriptive name, and click Create.\"",
            "url": "https://dev.meta.ai/docs/authentication",
            "scope": "Meta Model API authentication page, for the Meta Model API",
            "verified_at": "2026-09-12"
          },
          "cache_isolation": {
            "status": "undocumented",
            "note": "The prompt-caching page documents an optional routing hint (\"Requests that share a key route together, so a request is more likely to land on a backend that already holds its prefix.\") but never states whether a cached prefix is scoped to the account that created it.",
            "url": "https://dev.meta.ai/docs/prompt-caching",
            "scope": "Meta Model API prompt-caching page, for the Meta Model API",
            "verified_at": "2026-09-12"
          },
          "vulnerability_disclosure": {
            "status": "documented_yes",
            "note": "Meta's company-wide bug bounty scope covers its models: \"The bug bounty program is interested in reports that demonstrate integral privacy or security issues associated with Meta's large language models, including being able to leak or extract training data through tactics like model inversion or extraction attacks.\" It does not name the Model API.",
            "url": "https://bugbounty.meta.com/scope/",
            "scope": "Meta bug bounty scope, for the Meta Model API",
            "verified_at": "2026-09-12"
          },
          "independent_audit": {
            "status": "undocumented",
            "note": "No SOC 2, ISO 27001, or equivalent attestation is named in the terms of service or the documentation.",
            "url": "https://dev.meta.ai/legal/terms-of-service",
            "scope": "Meta Model API terms of service, for the Meta Model API",
            "verified_at": "2026-09-12"
          }
        },
        "findings": []
      }
    },
    {
      "id": "azure-ai-foundry-models",
      "name": "Microsoft Foundry Models",
      "operator": "Microsoft Azure",
      "service_type": "cloud_model_platform",
      "url": "https://learn.microsoft.com/en-us/azure/ai-foundry/foundry-models/",
      "description": "Azure's managed foundation-model catalog and inference platform for Azure Direct Models, partner models, open models, and customer deployments.",
      "service_boundary": "Represents model inference and deployment in Microsoft Foundry, including Azure OpenAI as an Azure-hosted path, not the direct OpenAI API, Microsoft 365 Copilot, or the broader Foundry agent platform.",
      "delivery_modes": [
        "on_demand",
        "batch",
        "reserved_capacity",
        "dedicated_endpoint"
      ],
      "model_sources": [
        "first_party",
        "third_party_proprietary",
        "open_weight",
        "customer_supplied"
      ],
      "api_styles": [
        "service_native",
        "openai_compatible"
      ],
      "regional_controls": "Standard, Global, and Data Zone deployments have different processing boundaries. Geography-scoped and EU, US, or APAC Data Zone options are model- and deployment-specific.",
      "retention_controls": "Microsoft states Azure Direct Model prompts and outputs are not shared with model providers or used to train foundation models without permission; stateful APIs, batch, files, and abuse monitoring have separate storage behavior.",
      "routing": "Global and Data Zone deployment types can route capacity across allowed Azure locations for the selected model; this is cloud-capacity routing, not general provider selection.",
      "customization": "Fine-tuning, provisioned deployments, managed compute, and customer model deployments are available for eligible models.",
      "strengths": [
        "A large multi-publisher catalog is integrated with Azure identity, networking, and geography controls.",
        "Common inference APIs reduce integration differences across supported models."
      ],
      "tradeoffs": [
        "Model availability, terms, and processing geography vary by deployment type.",
        "The product boundary and naming evolve quickly and require careful distinction from direct vendor APIs."
      ],
      "score_profile": "inference_service",
      "score": {
        "operational_maturity": 9.4,
        "data_governance": 9.2,
        "regional_deployment_control": 9.5,
        "serving_flexibility": 9.5,
        "api_interoperability": 8.8,
        "traffic_resilience": 8.8,
        "customization_lifecycle": 9.2,
        "documentation_transparency": 9.2,
        "overall": 9.23
      },
      "terms": {
        "kind": "web_terms",
        "label": "Microsoft Product Terms for Azure (EA/EAS)",
        "url": "https://www.microsoft.com/licensing/terms/productoffering/MicrosoftAzure/EAEAS",
        "verified_at": "2026-09-15"
      },
      "evidence": [
        {
          "kind": "web",
          "label": "Azure AI Model Inference API",
          "url": "https://learn.microsoft.com/en-us/rest/api/aifoundry/modelinference/",
          "verified_at": "2026-08-28"
        },
        {
          "kind": "web",
          "label": "Azure Direct Models data privacy",
          "url": "https://learn.microsoft.com/en-us/azure/foundry/responsible-ai/openai/data-privacy",
          "verified_at": "2026-08-28"
        },
        {
          "kind": "web",
          "label": "Deployment types and processing locations",
          "url": "https://learn.microsoft.com/en-us/azure/ai-foundry/foundry-models/concepts/deployment-types",
          "verified_at": "2026-08-28"
        }
      ],
      "verified_at": "2026-09-12",
      "trust": {
        "verified_at": "2026-09-12",
        "properties": {
          "response_integrity": {
            "status": "undocumented",
            "note": "No signature, attestation, or equivalent mechanism for verifying that a response arrived unaltered from the model appears in the API reference or the security documentation.",
            "url": "https://learn.microsoft.com/en-us/rest/api/aifoundry/modelinference/",
            "scope": "Azure AI Foundry model inference API reference, for Microsoft Foundry Models",
            "verified_at": "2026-09-12"
          },
          "upstream_disclosure": {
            "status": "documented_yes",
            "note": "The data-privacy page states who does and does not receive content: prompts, completions, embeddings, and training data \"are NOT available to OpenAI or other providers of Models sold by Azure\", and \"Microsoft hosts the Models sold by Azure in Microsoft's Azure environment and Models sold by Azure do NOT interact with any services operated by providers of Models sold by Azure\".",
            "url": "https://learn.microsoft.com/en-us/azure/foundry/responsible-ai/openai/data-privacy",
            "scope": "Azure Foundry data, privacy, and security page, for Microsoft Foundry Models",
            "verified_at": "2026-09-12"
          },
          "credential_handling": {
            "status": "documented_no",
            "note": "The service offers no customer-supplied-key path: \"Each request to Foundry Tools must include an authentication header. This header passes along a resource key or authentication token, which is used to validate your subscription for a service or group of services.\"",
            "url": "https://learn.microsoft.com/en-us/azure/ai-services/authentication",
            "scope": "Azure AI services authentication page, for Microsoft Foundry Models",
            "verified_at": "2026-09-12"
          },
          "cache_isolation": {
            "status": "documented_yes",
            "note": "The prompt-caching guide states: \"The system doesn't share prompt caches between Azure subscriptions.\"",
            "url": "https://learn.microsoft.com/en-us/azure/foundry/openai/how-to/prompt-caching",
            "scope": "Azure Foundry prompt-caching guide, for Microsoft Foundry Models",
            "verified_at": "2026-09-12"
          },
          "vulnerability_disclosure": {
            "status": "documented_yes",
            "note": "The Microsoft Azure bounty programme states its scope: \"Vulnerabilities submitted in the following Product(s) are eligible under this bounty program: Azure Products\".",
            "url": "https://www.microsoft.com/en-us/msrc/bounty-microsoft-azure",
            "scope": "Microsoft Azure bounty programme, for Microsoft Foundry Models",
            "verified_at": "2026-09-12"
          },
          "independent_audit": {
            "status": "undocumented",
            "note": "The Azure SOC 2 page states that the services in scope are listed in the attestation report and the services-in-scope page, and that page in turn points to a Service Trust Portal document behind sign-in; no public page names Foundry Models or Azure OpenAI in SOC 2 scope, so it is recorded as undocumented for the named service.",
            "url": "https://learn.microsoft.com/en-us/azure/compliance/offerings/offering-soc-2",
            "scope": "Azure SOC 2 Type 2 compliance offering page, read for Microsoft Foundry Models",
            "verified_at": "2026-09-12"
          }
        },
        "findings": [
          {
            "claim": "In 7 of these providers, we detected global cache sharing. The audit table records caching detected at the global level for an Azure text-embedding-3-small endpoint; the audits were conducted in September and early October 2024 and disclosed to each provider in October 2024.",
            "published_at": "2025-07-13",
            "source": {
              "label": "Auditing Prompt Caching in Language Model APIs, arXiv 2502.07776v2",
              "url": "https://arxiv.org/abs/2502.07776v2",
              "kind": "third_party",
              "content_sha256": "2d15ac6cd0431b885187028fef6cdb2f15feb328ba891b4e04e933d76fa3f624",
              "fetched_at": "2026-09-12"
            },
            "operator_response": null,
            "resolved": {
              "url": "https://learn.microsoft.com/en-us/azure/foundry/openai/how-to/prompt-caching",
              "verified_at": "2026-09-12",
              "summary": "The current prompt-caching guide states the system does not share prompt caches between Azure subscriptions; the paper does not name Azure among the providers that confirmed a change."
            }
          }
        ]
      }
    },
    {
      "id": "minimax-open-platform",
      "name": "MiniMax Open Platform",
      "operator": "MiniMax",
      "service_type": "direct_model_api",
      "url": "https://platform.minimax.io/docs/guides/quickstart",
      "description": "MiniMax's international developer platform for language, speech, image, music, and video model APIs.",
      "service_boundary": "Represents the international MiniMax Open Platform API, not MiniMax consumer applications, mainland-China endpoints, or MiniMax models hosted by third parties.",
      "delivery_modes": [
        "on_demand"
      ],
      "model_sources": [
        "first_party"
      ],
      "api_styles": [
        "service_native",
        "openai_compatible"
      ],
      "regional_controls": "The reviewed international documentation does not establish customer-selected processing regions.",
      "retention_controls": "Data handling follows the platform terms and API privacy policy; customers should review capability-specific rules for uploaded and generated media.",
      "routing": "Customers select MiniMax-operated models across supported modalities.",
      "customization": "The reviewed public API focuses on managed capability endpoints rather than customer-supplied model deployment.",
      "strengths": [
        "A single direct platform spans several generative media modalities.",
        "Official documentation provides native and compatible integration guidance."
      ],
      "tradeoffs": [
        "Media APIs introduce capability-specific storage and rights considerations.",
        "Public regional-control documentation is limited."
      ],
      "score_profile": "inference_service",
      "score": {
        "operational_maturity": 7.0,
        "data_governance": 5.5,
        "regional_deployment_control": 3.5,
        "serving_flexibility": 5.3,
        "api_interoperability": 8.0,
        "traffic_resilience": 4.5,
        "customization_lifecycle": 4.0,
        "documentation_transparency": 6.8,
        "overall": 5.61
      },
      "terms": {
        "kind": "web_terms",
        "label": "MiniMax Open Platform Terms of Service",
        "url": "https://platform.minimax.io/protocol/terms-of-service",
        "verified_at": "2026-08-28"
      },
      "evidence": [
        {
          "kind": "web",
          "label": "MiniMax API quickstart",
          "url": "https://platform.minimax.io/docs/guides/quickstart",
          "verified_at": "2026-08-28"
        }
      ],
      "verified_at": "2026-08-28",
      "trust": {
        "verified_at": "2026-09-12",
        "properties": {
          "response_integrity": {
            "status": "undocumented",
            "note": "No signature, attestation, or equivalent mechanism for verifying that a response arrived unaltered from the model appears in the API reference or the security documentation.",
            "url": "https://platform.minimax.io/docs/llms.txt",
            "scope": "MiniMax platform documentation, for the MiniMax Open Platform",
            "verified_at": "2026-09-12"
          },
          "upstream_disclosure": {
            "status": "documented_yes",
            "note": "The privacy policy states the operator processes the content: \"Services Input & Output: We process your Input (which may include text, voice, or other content) and Output and any other information you provide in connection with your use of the Service, including any Personal Information contained therein.\" No subprocessor is named.",
            "url": "https://platform.minimax.io/protocol/privacy-policy",
            "scope": "MiniMax platform privacy policy, for the MiniMax Open Platform",
            "verified_at": "2026-09-12"
          },
          "credential_handling": {
            "status": "documented_no",
            "note": "The API offers no customer-supplied-key path: \"Visit API Keys > Create new secret key to get your API Key\" and every documented request uses that key.",
            "url": "https://platform.minimax.io/docs/guides/quickstart-preparation",
            "scope": "MiniMax platform quickstart, for the MiniMax Open Platform",
            "verified_at": "2026-09-12"
          },
          "cache_isolation": {
            "status": "undocumented",
            "note": "The prompt-caching reference documents the feature and its billing but never states whether a cache is scoped to the account that created it.",
            "url": "https://platform.minimax.io/docs/api-reference/text-prompt-caching",
            "scope": "MiniMax prompt-caching reference, for the MiniMax Open Platform",
            "verified_at": "2026-09-12"
          },
          "vulnerability_disclosure": {
            "status": "undocumented",
            "note": "No security contact or disclosure policy appears on the contact page, in the terms, or in the privacy policy, and no security.txt is served.",
            "url": "https://platform.minimax.io/docs/faq/contact-us",
            "scope": "MiniMax platform contact page, for the MiniMax Open Platform",
            "verified_at": "2026-09-12"
          },
          "independent_audit": {
            "status": "undocumented",
            "note": "No SOC 2, ISO 27001, or equivalent attestation is named on the company page or in the platform documentation.",
            "url": "https://www.minimax.io/about",
            "scope": "MiniMax company page, for the MiniMax Open Platform",
            "verified_at": "2026-09-12"
          }
        },
        "findings": []
      }
    },
    {
      "id": "mistral-ai-studio",
      "name": "Mistral AI Studio",
      "operator": "Mistral AI",
      "service_type": "direct_model_api",
      "url": "https://docs.mistral.ai/",
      "description": "Mistral AI's managed developer platform and API for its model families, embeddings, OCR, audio, agents, and related services.",
      "service_boundary": "Represents Mistral AI Studio, formerly La Plateforme, not Le Chat, open-weight downloads, self-deployed models, or partner-served Mistral endpoints.",
      "delivery_modes": [
        "on_demand",
        "batch"
      ],
      "model_sources": [
        "first_party",
        "third_party_proprietary",
        "open_weight"
      ],
      "api_styles": [
        "service_native",
        "openai_compatible"
      ],
      "regional_controls": "Deployment and residency commitments vary between the hosted platform, enterprise arrangements, and partner-served deployments; the reviewed public docs do not support one universal region claim.",
      "retention_controls": "Data handling depends on account tier, feature, and governing commercial terms; stateful platform features must be reviewed separately from stateless model calls.",
      "routing": "Customers select models in the Mistral-hosted catalog; partner-served deployments are a distinct contractual path.",
      "customization": "Fine-tuning and agent-building paths are documented for eligible models and accounts.",
      "strengths": [
        "A European-operated direct platform spans proprietary and open model families.",
        "The platform includes model APIs, tuning, OCR, audio, and agent services."
      ],
      "tradeoffs": [
        "The broad platform includes features with different storage behavior.",
        "Partner-hosted and customer-infrastructure deployments have separate terms and boundaries."
      ],
      "score_profile": "inference_service",
      "score": {
        "operational_maturity": 8.2,
        "data_governance": 6.8,
        "regional_deployment_control": 6.5,
        "serving_flexibility": 7.2,
        "api_interoperability": 8.5,
        "traffic_resilience": 5.5,
        "customization_lifecycle": 7.5,
        "documentation_transparency": 7.8,
        "overall": 7.25
      },
      "terms": {
        "kind": "web_terms",
        "label": "Mistral AI Legal Center",
        "url": "https://legal.mistral.ai/terms",
        "verified_at": "2026-08-28"
      },
      "evidence": [
        {
          "kind": "web",
          "label": "Mistral AI documentation",
          "url": "https://docs.mistral.ai/",
          "verified_at": "2026-08-28"
        },
        {
          "kind": "web",
          "label": "API reference",
          "url": "https://docs.mistral.ai/api/",
          "verified_at": "2026-08-28"
        }
      ],
      "verified_at": "2026-09-12",
      "trust": {
        "verified_at": "2026-09-12",
        "properties": {
          "response_integrity": {
            "status": "undocumented",
            "note": "No signature, attestation, or equivalent mechanism for verifying that a response arrived unaltered from the model appears in the API reference or the security documentation.",
            "url": "https://docs.mistral.ai/api/",
            "scope": "Mistral API reference, for Mistral AI Studio",
            "verified_at": "2026-09-12"
          },
          "upstream_disclosure": {
            "status": "documented_yes",
            "note": "The public trust centre's subprocessor list names the infrastructure parties per product, including \"Microsoft Inc. • Cloud Infrastructure Sweden, Norway Products: Vibe, Studio / AI\" and \"Google LLC • Cloud Infrastructure Netherlands, Belgium, United States (US API endpoint) Products: Vibe, Studio/API (US API)\", and the privacy policy covers Mistral AI Studio by name.",
            "url": "https://trust.mistral.ai/",
            "scope": "Mistral trust centre subprocessor list, for Mistral AI Studio",
            "verified_at": "2026-09-12"
          },
          "credential_handling": {
            "status": "documented_no",
            "note": "The API offers no customer-supplied-key path: the quickstart's first step is \"Navigate to API Keys in the left sidebar. Click Create new key.\" in the Studio console, and every documented request uses that key.",
            "url": "https://docs.mistral.ai/getting-started/quickstarts/studio/activate-and-generate-api-key",
            "scope": "Mistral AI Studio API-key quickstart, for Mistral AI Studio",
            "verified_at": "2026-09-12"
          },
          "cache_isolation": {
            "status": "undocumented",
            "note": "The prompt-caching page documents the feature and its billing but never states whether a cache is scoped to the organisation that created it.",
            "url": "https://docs.mistral.ai/studio/conversations/advanced/prompt-caching",
            "scope": "Mistral AI Studio prompt-caching page, for Mistral AI Studio",
            "verified_at": "2026-09-12"
          },
          "vulnerability_disclosure": {
            "status": "documented_yes",
            "note": "A security.txt file is published with a contact address (\"Contact: mailto:security@mistral.ai\") and a HackerOne submission policy.",
            "url": "https://mistral.ai/.well-known/security.txt",
            "scope": "Mistral security.txt, for Mistral AI Studio",
            "verified_at": "2026-09-12"
          },
          "independent_audit": {
            "status": "undocumented",
            "note": "The public trust centre lists ISO 27001, ISO 27701, and SOC 2 Type II for the company, with certificates and a report behind a request-access control; nothing states that the attestations cover Mistral AI Studio or the API, so it is recorded as undocumented for the named service.",
            "url": "https://trust.mistral.ai/",
            "scope": "Mistral trust centre compliance section, read for Mistral AI Studio",
            "verified_at": "2026-09-12"
          }
        },
        "findings": [
          {
            "claim": "Mistral AI Studio API files input filtering and access restriction: \"A lack of filtering on the API /api/files can let a malicious user access unattended resources.\" Affected: Mistral AI Studio and le-chat; remediation: \"Update to Mistral AI Studio 2026.1.3, 2026.2.0, or later.\"",
            "published_at": "2026-03-16",
            "source": {
              "label": "Mistral security advisory MAI-2026-001",
              "url": "https://docs.mistral.ai/resources/security-advisories/MAI-2026-001",
              "kind": "third_party",
              "content_sha256": "211b549b17fe260c39a453a146099d2c7c01cf95e8e188c37ae7bd8f8ab7b2ed",
              "fetched_at": "2026-09-12"
            },
            "operator_response": {
              "url": "https://docs.mistral.ai/resources/security-advisories/MAI-2026-001",
              "verified_at": "2026-09-12",
              "summary": "The operator published the advisory itself, naming the affected products and the fixed releases."
            },
            "resolved": {
              "url": "https://docs.mistral.ai/resources/security-advisories/MAI-2026-001",
              "verified_at": "2026-09-12",
              "summary": "Fixed in Mistral AI Studio 2026.1.3 and 2026.2.0 per the advisory."
            }
          }
        ]
      }
    },
    {
      "id": "moonshot-ai-open-platform",
      "name": "Moonshot AI Open Platform",
      "operator": "Moonshot AI",
      "service_type": "direct_model_api",
      "url": "https://platform.kimi.ai/docs/overview",
      "description": "Moonshot AI's direct developer platform for Kimi model APIs and related generation capabilities.",
      "service_boundary": "Represents the Moonshot AI Open Platform API, not the Kimi consumer application, downloadable Kimi weights, or third-party Kimi hosting.",
      "delivery_modes": [
        "on_demand",
        "batch"
      ],
      "model_sources": [
        "first_party"
      ],
      "api_styles": [
        "openai_compatible",
        "anthropic_compatible"
      ],
      "regional_controls": "The reviewed platform documentation does not establish customer-selected processing regions; the privacy policy states that collected information is stored on servers in Singapore.",
      "retention_controls": "Unless otherwise agreed in writing, the model-use agreement lets Moonshot use customer content to provide and improve its services, and customers who need limits on training use must arrange an enterprise or separate written agreement. Enterprise customers can request zero data retention, which deletes request content once the response returns but excludes directly uploaded images and videos, operational data, and third-party models, connectors, and plugins. Outside it, the privacy policy states no fixed retention period.",
      "routing": "Customers select Moonshot-operated Kimi models rather than independent inference providers.",
      "customization": "The reviewed public API is a managed model-access service and does not establish imported customer-weight deployment.",
      "strengths": [
        "Direct access to Moonshot's Kimi model family.",
        "OpenAI-compatible and Anthropic Messages-compatible access lowers integration friction, and a Batch API serves asynchronous bulk jobs."
      ],
      "tradeoffs": [
        "Customer content may be used to improve the services by default, and zero data retention is limited to enterprise customers.",
        "Public regional controls are not exposed beyond a single disclosed storage location.",
        "The service boundary differs from Kimi access through routers and other hosts."
      ],
      "score_profile": "inference_service",
      "score": {
        "operational_maturity": 6.8,
        "data_governance": 5.5,
        "regional_deployment_control": 3.5,
        "serving_flexibility": 5.5,
        "api_interoperability": 8.0,
        "traffic_resilience": 4.5,
        "customization_lifecycle": 3.5,
        "documentation_transparency": 6.5,
        "overall": 5.53
      },
      "terms": {
        "kind": "web_terms",
        "label": "Kimi Open Platform Model Use Agreement",
        "url": "https://platform.kimi.ai/docs/agreement/modeluse",
        "verified_at": "2026-09-15"
      },
      "evidence": [
        {
          "kind": "web",
          "label": "Kimi Open Platform overview",
          "url": "https://platform.kimi.ai/docs/overview",
          "verified_at": "2026-09-15"
        },
        {
          "kind": "web",
          "label": "API reference",
          "url": "https://platform.kimi.ai/docs/api/chat",
          "verified_at": "2026-09-15"
        },
        {
          "kind": "web",
          "label": "Zero data retention",
          "url": "https://platform.kimi.ai/docs/guide/zero-data-retention",
          "verified_at": "2026-09-15"
        },
        {
          "kind": "web",
          "label": "Batch API guide",
          "url": "https://platform.kimi.ai/docs/guide/use-batch-api",
          "verified_at": "2026-09-15"
        },
        {
          "kind": "web",
          "label": "Kimi Open Platform privacy policy",
          "url": "https://platform.kimi.ai/docs/agreement/userprivacy",
          "verified_at": "2026-09-15"
        }
      ],
      "verified_at": "2026-09-15",
      "trust": {
        "verified_at": "2026-09-12",
        "properties": {
          "response_integrity": {
            "status": "undocumented",
            "note": "No signature, attestation, or equivalent mechanism for verifying that a response arrived unaltered from the model appears in the API reference or the security documentation.",
            "url": "https://platform.kimi.ai/docs/api/chat",
            "scope": "Kimi API chat reference, for the Moonshot AI Open Platform",
            "verified_at": "2026-09-12"
          },
          "upstream_disclosure": {
            "status": "documented_yes",
            "note": "The platform privacy policy states the operator processes the content and names the categories of third-party providers it shares data with: \"These providers include hosting services, customer service vendors, cloud services, content delivery services, support and safety monitoring services, email communication software, web analytics services, payment and transaction processors, and other information technology providers.\" No provider is named individually.",
            "url": "https://platform.kimi.ai/docs/agreement/userprivacy",
            "scope": "Kimi platform privacy policy, for the Moonshot AI Open Platform",
            "verified_at": "2026-09-12"
          },
          "credential_handling": {
            "status": "documented_no",
            "note": "The API offers no customer-supplied-key path: \"The Authorization header expects a Bearer token. Use an MOONSHOT_API_KEY as the token.\"",
            "url": "https://platform.kimi.ai/docs/api/chat",
            "scope": "Kimi API chat reference, for the Moonshot AI Open Platform",
            "verified_at": "2026-09-12"
          },
          "cache_isolation": {
            "status": "undocumented",
            "note": "The context-caching guide documents creating, using, and billing caches but never states whether a cache is scoped to the account that created it.",
            "url": "https://platform.kimi.ai/docs/guide/use-context-caching-feature-of-kimi-api",
            "scope": "Kimi API context-caching guide, for the Moonshot AI Open Platform",
            "verified_at": "2026-09-12"
          },
          "vulnerability_disclosure": {
            "status": "undocumented",
            "note": "No security contact or disclosure policy appears in the privacy policy, the terms, or the platform documentation, and no security.txt is served on platform.kimi.ai.",
            "url": "https://platform.kimi.ai/docs/agreement/userprivacy",
            "scope": "Kimi platform privacy policy, for the Moonshot AI Open Platform",
            "verified_at": "2026-09-12"
          },
          "independent_audit": {
            "status": "undocumented",
            "note": "The platform home page claims \"Security and compliance assurance: SLA backed reliability with data compliance and privacy protections\" and names no attestation.",
            "url": "https://platform.kimi.ai/",
            "scope": "Kimi platform home page, for the Moonshot AI Open Platform",
            "verified_at": "2026-09-12"
          }
        },
        "findings": []
      }
    },
    {
      "id": "nano-gpt",
      "name": "Nano-GPT",
      "operator": "NanoGPT LLC",
      "service_type": "routing_aggregator",
      "url": "https://nano-gpt.com/",
      "description": "A routing API and chat surface reaching about a thousand text, image, video, and audio models, usable without an account.",
      "service_boundary": "Represents the Nano-GPT routing service and its chat surface, not the upstream providers it forwards to.",
      "delivery_modes": [
        "on_demand",
        "batch"
      ],
      "model_sources": [
        "third_party_proprietary",
        "open_weight"
      ],
      "api_styles": [
        "openai_compatible",
        "anthropic_compatible"
      ],
      "regional_controls": "No customer control over processing geography is documented; provider selection determines where upstream processing occurs.",
      "retention_controls": "The terms state the operator is not authorised to train models on customer content, and chat history is held locally by default. The terms are unusually candid that zero-retention routing is a best-effort classification based on a provider's own claim rather than verified visibility into that provider's servers.",
      "routing": "Requests can be pinned to a chosen provider, and a broad set of upstream partners is named in the privacy policy.",
      "customization": "The service routes existing hosted models; no customer fine-tuning is documented.",
      "strengths": [
        "Accountless and cryptocurrency-payable access, with generated user identifiers, removes the usual identity requirement for reaching hosted models.",
        "The terms state plainly that zero-retention status is a provider claim rather than something the operator can verify, which most competitors assert without qualification.",
        "Catalogue breadth spans text, image, video, and speech through one compatible endpoint."
      ],
      "tradeoffs": [
        "The operating company is registered but otherwise impersonal, with no named team, no funding disclosure, and an absent about page.",
        "No control over processing geography is documented.",
        "Confidence in retention behaviour rests on upstream provider claims by the operator's own admission."
      ],
      "score_profile": "inference_service",
      "score": {
        "operational_maturity": 6.2,
        "data_governance": 7.8,
        "regional_deployment_control": 3.2,
        "serving_flexibility": 5.0,
        "api_interoperability": 8.4,
        "traffic_resilience": 6.4,
        "customization_lifecycle": 3.0,
        "documentation_transparency": 7.6,
        "overall": 6.01
      },
      "terms": {
        "kind": "web_terms",
        "label": "NanoGPT Terms of Service",
        "url": "https://nano-gpt.com/legal/terms-of-service",
        "verified_at": "2026-09-15"
      },
      "evidence": [
        {
          "kind": "web",
          "label": "Pricing and fee model",
          "url": "https://nano-gpt.com/pricing",
          "verified_at": "2026-08-31"
        },
        {
          "kind": "web",
          "label": "API documentation",
          "url": "https://docs.nano-gpt.com/",
          "verified_at": "2026-08-31"
        }
      ],
      "verified_at": "2026-08-31",
      "trust": {
        "verified_at": "2026-09-12",
        "properties": {
          "response_integrity": {
            "status": "documented_yes",
            "note": "Scoped to the TEE-tagged models only. The API reference states: \"NanoGPT supports TEE-backed models with attestation/signature verification for stronger integrity and data-in-use isolation.\" Responses from the rest of the catalogue carry no signature or attestation.",
            "url": "https://docs.nano-gpt.com/api-reference/tee-verification",
            "scope": "NanoGPT API reference, TEE verification page, for the NanoGPT API",
            "verified_at": "2026-09-12"
          },
          "upstream_disclosure": {
            "status": "documented_yes",
            "note": "The privacy policy names the parties that receive prompts: \"When you submit a prompt, it is passed directly to the relevant service provider (such as OpenAI, Anthropic, Sakana AI, or another LLM provider).\" It also names the Gonka inference network, Kitani, and Grepture as intermediaries that see request content.",
            "url": "https://nano-gpt.com/legal/privacy-policy",
            "scope": "NanoGPT privacy policy, for the NanoGPT API",
            "verified_at": "2026-09-12"
          },
          "credential_handling": {
            "status": "documented_yes",
            "note": "The bring-your-own-key page states: \"Saved provider keys are encrypted at rest.\" Keys are shown again only as a four-character suffix.",
            "url": "https://nano-gpt.com/byok",
            "scope": "NanoGPT bring-your-own-key page, for the NanoGPT API",
            "verified_at": "2026-09-12"
          },
          "cache_isolation": {
            "status": "undocumented",
            "note": "The prompt-caching reference says only that \"Each provider keeps its own cache. If a request fails over to another provider, the previous cache may be unavailable.\" Neither it, the privacy policy, nor the terms state whether a cache entry is scoped to the requesting customer or pooled across customers routed through the same upstream credentials.",
            "url": "https://docs.nano-gpt.com/api-reference/miscellaneous/prompt-caching",
            "scope": "NanoGPT prompt-caching reference, for the NanoGPT API",
            "verified_at": "2026-09-12"
          },
          "vulnerability_disclosure": {
            "status": "documented_yes",
            "note": "A security.txt file is published with a contact address (\"Contact: mailto:support@nano-gpt.com\") and an expiry in 2027. No bug-bounty programme is named.",
            "url": "https://nano-gpt.com/.well-known/security.txt",
            "scope": "NanoGPT security.txt, for the NanoGPT API",
            "verified_at": "2026-09-12"
          },
          "independent_audit": {
            "status": "documented_no",
            "note": "The trust page states: \"NanoGPT does not currently hold formal certifications such as SOC 2 or ISO 27001.\" It adds that the operator is evaluating formal compliance programmes.",
            "url": "https://nano-gpt.com/trust",
            "scope": "NanoGPT trust page, for the NanoGPT API",
            "verified_at": "2026-09-12"
          }
        },
        "findings": []
      }
    },
    {
      "id": "nebius-token-factory",
      "name": "Nebius Token Factory",
      "operator": "Nebius",
      "service_type": "managed_inference_host",
      "url": "https://docs.tokenfactory.nebius.com/",
      "description": "Managed inference and post-training platform for open-weight models, offering shared endpoints, region-pinned dedicated endpoints, custom weight hosting, and fine-tuning.",
      "service_boundary": "Represents the Token Factory inference platform, previously presented as Nebius AI Studio. Nebius AI Cloud's general GPU compute and the models served through the platform remain separate boundaries.",
      "delivery_modes": [
        "on_demand",
        "dedicated_endpoint"
      ],
      "model_sources": [
        "open_weight",
        "customer_supplied"
      ],
      "api_styles": [
        "openai_compatible"
      ],
      "regional_controls": "Nebius describes data centres in Finland, France, and the United States and states that a dedicated endpoint processes requests only in the selected region, without multi-region routing or automatic overflow. It presents itself as an EU data processor operating under GDPR with a customer-facing data processing agreement.",
      "retention_controls": "Nebius documents an account-level zero-data-retention setting under which inputs and outputs are not stored after a request is processed, and describes itself as processor with the customer as controller for content submitted to inference endpoints.",
      "routing": "Shared endpoints are served from Nebius capacity with documented rate limits and scaling rules. Dedicated endpoints are explicitly not routed outside their configured region.",
      "customization": "Supervised fine-tuning, LoRA and full fine-tuning, adapter merging, custom speculators, and hosting of customer-supplied weights on dedicated endpoints are documented.",
      "strengths": [
        "Dedicated endpoints pin processing to one selected region with an explicit statement that there is no multi-region overflow.",
        "Customer-supplied weights, fine-tuning, and adapter lifecycle are first-class rather than adjacent products.",
        "Inference observability and API integrations are documented as part of the service rather than left to the customer."
      ],
      "tradeoffs": [
        "The catalogue is open-weight models; first-party frontier models from other developers are not part of the boundary.",
        "The service was recently renamed from Nebius AI Studio, so third-party references and older integration guides may not match current documentation.",
        "Region pinning is documented for dedicated endpoints; shared-endpoint placement is not presented as customer-selected."
      ],
      "score_profile": "inference_service",
      "score": {
        "operational_maturity": 7.5,
        "data_governance": 8.5,
        "regional_deployment_control": 8.0,
        "serving_flexibility": 7.5,
        "api_interoperability": 7.5,
        "traffic_resilience": 6.5,
        "customization_lifecycle": 8.5,
        "documentation_transparency": 7.5,
        "overall": 7.74
      },
      "terms": {
        "kind": "web_terms",
        "label": "Nebius Token Factory legal quick guide",
        "url": "https://docs.tokenfactory.nebius.com/legal/legal-quick-guide",
        "verified_at": "2026-09-15"
      },
      "evidence": [
        {
          "kind": "web",
          "label": "Token Factory documentation",
          "url": "https://docs.tokenfactory.nebius.com/",
          "verified_at": "2026-08-29"
        },
        {
          "kind": "web",
          "label": "Inference engine overview",
          "url": "https://docs.tokenfactory.nebius.com/ai-models-inference/overview",
          "verified_at": "2026-08-29"
        },
        {
          "kind": "web",
          "label": "Dedicated endpoints overview",
          "url": "https://docs.tokenfactory.nebius.com/ai-models-inference/dedicated-endpoints/overview",
          "verified_at": "2026-08-29"
        },
        {
          "kind": "web",
          "label": "Custom model weights",
          "url": "https://docs.tokenfactory.nebius.com/ai-models-inference/dedicated-endpoints/custom-weights",
          "verified_at": "2026-08-29"
        }
      ],
      "verified_at": "2026-08-29",
      "trust": {
        "verified_at": "2026-09-15",
        "properties": {
          "response_integrity": {
            "status": "undocumented",
            "note": "No signature, attestation, or equivalent mechanism for verifying that a response arrived unaltered from the model appears in the API reference or the security documentation.",
            "url": "https://docs.tokenfactory.nebius.com/ai-models-inference/overview",
            "scope": "Nebius Token Factory inference overview, for Nebius Token Factory",
            "verified_at": "2026-09-15"
          },
          "upstream_disclosure": {
            "status": "documented_yes",
            "note": "The legal quick guide states the operator's role: \"for the content you submit to our model inference and fine-tuning endpoints via the API or web interface (prompts, datasets, etc.) and the output you receive, we act as the Data Processor under our DPA.\"",
            "url": "https://docs.tokenfactory.nebius.com/legal/legal-quick-guide",
            "scope": "Nebius Token Factory legal quick guide, for Nebius Token Factory",
            "verified_at": "2026-09-15"
          },
          "credential_handling": {
            "status": "documented_no",
            "note": "The API offers no customer-supplied-key path: the quickstart's only credential step is \"Get API key\" from the Token Factory console, and every documented request uses it.",
            "url": "https://docs.tokenfactory.nebius.com/quickstart",
            "scope": "Nebius Token Factory quickstart, for Nebius Token Factory",
            "verified_at": "2026-09-15"
          },
          "cache_isolation": {
            "status": "undocumented",
            "note": "No prompt or prefix caching scope is documented in the inference overview or elsewhere in the documentation.",
            "url": "https://docs.tokenfactory.nebius.com/ai-models-inference/overview",
            "scope": "Nebius Token Factory inference overview, for Nebius Token Factory",
            "verified_at": "2026-09-15"
          },
          "vulnerability_disclosure": {
            "status": "documented_yes",
            "note": "A security.txt file is published with a contact address (\"Contact: mailto:security@nebius.com\").",
            "url": "https://nebius.com/.well-known/security.txt",
            "scope": "Nebius security.txt, for Nebius Token Factory",
            "verified_at": "2026-09-15"
          },
          "independent_audit": {
            "status": "documented_yes",
            "note": "The Token Factory legal quick guide states: \"We are a certified company holding ISO 27001, ISO 27701 and SOC 2 Type II certifications.\" The statement is company-wide but sits in the service's own documentation; the reports are behind a request-access control.",
            "url": "https://docs.tokenfactory.nebius.com/legal/legal-quick-guide",
            "scope": "Nebius Token Factory legal quick guide, for Nebius Token Factory",
            "verified_at": "2026-09-15"
          }
        },
        "findings": []
      }
    },
    {
      "id": "nvidia-api-catalog",
      "name": "NVIDIA API Catalog",
      "operator": "NVIDIA",
      "service_type": "managed_inference_host",
      "url": "https://docs.api.nvidia.com/nim/docs/api-quickstart",
      "description": "NVIDIA's hosted evaluation and developer API catalog for NIM inference microservices running on NVIDIA-managed DGX Cloud infrastructure.",
      "service_boundary": "Represents hosted APIs invoked from NVIDIA's API Catalog, not self-hosted NIM containers, NVIDIA hardware, downloadable model artifacts, or cloud partners operating their own NIM endpoints.",
      "delivery_modes": [
        "on_demand"
      ],
      "model_sources": [
        "first_party",
        "third_party_proprietary",
        "open_weight"
      ],
      "api_styles": [
        "service_native",
        "openai_compatible"
      ],
      "regional_controls": "The hosted catalog documentation does not present customer-selected inference regions; production residency controls differ for self-hosted and partner-hosted NIM deployments.",
      "retention_controls": "Hosted API use follows NVIDIA API trial and service terms; model-specific and preview conditions must be reviewed before production use.",
      "routing": "Customers invoke a selected hosted NIM endpoint; the catalog is not a general automatic multi-provider router.",
      "customization": "Portable NIM microservices can be deployed elsewhere, but that customer- or partner-hosted path is outside this hosted-service record.",
      "strengths": [
        "A broad multimodal catalog exposes documented APIs backed by NVIDIA's inference stack.",
        "The same NIM packaging concept supports later migration to controlled deployments."
      ],
      "tradeoffs": [
        "Catalog-hosted endpoints and self-hosted NIM are materially different service boundaries.",
        "Hosted catalog access may be evaluation-oriented or subject to model-specific availability."
      ],
      "score_profile": "inference_service",
      "score": {
        "operational_maturity": 7.2,
        "data_governance": 5.8,
        "regional_deployment_control": 4.0,
        "serving_flexibility": 5.0,
        "api_interoperability": 8.2,
        "traffic_resilience": 4.5,
        "customization_lifecycle": 4.5,
        "documentation_transparency": 7.8,
        "overall": 5.86
      },
      "terms": {
        "kind": "web_terms",
        "label": "NVIDIA API Trial Terms",
        "url": "https://assets.ngc.nvidia.com/products/api-catalog/legal/NVIDIA%20API%20Trial%20Terms%20of%20Service.pdf",
        "verified_at": "2026-09-11"
      },
      "evidence": [
        {
          "kind": "web",
          "label": "API Catalog quickstart",
          "url": "https://docs.api.nvidia.com/nim/docs/api-quickstart",
          "verified_at": "2026-08-28"
        },
        {
          "kind": "web",
          "label": "NIM API overview",
          "url": "https://docs.api.nvidia.com/nim/re/docs/introduction",
          "verified_at": "2026-08-28"
        }
      ],
      "verified_at": "2026-08-28",
      "trust": {
        "verified_at": "2026-09-12",
        "properties": {
          "response_integrity": {
            "status": "undocumented",
            "note": "No signature, attestation, or equivalent mechanism for verifying that a response arrived unaltered from the model appears in the API reference or the security documentation.",
            "url": "https://docs.api.nvidia.com/nim/re/docs/introduction",
            "scope": "NVIDIA API Catalog documentation, for the NVIDIA API Catalog",
            "verified_at": "2026-09-12"
          },
          "upstream_disclosure": {
            "status": "documented_yes",
            "note": "The API trial terms state what the operator collects and shares: \"NVIDIA will collect the following data, without identifying specific users, to operate and improve the API Services and other products and services: ... (iv) User Content and Generated Content to improve NVIDIA products and services, including AI models. Your use of the API Services will be logged for security, fraud or abuse monitoring and shared with third party service providers for this purpose.\" Those third parties are not named.",
            "url": "https://assets.ngc.nvidia.com/products/api-catalog/legal/NVIDIA%20API%20Trial%20Terms%20of%20Service.pdf",
            "scope": "NVIDIA API trial terms of service, for the NVIDIA API Catalog",
            "verified_at": "2026-09-12"
          },
          "credential_handling": {
            "status": "documented_no",
            "note": "The API offers no customer-supplied-key path: \"The NIM API uses keys to authenticate requests to the NVIDIA GPU Cloud (NGC). Follow the steps below to generate a personal API key to authenticate API requests.\"",
            "url": "https://docs.api.nvidia.com/nim/docs/authentication",
            "scope": "NVIDIA API Catalog authentication page, for the NVIDIA API Catalog",
            "verified_at": "2026-09-12"
          },
          "cache_isolation": {
            "status": "undocumented",
            "note": "No prompt or prefix caching scope is documented for the hosted catalogue endpoints; the only cache-reuse documentation found concerns self-hosted NIM containers.",
            "url": "https://docs.api.nvidia.com/nim/re/docs/introduction",
            "scope": "NVIDIA API Catalog documentation, for the NVIDIA API Catalog",
            "verified_at": "2026-09-12"
          },
          "vulnerability_disclosure": {
            "status": "documented_yes",
            "note": "NVIDIA publishes a company-wide vulnerability reporting page (\"If you need to report a security issue, please use the appropriate contact points outlined below\") with a disclosure programme and the NVIDIA PSIRT mailbox; it does not name the API Catalog.",
            "url": "https://www.nvidia.com/en-us/security/report-vulnerability/",
            "scope": "NVIDIA report-a-vulnerability page, for the NVIDIA API Catalog",
            "verified_at": "2026-09-12"
          },
          "independent_audit": {
            "status": "undocumented",
            "note": "The AI trust centre says only that \"NVIDIA is committed to external validation of its security posture. Learn more about our compliance offerings.\" and its compliance list does not name the API Catalog, so it is recorded as undocumented for the named service.",
            "url": "https://www.nvidia.com/en-us/ai-trust-center/security-compliance/",
            "scope": "NVIDIA AI trust centre compliance page, read for the NVIDIA API Catalog",
            "verified_at": "2026-09-12"
          }
        },
        "findings": []
      }
    },
    {
      "id": "ollama-cloud",
      "name": "Ollama Cloud",
      "operator": "Ollama",
      "service_type": "managed_inference_host",
      "url": "https://docs.ollama.com/cloud",
      "description": "Managed hosting for open-weight models that Ollama clients can call in place of local execution, reachable through a local Ollama host or directly on ollama.com.",
      "service_boundary": "Represents the hosted service operated by Ollama. The self-operated Ollama runtime is a separate local-runtime record, and the models offered through the service remain their publishers' artifacts.",
      "delivery_modes": [
        "on_demand"
      ],
      "model_sources": [
        "open_weight"
      ],
      "api_styles": [
        "service_native",
        "openai_compatible"
      ],
      "regional_controls": "Ollama states that it hosts models and compute primarily in the United States and may route to Europe and Singapore for additional capacity. Customers are not offered a documented region selection or residency guarantee.",
      "retention_controls": "Ollama states that prompt and response data is never logged or trained on, that it requires no-logging, no-training, zero-retention terms from its hosting partners, and that zero data retention and logging is a plan feature. Its terms of service state that inputs and outputs are not used to train models.",
      "routing": "Requests are served from Ollama's own capacity across its partner providers; the service is not a cross-provider routing layer and does not expose routing policy to the customer.",
      "customization": "The service exposes a curated cloud model library. No fine-tuning, customer-supplied weights, or dedicated deployment path is documented.",
      "strengths": [
        "Cloud models are addressed through the same client, CLI, and API surface as local models, so a local workflow moves to hosted capacity without rewriting the integration.",
        "Retention posture is stated plainly, including a contractual no-logging, no-training, zero-retention requirement on hosting partners."
      ],
      "tradeoffs": [
        "Processing geography is described rather than selected; there is no documented region pinning or residency commitment.",
        "The service offers on-demand capacity only, with no documented batch, reserved, or dedicated path and no customer-supplied models.",
        "The catalogue is a curated set of cloud-enabled open-weight models rather than an open model marketplace."
      ],
      "score_profile": "inference_service",
      "score": {
        "operational_maturity": 6.0,
        "data_governance": 8.0,
        "regional_deployment_control": 3.0,
        "serving_flexibility": 4.0,
        "api_interoperability": 7.5,
        "traffic_resilience": 5.0,
        "customization_lifecycle": 3.0,
        "documentation_transparency": 7.0,
        "overall": 5.56
      },
      "terms": {
        "kind": "web_terms",
        "label": "Ollama Terms of Service",
        "url": "https://ollama.com/terms",
        "verified_at": "2026-09-12"
      },
      "evidence": [
        {
          "kind": "web",
          "label": "Cloud documentation",
          "url": "https://docs.ollama.com/cloud",
          "verified_at": "2026-08-29"
        },
        {
          "kind": "web",
          "label": "Cloud service overview and data handling",
          "url": "https://ollama.com/cloud",
          "verified_at": "2026-08-29"
        },
        {
          "kind": "web",
          "label": "API introduction and authentication",
          "url": "https://docs.ollama.com/api/introduction",
          "verified_at": "2026-08-29"
        }
      ],
      "verified_at": "2026-08-29",
      "trust": {
        "verified_at": "2026-09-12",
        "properties": {
          "response_integrity": {
            "status": "undocumented",
            "note": "No signature, attestation, or equivalent mechanism for verifying that a response arrived unaltered from the model appears in the API reference or the security documentation.",
            "url": "https://docs.ollama.com/api/introduction",
            "scope": "Ollama API documentation, for Ollama Cloud",
            "verified_at": "2026-09-12"
          },
          "upstream_disclosure": {
            "status": "documented_yes",
            "note": "The pricing FAQ names the class of third parties that run the models: \"Ollama collaborates with NVIDIA Cloud Providers (NCPs) to host open models. When Ollama partners with providers, we require no logging, no training, and zero data retention policies in place.\" The individual providers are not named.",
            "url": "https://ollama.com/pricing",
            "scope": "Ollama pricing FAQ, for Ollama Cloud",
            "verified_at": "2026-09-12"
          },
          "credential_handling": {
            "status": "documented_no",
            "note": "The service offers no customer-supplied-key path: \"For direct access to ollama.com's API, first create an API key. Then, set the OLLAMA_API_KEY environment variable to your API key.\"",
            "url": "https://docs.ollama.com/cloud",
            "scope": "Ollama cloud documentation, for Ollama Cloud",
            "verified_at": "2026-09-12"
          },
          "cache_isolation": {
            "status": "undocumented",
            "note": "The API usage page exposes a cache-hit field but no page states whether a cache is scoped to the account that created it.",
            "url": "https://docs.ollama.com/api/usage",
            "scope": "Ollama API usage page, for Ollama Cloud",
            "verified_at": "2026-09-12"
          },
          "vulnerability_disclosure": {
            "status": "documented_yes",
            "note": "The operator's security policy, published in its own repository, states: \"If you discover a security vulnerability, please do not open a public issue. Instead, please report it by emailing hello@ollama.com.\" No security.txt is served on ollama.com.",
            "url": "https://github.com/ollama/ollama/security",
            "scope": "Ollama security policy in the operator's repository, for Ollama Cloud",
            "verified_at": "2026-09-12"
          },
          "independent_audit": {
            "status": "undocumented",
            "note": "No SOC 2, ISO 27001, or equivalent attestation is named on the pricing page or anywhere in the documentation, and no trust page exists.",
            "url": "https://ollama.com/pricing",
            "scope": "Ollama pricing page, for Ollama Cloud",
            "verified_at": "2026-09-12"
          }
        },
        "findings": []
      }
    },
    {
      "id": "openai-api",
      "name": "OpenAI API",
      "operator": "OpenAI",
      "service_type": "direct_model_api",
      "url": "https://developers.openai.com/api/docs/",
      "description": "OpenAI's managed API platform for its text, reasoning, image, audio, realtime, embedding, moderation, and related model families.",
      "service_boundary": "Represents the developer API platform, not ChatGPT, Codex, individual model releases, or Azure-hosted OpenAI models.",
      "delivery_modes": [
        "on_demand",
        "batch"
      ],
      "model_sources": [
        "first_party"
      ],
      "api_styles": [
        "openai_native"
      ],
      "regional_controls": "Eligible API organizations can configure project-level regional storage and, for supported regions, regional processing; eligibility and endpoint coverage vary.",
      "retention_controls": "API data is not used for model training unless the customer opts in. Default abuse-monitoring and application-state retention vary by endpoint; approved organizations can use Modified Abuse Monitoring or Zero Data Retention with documented feature limitations.",
      "routing": "Customers select models within OpenAI's catalog; the service is not a cross-provider routing layer.",
      "customization": "Fine-tuning and stored application resources are available for eligible models and endpoints, with separate retention behavior.",
      "strengths": [
        "One first-party platform spans multiple modalities, realtime interaction, tools, batch processing, and model customization.",
        "Project-level administration, data controls, and regional endpoints are documented in the API platform."
      ],
      "tradeoffs": [
        "Regional processing, Zero Data Retention, and some enterprise controls require eligibility and do not cover every endpoint or feature.",
        "The service exposes OpenAI models rather than a vendor-neutral catalog."
      ],
      "score_profile": "inference_service",
      "score": {
        "operational_maturity": 9.2,
        "data_governance": 9.0,
        "regional_deployment_control": 7.8,
        "serving_flexibility": 7.6,
        "api_interoperability": 9.2,
        "traffic_resilience": 6.5,
        "customization_lifecycle": 8.2,
        "documentation_transparency": 9.2,
        "overall": 8.4
      },
      "terms": {
        "kind": "web_terms",
        "label": "OpenAI Services Agreement",
        "url": "https://openai.com/policies/services-agreement/",
        "verified_at": "2026-08-28"
      },
      "evidence": [
        {
          "kind": "web",
          "label": "API platform documentation",
          "url": "https://developers.openai.com/api/docs/",
          "verified_at": "2026-08-28"
        },
        {
          "kind": "web",
          "label": "Data controls and regional processing",
          "url": "https://developers.openai.com/api/docs/guides/your-data",
          "verified_at": "2026-08-28"
        },
        {
          "kind": "web",
          "label": "Batch API reference",
          "url": "https://platform.openai.com/docs/api-reference/batch",
          "verified_at": "2026-08-28"
        }
      ],
      "verified_at": "2026-09-12",
      "trust": {
        "verified_at": "2026-09-12",
        "properties": {
          "response_integrity": {
            "status": "undocumented",
            "note": "No signature, attestation, or equivalent mechanism for verifying that a response arrived unaltered from the model is documented; the content-provenance guide covers C2PA credentials on generated images, not API responses.",
            "url": "https://developers.openai.com/api/docs/guides/content-provenance",
            "scope": "OpenAI content-provenance guide, read for the OpenAI API",
            "verified_at": "2026-09-12"
          },
          "upstream_disclosure": {
            "status": "documented_yes",
            "note": "The enterprise-privacy page states the operator processes API content: \"Except for certain endpoints and features listed in our platform documentation, OpenAI may securely retain API inputs and outputs for up to 30 days to provide the services and to identify abuse.\" A subprocessor list is published on the platform, on a page automated readers cannot render.",
            "url": "https://openai.com/enterprise-privacy/",
            "scope": "OpenAI enterprise-privacy page, for the OpenAI API",
            "verified_at": "2026-09-12"
          },
          "credential_handling": {
            "status": "documented_no",
            "note": "The API offers no customer-supplied-key path: \"Create credentials. Use a standard API key for application requests, an Admin API key for Administration endpoints, or workload identity federation for short-lived access tokens.\"",
            "url": "https://developers.openai.com/api/docs/api-reference/authentication",
            "scope": "OpenAI API authentication reference, for the OpenAI API",
            "verified_at": "2026-09-12"
          },
          "cache_isolation": {
            "status": "documented_yes",
            "note": "The prompt-caching guide states: \"Caches are not shared across organizations and cannot be reused across regional processing boundaries.\"",
            "url": "https://developers.openai.com/api/docs/guides/prompt-caching",
            "scope": "OpenAI prompt-caching guide, for the OpenAI API",
            "verified_at": "2026-09-12"
          },
          "vulnerability_disclosure": {
            "status": "documented_yes",
            "note": "A coordinated vulnerability disclosure policy is published: \"We invite you to report vulnerabilities, bugs, safety and abuse issues, or security flaws you discover in our systems.\"",
            "url": "https://openai.com/policies/coordinated-vulnerability-disclosure-policy/",
            "scope": "OpenAI coordinated vulnerability disclosure policy, for the OpenAI API",
            "verified_at": "2026-09-12"
          },
          "independent_audit": {
            "status": "documented_yes",
            "note": "The enterprise-privacy page states: \"Our API Platform has been audited and certified for SOC 2 Type 2 compliance.\" The trust portal holding the report refuses automated fetches.",
            "url": "https://openai.com/enterprise-privacy/",
            "scope": "OpenAI enterprise-privacy page, for the OpenAI API",
            "verified_at": "2026-09-12"
          }
        },
        "findings": [
          {
            "claim": "We detect global cache sharing across users in seven API providers, including OpenAI, resulting in potential privacy leakage about users' prompts. The paper reports the OpenAI issue was patched after responsible disclosure before publication; its first version is dated 2025-02-11.",
            "published_at": "2025-07-13",
            "source": {
              "label": "Auditing Prompt Caching in Language Model APIs, arXiv 2502.07776v2",
              "url": "https://arxiv.org/abs/2502.07776v2",
              "kind": "third_party",
              "content_sha256": "2d15ac6cd0431b885187028fef6cdb2f15feb328ba891b4e04e933d76fa3f624",
              "fetched_at": "2026-09-12"
            },
            "operator_response": null,
            "resolved": {
              "url": "https://developers.openai.com/api/docs/guides/prompt-caching",
              "verified_at": "2026-09-12",
              "summary": "The current prompt-caching guide states that caches are not shared across organizations, and the paper reports the issue was patched after disclosure."
            }
          }
        ]
      }
    },
    {
      "id": "openrouter",
      "name": "OpenRouter",
      "operator": "OpenRouter",
      "service_type": "routing_aggregator",
      "url": "https://openrouter.ai/docs/quickstart",
      "description": "A unified API and billing layer that routes model requests across multiple upstream inference providers and model publishers.",
      "service_boundary": "Represents OpenRouter's API routing service, not the upstream providers, the underlying model releases, or OpenRouter's end-user chat interface.",
      "delivery_modes": [
        "on_demand"
      ],
      "model_sources": [
        "third_party_proprietary",
        "open_weight"
      ],
      "api_styles": [
        "openai_compatible"
      ],
      "regional_controls": "Enterprise customers can use documented EU in-region routing; provider and endpoint selection otherwise determines where upstream processing occurs.",
      "retention_controls": "OpenRouter documents opt-in prompt logging and per-request controls that restrict routing by upstream retention or data-collection policy; upstream provider behavior remains part of the effective boundary.",
      "routing": "Requests can use ordered providers, fallbacks, allowlists, denylists, privacy requirements, price ceilings, and latency or throughput preferences.",
      "customization": "The public service focuses on routing existing models and provider endpoints; private customer endpoints are documented separately as an enterprise beta and are not treated as a stable catalog capability here.",
      "strengths": [
        "A single compatible API can express fallback, cost, latency, throughput, and data-policy constraints across providers.",
        "Endpoint-level retention metadata makes privacy part of routing rather than a provider-wide assumption."
      ],
      "tradeoffs": [
        "Requests cross an additional service boundary before reaching an upstream inference provider.",
        "Effective terms, availability, and data handling depend on both OpenRouter and the selected upstream endpoint.",
        "Two 2026 measurement studies report cross-account prompt-cache reads at upstream providers for traffic on OpenRouter's shared credentials; the operator documents no cache scope for that path, and bring-your-own-key routes were isolated where tested."
      ],
      "score_profile": "inference_service",
      "score": {
        "operational_maturity": 8.3,
        "data_governance": 8.0,
        "regional_deployment_control": 6.8,
        "serving_flexibility": 5.5,
        "api_interoperability": 9.0,
        "traffic_resilience": 9.6,
        "customization_lifecycle": 4.5,
        "documentation_transparency": 9.0,
        "overall": 7.59
      },
      "terms": {
        "kind": "web_terms",
        "label": "OpenRouter Terms of Service",
        "url": "https://openrouter.ai/terms",
        "verified_at": "2026-08-28"
      },
      "evidence": [
        {
          "kind": "web",
          "label": "API quickstart",
          "url": "https://openrouter.ai/docs/quickstart",
          "verified_at": "2026-08-28"
        },
        {
          "kind": "web",
          "label": "Provider routing controls",
          "url": "https://openrouter.ai/docs/guides/routing/provider-selection",
          "verified_at": "2026-08-28"
        },
        {
          "kind": "web",
          "label": "Zero Data Retention routing",
          "url": "https://openrouter.ai/docs/guides/features/zdr",
          "verified_at": "2026-08-28"
        },
        {
          "kind": "web",
          "label": "Data collection policy",
          "url": "https://openrouter.ai/docs/guides/privacy/data-collection",
          "verified_at": "2026-08-28"
        }
      ],
      "verified_at": "2026-09-12",
      "trust": {
        "verified_at": "2026-09-12",
        "properties": {
          "response_integrity": {
            "status": "undocumented",
            "note": "No signature, attestation, or equivalent mechanism for verifying that a response arrived unaltered from the upstream model appears in the API reference, the provider-routing guide, or the security documentation.",
            "url": "https://openrouter.ai/docs/api_reference/overview",
            "scope": "OpenRouter API reference, for the OpenRouter API",
            "verified_at": "2026-09-12"
          },
          "upstream_disclosure": {
            "status": "documented_yes",
            "note": "The privacy policy states: \"When you submit Inputs through the Service, those Inputs are transmitted to the Model Provider you select, or that is selected through automatic routing, as applicable.\" Each model page lists the providers that can serve it.",
            "url": "https://openrouter.ai/privacy",
            "scope": "OpenRouter privacy policy, for the OpenRouter API",
            "verified_at": "2026-09-12"
          },
          "credential_handling": {
            "status": "documented_yes",
            "note": "The bring-your-own-key guide states: \"Your provider keys are securely encrypted and used for all requests routed through the specified provider.\"",
            "url": "https://openrouter.ai/docs/guides/overview/auth/byok",
            "scope": "OpenRouter bring-your-own-key guide, for the OpenRouter API",
            "verified_at": "2026-09-12"
          },
          "cache_isolation": {
            "status": "undocumented",
            "note": "The prompt-caching guide describes provider-level caching and its pricing but does not say whether a cache entry for traffic on OpenRouter's own upstream credentials is scoped to the OpenRouter account or shared across accounts. OpenRouter's separate response-caching feature is scoped per key and is a different mechanism.",
            "url": "https://openrouter.ai/docs/guides/best-practices/prompt-caching",
            "scope": "OpenRouter prompt-caching guide, for the OpenRouter API",
            "verified_at": "2026-09-12"
          },
          "vulnerability_disclosure": {
            "status": "documented_yes",
            "note": "A security.txt file is published with a contact address (\"Contact: mailto:security@openrouter.ai\").",
            "url": "https://openrouter.ai/.well-known/security.txt",
            "scope": "OpenRouter security.txt, for the OpenRouter API",
            "verified_at": "2026-09-12"
          },
          "independent_audit": {
            "status": "documented_yes",
            "note": "The public trust centre names \"SOC 2 Type 2\" under compliance for OpenRouter. The report itself is available only on request, so the attestation is recorded as an operator claim.",
            "url": "https://trust.openrouter.ai/",
            "scope": "OpenRouter trust centre, for the OpenRouter API",
            "verified_at": "2026-09-12"
          }
        },
        "findings": [
          {
            "claim": "OpenRouter's use of shared organizational credentials enables cross-account cache sharing that would not occur when accessing providers directly. Tested against three upstream providers with one model each; isolation held when the same providers were reached directly or through OpenRouter's bring-your-own-key mode.",
            "published_at": "2026-05-28",
            "source": {
              "label": "CacheProbe: Auditing Prompt Cache Isolation in Gateway APIs, arXiv 2605.30613v1",
              "url": "https://arxiv.org/abs/2605.30613v1",
              "kind": "third_party",
              "content_sha256": "648a12e40062f458c4b2031fac55f7bd5a18ae26930583d72696aae7ccec58bf",
              "fetched_at": "2026-09-12"
            },
            "operator_response": null,
            "resolved": null
          },
          {
            "claim": "Large language model (LLM) API relays authenticate customers separately but often forward requests through shared provider credentials. In an outcome-independent weekly OpenRouter frame, tests covered 80.5% of eligible token volume and found cross-account reads for 12 of 28 labels carrying 33.7% of volume.",
            "published_at": "2026-08-18",
            "source": {
              "label": "KeyPooling: Measuring Where LLM API Relay Paths Collapse Prompt Cache Isolation, arXiv 2608.17485v1",
              "url": "https://arxiv.org/abs/2608.17485v1",
              "kind": "third_party",
              "content_sha256": "4fac77605074e3252fadba03ec96285936cba524b5e17e23dfddf520b8b6efb4",
              "fetched_at": "2026-09-12"
            },
            "operator_response": null,
            "resolved": null
          }
        ]
      }
    },
    {
      "id": "oci-generative-ai",
      "name": "OCI Generative AI",
      "operator": "Oracle Cloud Infrastructure",
      "service_type": "cloud_model_platform",
      "url": "https://docs.oracle.com/en-us/iaas/Content/generative-ai/",
      "description": "Oracle Cloud Infrastructure's managed platform for first- and third-party foundation models, imported models, fine-tuning, and dedicated AI clusters.",
      "service_boundary": "Represents OCI Generative AI, not Oracle Database AI features, OCI Data Science model deployments, individual partner models, or those vendors' direct APIs.",
      "delivery_modes": [
        "on_demand",
        "dedicated_endpoint",
        "reserved_capacity"
      ],
      "model_sources": [
        "first_party",
        "third_party_proprietary",
        "open_weight",
        "customer_supplied"
      ],
      "api_styles": [
        "service_native",
        "openai_compatible"
      ],
      "regional_controls": "Models, on-demand access, imported-model support, and dedicated cluster shapes are region-specific OCI resources.",
      "retention_controls": "Oracle documents that stateless inference inputs and outputs are not retained by OCI Generative AI. Projects and agent-related state expose separate configurable retention for responses and conversations.",
      "routing": "Customers select models and OCI regions; the platform does not present automatic cross-provider routing as its primary contract.",
      "customization": "Fine-tuned and imported models can run on dedicated AI clusters with customer-tenancy controls.",
      "strengths": [
        "On-demand and dedicated serving coexist with imported-model and fine-tuning paths.",
        "Oracle publishes explicit stateless inference data-handling guidance."
      ],
      "tradeoffs": [
        "Model and capacity support varies by OCI region.",
        "Dedicated clusters require commitments and service-limit planning."
      ],
      "score_profile": "inference_service",
      "score": {
        "operational_maturity": 8.8,
        "data_governance": 9.2,
        "regional_deployment_control": 8.8,
        "serving_flexibility": 8.8,
        "api_interoperability": 8.3,
        "traffic_resilience": 6.5,
        "customization_lifecycle": 9.0,
        "documentation_transparency": 8.8,
        "overall": 8.6
      },
      "terms": {
        "kind": "web_terms",
        "label": "Oracle Cloud Services Contracts",
        "url": "https://www.oracle.com/contracts/cloud-services/",
        "verified_at": "2026-08-28"
      },
      "evidence": [
        {
          "kind": "web",
          "label": "OCI Generative AI overview",
          "url": "https://docs.oracle.com/en-us/iaas/Content/generative-ai/",
          "verified_at": "2026-08-28"
        },
        {
          "kind": "web",
          "label": "Data handling",
          "url": "https://docs.oracle.com/en-us/iaas/Content/generative-ai/data-handling.htm",
          "verified_at": "2026-08-28"
        },
        {
          "kind": "web",
          "label": "Dedicated AI clusters",
          "url": "https://docs.oracle.com/en-us/iaas/Content/generative-ai/ai-cluster.htm",
          "verified_at": "2026-08-28"
        }
      ],
      "verified_at": "2026-08-28",
      "trust": {
        "verified_at": "2026-09-12",
        "properties": {
          "response_integrity": {
            "status": "undocumented",
            "note": "No signature, attestation, or equivalent mechanism for verifying that a response arrived unaltered from the model appears in the API reference or the security documentation.",
            "url": "https://docs.oracle.com/en-us/iaas/Content/generative-ai/data-handling.htm",
            "scope": "OCI Generative AI data-handling page, for OCI Generative AI",
            "verified_at": "2026-09-12"
          },
          "upstream_disclosure": {
            "status": "documented_no",
            "note": "The data-handling FAQ states plainly: \"Does OCI Generative AI share prompts and responses, fine-tuning training data, or fine-tuned custom models with third-party model providers such as Cohere, Meta, xAI, or Google Vertex AI? No.\"",
            "url": "https://docs.oracle.com/en-us/iaas/Content/generative-ai/data-handling.htm",
            "scope": "OCI Generative AI data-handling page, for OCI Generative AI",
            "verified_at": "2026-09-12"
          },
          "credential_handling": {
            "status": "documented_no",
            "note": "The service offers no customer-supplied upstream-key path: \"OCI Generative AI API keys are secure credential tokens used to authenticate callers and authorize access to large language models hosted by the OCI Generative AI service.\"",
            "url": "https://docs.oracle.com/en-us/iaas/Content/generative-ai/api-keys.htm",
            "scope": "OCI Generative AI API-keys page, for OCI Generative AI",
            "verified_at": "2026-09-12"
          },
          "cache_isolation": {
            "status": "undocumented",
            "note": "No prompt or prefix caching feature or scope is documented for OCI Generative AI.",
            "url": "https://docs.oracle.com/en-us/iaas/Content/generative-ai/data-handling.htm",
            "scope": "OCI Generative AI data-handling page, for OCI Generative AI",
            "verified_at": "2026-09-12"
          },
          "vulnerability_disclosure": {
            "status": "documented_yes",
            "note": "Oracle's company-wide vulnerability reporting page states the route for customers: \"please use your designated support mechanism (e.g., My Oracle Support or SuiteSupport) to submit a service request for any security vulnerability you believe you have discovered in an Oracle product or Cloud or Cloud Services.\" and a public mailbox for non-customers.",
            "url": "https://www.oracle.com/corporate/security-practices/assurance/vulnerability/reporting/",
            "scope": "Oracle vulnerability disclosure page, for OCI Generative AI",
            "verified_at": "2026-09-12"
          },
          "independent_audit": {
            "status": "undocumented",
            "note": "A blog post reportedly named OCI Generative AI in a FedRAMP High / DISA IL5 authorisation announcement, but the page returned an internal server error on this review's own fetch and could not be re-verified; Oracle's SOC and ISO services-in-scope documents are behind a console sign-in. Recorded as undocumented pending a readable source.",
            "url": "https://blogs.oracle.com/cloud-infrastructure/oci-adds-new-authorized-services-us-government",
            "scope": "Oracle Cloud Infrastructure government-authorisation blog (unreadable on review), read for OCI Generative AI",
            "verified_at": "2026-09-12"
          }
        },
        "findings": []
      }
    },
    {
      "id": "perplexity-api",
      "name": "Perplexity API",
      "operator": "Perplexity AI",
      "service_type": "direct_model_api",
      "url": "https://docs.perplexity.ai/docs/getting-started/overview",
      "description": "Perplexity's developer API for search-grounded answers, research workflows, and supported model invocation.",
      "service_boundary": "Represents Perplexity's developer API, not the Perplexity answer engine, Comet, Perplexity Computer, or third-party access to similarly named models.",
      "delivery_modes": [
        "on_demand",
        "batch"
      ],
      "model_sources": [
        "first_party",
        "third_party_proprietary",
        "open_weight"
      ],
      "api_styles": [
        "service_native",
        "openai_compatible"
      ],
      "regional_controls": "The reviewed public API documentation does not establish customer-selected processing regions.",
      "retention_controls": "API-specific terms and product documentation govern request data; search and research features add external-source retrieval to the processing boundary.",
      "routing": "The service can combine model inference with Perplexity-operated search and research, but it is not represented here as a general-purpose provider router.",
      "customization": "The service exposes search, research, and model parameters rather than customer-imported model serving.",
      "strengths": [
        "Search-grounded APIs combine inference with web retrieval and citations.",
        "Compatibility endpoints support common integration patterns."
      ],
      "tradeoffs": [
        "Search-grounded requests have a broader data and source boundary than raw generation.",
        "Regional controls are not prominent in the public docs."
      ],
      "score_profile": "inference_service",
      "score": {
        "operational_maturity": 8.0,
        "data_governance": 6.8,
        "regional_deployment_control": 4.0,
        "serving_flexibility": 7.0,
        "api_interoperability": 8.3,
        "traffic_resilience": 6.5,
        "customization_lifecycle": 5.0,
        "documentation_transparency": 8.0,
        "overall": 6.71
      },
      "terms": {
        "kind": "web_terms",
        "label": "Perplexity API Terms of Service",
        "url": "https://www.perplexity.ai/hub/legal/perplexity-api-terms-of-service",
        "verified_at": "2026-08-28"
      },
      "evidence": [
        {
          "kind": "web",
          "label": "Perplexity API overview",
          "url": "https://docs.perplexity.ai/docs/getting-started/overview",
          "verified_at": "2026-09-28"
        }
      ],
      "verified_at": "2026-08-28",
      "trust": {
        "verified_at": "2026-09-12",
        "properties": {
          "response_integrity": {
            "status": "undocumented",
            "note": "No signature, attestation, or equivalent mechanism for verifying that a response arrived unaltered from the model appears in the API reference or the security documentation.",
            "url": "https://docs.perplexity.ai/docs/getting-started/overview",
            "scope": "Perplexity API overview, for the Perplexity API",
            "verified_at": "2026-09-12"
          },
          "upstream_disclosure": {
            "status": "documented_yes",
            "note": "The API FAQ states how the operator handles content: \"We do not retain any query data sent through the API and do not train on any of your data.\" No subprocessor is named on a page this review could read.",
            "url": "https://docs.perplexity.ai/docs/resources/faq",
            "scope": "Perplexity API FAQ, for the Perplexity API",
            "verified_at": "2026-09-12"
          },
          "credential_handling": {
            "status": "documented_no",
            "note": "The API offers no customer-supplied-key path: \"Generate a new key on the API Keys page in the API Console.\"",
            "url": "https://docs.perplexity.ai/docs/getting-started/quickstart",
            "scope": "Perplexity API quickstart, for the Perplexity API",
            "verified_at": "2026-09-12"
          },
          "cache_isolation": {
            "status": "undocumented",
            "note": "No prompt-caching feature or cache scope is documented in the API or Agent API guides.",
            "url": "https://docs.perplexity.ai/docs/agent-api/quickstart",
            "scope": "Perplexity Agent API quickstart, for the Perplexity API",
            "verified_at": "2026-09-12"
          },
          "vulnerability_disclosure": {
            "status": "documented_yes",
            "note": "A security.txt file is published with a contact address (\"Contact: mailto:security@perplexity.ai\").",
            "url": "https://www.perplexity.ai/.well-known/security.txt",
            "scope": "Perplexity security.txt, for the Perplexity API",
            "verified_at": "2026-09-12"
          },
          "independent_audit": {
            "status": "documented_yes",
            "note": "The API FAQ states: \"Perplexity maintains a SOC 2 Type II report, a 2025 HIPAA gap assessment, and a CAIQlite cloud security assessment.\" The trust portal refuses automated fetches.",
            "url": "https://docs.perplexity.ai/docs/resources/faq",
            "scope": "Perplexity API FAQ, for the Perplexity API",
            "verified_at": "2026-09-12"
          }
        },
        "findings": []
      }
    },
    {
      "id": "poolside-api",
      "name": "Poolside API",
      "operator": "Poolside",
      "service_type": "direct_model_api",
      "url": "https://docs.poolside.ai/api/overview",
      "description": "Poolside's hosted OpenAI-compatible API for its own Laguna coding models, exposing a chat-completions endpoint and a model listing with server-side thinking control.",
      "service_boundary": "Represents Poolside-hosted inference at inference.poolside.ai, reached with a key issued from Poolside Platform. It is not the Laguna weight releases, not self-managed Poolside inference that customers deploy on their own Kubernetes or on-premises hardware, not the Poolside Agent CLI or Poolside Assistant clients, and not Poolside models served by OpenRouter or other third parties.",
      "delivery_modes": [
        "on_demand"
      ],
      "model_sources": [
        "first_party"
      ],
      "api_styles": [
        "openai_compatible"
      ],
      "regional_controls": "The documentation exposes one global base URL and establishes no customer-selected processing region, regional endpoint, private networking, or dedicated placement. Customers who need to control placement are directed to a self-managed Poolside inference deployment on their own AWS EKS, OpenShift, upstream Kubernetes, or on-premises hardware, which is a customer-operated execution path rather than a mode of this service.",
      "retention_controls": "The Poolside Terms of Use permit using Content, defined to include prompts, code, and output, to provide and improve the Products and to train Poolside models unless the user opts out. The opt-out is described as a Training Opt-Out setting for access through the Site, with third-party platforms governed by their own controls, and it does not apply to Content submitted as feedback or flagged for safety review. A Data Processing Addendum and a privacy policy are published; no zero-retention mode, per-request retention control, or customer deletion path is documented for the hosted API.",
      "routing": "Callers name a published Poolside model id such as poolside/laguna-s-2.1. The service serves only Poolside's own models and documents no cross-provider routing, fallback, replica steering, or priority tier.",
      "customization": "No fine-tuning, adapter training, customer-supplied weights, or dedicated deployment is documented for the hosted API. Control is per request through the OpenAI-compatible parameters and a thinking toggle, and per model through published model ids; larger context windows are directed to paid access through OpenRouter rather than a tier of this service.",
      "strengths": [
        "A direct first-party path to Poolside's own coding models over ordinary OpenAI-compatible chat completions, usable from any OpenAI SDK with only a base URL and key change.",
        "Support is documented rather than implied: two published tiers with first-response time targets, a support portal with a defined scope that names inference availability and error rates, and dated model and inference release notes."
      ],
      "tradeoffs": [
        "Training on customer prompts, code, and output is the documented default, and the opt-out is an account setting rather than a per-request or per-key control.",
        "The surface is narrow: one global endpoint pair, on-demand only, no documented regions, fallback, batch, reserved capacity, or fine-tuning, with larger context windows pointed at a third-party router."
      ],
      "score_profile": "inference_service",
      "score": {
        "operational_maturity": 6.0,
        "data_governance": 5.0,
        "regional_deployment_control": 3.0,
        "serving_flexibility": 3.0,
        "api_interoperability": 7.5,
        "traffic_resilience": 2.5,
        "customization_lifecycle": 3.0,
        "documentation_transparency": 6.8,
        "overall": 4.63
      },
      "terms": {
        "kind": "web_terms",
        "label": "Poolside Terms of Use",
        "url": "https://poolside.ai/legal/eula",
        "verified_at": "2026-09-02"
      },
      "evidence": [
        {
          "kind": "web",
          "label": "Poolside API overview: access methods, endpoints, and authentication",
          "url": "https://docs.poolside.ai/api/overview",
          "verified_at": "2026-09-02"
        },
        {
          "kind": "web",
          "label": "Supported models and access-method differences",
          "url": "https://docs.poolside.ai/get-started/supported-models",
          "verified_at": "2026-09-02"
        },
        {
          "kind": "web",
          "label": "Standard Support response-time targets and support scope",
          "url": "https://docs.poolside.ai/support/standard-support",
          "verified_at": "2026-09-02"
        },
        {
          "kind": "web",
          "label": "Poolside legal index, including the Data Processing Addendum and privacy policy",
          "url": "https://docs.poolside.ai/legal",
          "verified_at": "2026-09-02"
        }
      ],
      "verified_at": "2026-09-02",
      "trust": {
        "verified_at": "2026-09-12",
        "properties": {
          "response_integrity": {
            "status": "undocumented",
            "note": "No signature, attestation, or equivalent mechanism for verifying that a response arrived unaltered from the model appears in the API reference or the security documentation.",
            "url": "https://docs.poolside.ai/api/overview",
            "scope": "Poolside API overview, for the Poolside API",
            "verified_at": "2026-09-12"
          },
          "upstream_disclosure": {
            "status": "documented_yes",
            "note": "The privacy policy states the operator processes the content: \"If you include Personal Information in inputs to the Services, we may collect this information.\" The subprocessor list it points to sits in a trust portal that refuses automated fetches.",
            "url": "https://poolside.ai/legal/privacy",
            "scope": "Poolside privacy policy, for the Poolside API",
            "verified_at": "2026-09-12"
          },
          "credential_handling": {
            "status": "documented_no",
            "note": "The API offers no customer-supplied-key path on its own platform: \"Sign in to Poolside Platform, open the API Keys tab, and click New key.\" The overview also documents reaching the models through OpenRouter, which is that service's boundary, not a bring-your-own-key path here.",
            "url": "https://docs.poolside.ai/api/overview",
            "scope": "Poolside API overview, for the Poolside API",
            "verified_at": "2026-09-12"
          },
          "cache_isolation": {
            "status": "undocumented",
            "note": "No prompt-caching feature is documented for the API.",
            "url": "https://docs.poolside.ai/get-started/supported-models",
            "scope": "Poolside supported-models page, for the Poolside API",
            "verified_at": "2026-09-12"
          },
          "vulnerability_disclosure": {
            "status": "documented_yes",
            "note": "A security.txt file is published with a contact address (\"Contact: mailto:security@poolside.ai\").",
            "url": "https://poolside.ai/.well-known/security.txt",
            "scope": "Poolside security.txt, for the Poolside API",
            "verified_at": "2026-09-12"
          },
          "independent_audit": {
            "status": "documented_yes",
            "note": "The data-processing addendum states: \"Data Importer maintains SOC II Type II certification.\" The trust portal holding the report refuses automated fetches.",
            "url": "https://poolside.ai/legal/dpa",
            "scope": "Poolside data-processing addendum, for the Poolside API",
            "verified_at": "2026-09-12"
          }
        },
        "findings": []
      }
    },
    {
      "id": "replicate",
      "name": "Replicate",
      "operator": "Replicate",
      "service_type": "managed_inference_host",
      "url": "https://replicate.com/docs",
      "description": "Replicate's managed API and deployment platform for running public, private, and customer-packaged machine-learning models.",
      "service_boundary": "Represents Replicate's hosted prediction and deployment service, not model authors, the open-source Cog packaging tool alone, or deployments run outside Replicate.",
      "delivery_modes": [
        "on_demand",
        "batch",
        "dedicated_endpoint"
      ],
      "model_sources": [
        "open_weight",
        "customer_supplied"
      ],
      "api_styles": [
        "service_native"
      ],
      "regional_controls": "Public models run on Replicate-managed infrastructure; deployment and enterprise location options require service-specific review rather than a universal region claim.",
      "retention_controls": "Prediction inputs, outputs, files, and logs have documented lifecycle behavior that varies by API object and deployment; sensitive workloads require those feature rules to be reviewed.",
      "routing": "Predictions target a named model version or deployment; Replicate manages hardware scheduling rather than routing across external providers.",
      "customization": "Customers can package models with Cog, push private models, and create deployments with chosen hardware and scaling settings.",
      "strengths": [
        "A large cross-modal model catalog shares a consistent prediction lifecycle.",
        "Custom model packaging and managed deployments are first-class paths."
      ],
      "tradeoffs": [
        "Individual public models differ in ownership, terms, interface, and maintenance.",
        "Prediction artifacts and asynchronous workflows require explicit retention review."
      ],
      "score_profile": "inference_service",
      "score": {
        "operational_maturity": 8.5,
        "data_governance": 7.2,
        "regional_deployment_control": 5.8,
        "serving_flexibility": 8.7,
        "api_interoperability": 7.5,
        "traffic_resilience": 6.5,
        "customization_lifecycle": 9.5,
        "documentation_transparency": 8.8,
        "overall": 7.71
      },
      "terms": {
        "kind": "web_terms",
        "label": "Replicate Terms of Service",
        "url": "https://replicate.com/terms",
        "verified_at": "2026-08-28"
      },
      "evidence": [
        {
          "kind": "web",
          "label": "Replicate documentation",
          "url": "https://replicate.com/docs",
          "verified_at": "2026-08-28"
        },
        {
          "kind": "web",
          "label": "Deployments",
          "url": "https://replicate.com/docs/topics/deployments",
          "verified_at": "2026-08-28"
        }
      ],
      "verified_at": "2026-09-12",
      "trust": {
        "verified_at": "2026-09-12",
        "properties": {
          "response_integrity": {
            "status": "documented_yes",
            "note": "Scoped to webhook delivery only. The webhook guide states: \"Replicate uses an HMAC with SHA-256 to sign its webhooks.\" so a client can verify a delivered prediction payload came from Replicate unaltered; the synchronous response path carries no signature.",
            "url": "https://replicate.com/docs/topics/webhooks/verify-webhook",
            "scope": "Replicate webhook verification guide, for Replicate",
            "verified_at": "2026-09-12"
          },
          "upstream_disclosure": {
            "status": "documented_yes",
            "note": "The subprocessor page \"identifies subprocessors authorized to subprocess customer or personal data on behalf of Replicate to provide our services\" and names them; the operator is the party that runs the models.",
            "url": "https://replicate.com/docs/topics/site-policy/subprocessors",
            "scope": "Replicate subprocessor list, for Replicate",
            "verified_at": "2026-09-12"
          },
          "credential_handling": {
            "status": "documented_no",
            "note": "The API offers no customer-supplied-key path: \"These tokens are secrets, and should be treated like passwords. They are 40-character strings that always start with r8_ and are required when making API requests.\"",
            "url": "https://replicate.com/docs/topics/security/api-tokens",
            "scope": "Replicate API-token security page, for Replicate",
            "verified_at": "2026-09-12"
          },
          "cache_isolation": {
            "status": "undocumented",
            "note": "No prompt or prefix caching feature is documented; the data-retention page describes prediction retention, not caching.",
            "url": "https://replicate.com/docs/topics/predictions/data-retention",
            "scope": "Replicate prediction data-retention page, for Replicate",
            "verified_at": "2026-09-12"
          },
          "vulnerability_disclosure": {
            "status": "undocumented",
            "note": "No security contact or disclosure policy appears in the site policy or documentation, and no security.txt is served.",
            "url": "https://replicate.com/docs/topics/site-policy",
            "scope": "Replicate site policy, for Replicate",
            "verified_at": "2026-09-12"
          },
          "independent_audit": {
            "status": "undocumented",
            "note": "No SOC 2, ISO 27001, or equivalent attestation is named in the site policy or documentation.",
            "url": "https://replicate.com/docs/topics/site-policy",
            "scope": "Replicate site policy, for Replicate",
            "verified_at": "2026-09-12"
          }
        },
        "findings": [
          {
            "claim": "Shared network vulnerability disclosure: \"A carefully constructed model container could eavesdrop on the traffic between director and the rest of Replicate.\" Reported by Wiz; the operator states it \"deployed a full mitigation within 24 hours of speaking with Wiz\" and found no evidence of exploitation.",
            "published_at": "2024-02-20",
            "source": {
              "label": "Replicate: Shared network vulnerability disclosure",
              "url": "https://replicate.com/blog/shared-network-vulnerability-disclosure",
              "kind": "third_party",
              "content_sha256": "47114384941c11a67a98864848d40cf18408ce314d71fa81d0c04105b0bff8b5",
              "fetched_at": "2026-09-12"
            },
            "operator_response": {
              "url": "https://replicate.com/blog/shared-network-vulnerability-disclosure",
              "verified_at": "2026-09-12",
              "summary": "The operator published the disclosure itself, crediting Wiz."
            },
            "resolved": {
              "url": "https://replicate.com/blog/shared-network-vulnerability-disclosure",
              "verified_at": "2026-09-12",
              "summary": "Privileged network capabilities were dropped from model containers on 2024-02-02 and all internal traffic from model pods has been encrypted since 2024-02-20, per the post."
            }
          }
        ]
      }
    },
    {
      "id": "requesty",
      "name": "Requesty",
      "operator": "Requesty Ltd",
      "service_type": "routing_aggregator",
      "url": "https://requesty.ai/",
      "description": "A routing API that forwards requests to several hundred hosted models through one compatible endpoint.",
      "service_boundary": "Represents Requesty's routing service, not the upstream providers it forwards to or the models they publish.",
      "delivery_modes": [
        "on_demand"
      ],
      "model_sources": [
        "third_party_proprietary",
        "open_weight"
      ],
      "api_styles": [
        "openai_compatible",
        "anthropic_compatible"
      ],
      "regional_controls": "A European endpoint is documented on every plan, so requests can be kept within an EU routing path.",
      "retention_controls": "The privacy policy states that customer data is not used to train models and describes this as absolute on paid plans; logs are encrypted and held for up to thirty days, and a zero-retention mode disables logging. Models whose providers permit training are labelled and offered without charge.",
      "routing": "Routing policies cover fallback and load balancing across providers, with spend controls and guardrails including personal-data detection.",
      "customization": "The service routes existing hosted models; no customer fine-tuning or private model hosting is documented.",
      "strengths": [
        "A European routing endpoint is offered on every plan rather than reserved for enterprise agreements.",
        "Models whose providers permit training on inputs are labelled as such and offered at no cost, making that tradeoff explicit."
      ],
      "tradeoffs": [
        "The terms of service render only in a browser, so the governing text could not be read from the published page.",
        "Documented model and provider counts differ between the vendor's own pages.",
        "Requests cross an additional service boundary before reaching an upstream provider."
      ],
      "score_profile": "inference_service",
      "score": {
        "operational_maturity": 6.8,
        "data_governance": 7.6,
        "regional_deployment_control": 7.4,
        "serving_flexibility": 4.5,
        "api_interoperability": 8.6,
        "traffic_resilience": 7.8,
        "customization_lifecycle": 3.5,
        "documentation_transparency": 6.0,
        "overall": 6.69
      },
      "terms": {
        "kind": "web_terms",
        "label": "Requesty Terms of Service",
        "url": "https://requesty.ai/terms",
        "verified_at": "2026-08-31"
      },
      "evidence": [
        {
          "kind": "web",
          "label": "Product and routing overview",
          "url": "https://requesty.ai/",
          "verified_at": "2026-08-31"
        },
        {
          "kind": "web",
          "label": "Privacy policy",
          "url": "https://requesty.ai/privacy",
          "verified_at": "2026-08-31"
        }
      ],
      "verified_at": "2026-08-31",
      "trust": {
        "verified_at": "2026-09-12",
        "properties": {
          "response_integrity": {
            "status": "undocumented",
            "note": "No signature, attestation, or equivalent mechanism for verifying that a response arrived unaltered from the upstream model appears on the security page, in the API documentation, or in the auto-caching guide.",
            "url": "https://requesty.ai/security",
            "scope": "Requesty security page, for the Requesty API",
            "verified_at": "2026-09-12"
          },
          "upstream_disclosure": {
            "status": "documented_yes",
            "note": "The sub-processor list, last updated 30 August 2026, states: \"Part A lists Infrastructure Sub-processors, which we engage for every customer. Part B lists Model Providers, each of which is engaged only where, and to the extent that, you route a request to a model it operates.\" Part B names the model providers, from OpenAI Inc. and Anthropic PBC through DeepInfra Inc. and Alibaba Cloud.",
            "url": "https://requesty.ai/privacy/subprocessors",
            "scope": "Requesty sub-processor list, for the Requesty API",
            "verified_at": "2026-09-12"
          },
          "credential_handling": {
            "status": "documented_yes",
            "note": "The security page states: \"Credentials and API keys are stored encrypted and never logged.\" It does not say whether that covers customer-supplied provider keys as distinct from Requesty's own keys, which it separately describes as hashed at rest and shown in full only once.",
            "url": "https://requesty.ai/security",
            "scope": "Requesty security page, read for bring-your-own-key provider credentials",
            "verified_at": "2026-09-12"
          },
          "cache_isolation": {
            "status": "undocumented",
            "note": "The auto-caching guide describes Requesty's own response cache and the security page says organisation-wide zero data retention disables it; nothing states whether prompt caches at upstream providers are scoped per customer or pooled behind Requesty's shared credentials.",
            "url": "https://docs.requesty.ai/features/auto-caching",
            "scope": "Requesty auto-caching guide, for the Requesty API",
            "verified_at": "2026-09-12"
          },
          "vulnerability_disclosure": {
            "status": "undocumented",
            "note": "No security contact or disclosure policy appears on the security page, and neither requesty.ai nor docs.requesty.ai serves a security.txt file.",
            "url": "https://requesty.ai/security",
            "scope": "Requesty security page, for the Requesty API",
            "verified_at": "2026-09-12"
          },
          "independent_audit": {
            "status": "documented_no",
            "note": "The security page states: \"Our SOC 2 Type II programme is in progress. Current certification and audit status is published at trust.requesty.ai, and we make no representation of certification beyond what is stated there.\" The trust centre renders only behind a script and could not be read.",
            "url": "https://requesty.ai/security",
            "scope": "Requesty security page, for the Requesty API",
            "verified_at": "2026-09-12"
          }
        },
        "findings": []
      }
    },
    {
      "id": "sakana-fugu",
      "name": "Sakana Fugu",
      "operator": "Sakana AI Co., Ltd.",
      "service_type": "direct_model_api",
      "url": "https://console.sakana.ai/get-started",
      "description": "A Japanese lab's API serving its own model identities, where the flagship is a multi-agent system that orchestrates an undisclosed pool of frontier models behind a single model name.",
      "service_boundary": "Represents the operator's public API platform at api.sakana.ai and the model identities it exposes, not the orchestrated third-party models inside the pool, the lab's separate consumer chat, translation, and analyst products, or its published research code.",
      "delivery_modes": [
        "on_demand"
      ],
      "model_sources": [
        "first_party",
        "third_party_proprietary"
      ],
      "api_styles": [
        "openai_compatible",
        "anthropic_compatible"
      ],
      "regional_controls": "No customer-selectable processing region is exposed. The service is not offered in the European Union or European Economic Area, which the product page attributes to pending GDPR compliance work, and the terms extend that exclusion and reserve the right to enforce it by technical means including IP address controls. The privacy policy states that personal data may be transferred outside the user's country of residence, naming Japan and the United States, and describes recipients only as categories of vendors without naming a sub-processor.",
      "retention_controls": "The terms state that the operator is not obligated to retain or store prompts, files, or other submitted data, placing the backup burden on the customer, and permit deletion with or without prior notice. Training use is the default rather than an exception: the operator reserves the right to use customer content to train, retrain, and fine-tune its own models. An opt-out is available through the service interface, but the terms state that the effects of prior training use may not be reversible retroactively and that content may still be used to provide the service, comply with law, and maintain security. No zero-retention tier, data-processing agreement, or audit attestation is published.",
      "routing": "Routing is the product rather than a caller-facing control. The flagship identity dispatches each request across an internal pool of frontier models and returns a single response; the operator states that the pool's membership is proprietary and not exposed by design. The base tier lets a customer exclude specific models from its pool through the console for data, privacy, or compliance reasons, while the top tier's pool is fixed because it depends on the full set. No fallback, regional steering, replica, or failover behavior is documented.",
      "customization": "No fine-tuning, adapter training, or customer-weight deployment is documented. Customization is limited to choosing among the published model identities, pinning a versioned alias of the top tier, and excluding models from the base tier's pool. A separate Japanese-focused model identity with built-in web search and code execution is offered under the same key.",
      "strengths": [
        "Three request contracts — OpenAI chat completions, OpenAI responses, and Anthropic messages — share one base URL and one console-issued key.",
        "Pool exclusion is an operational privacy control rather than a promise: a customer with a vendor restriction can remove that vendor from the base tier's pool themselves.",
        "Both governing documents are current and dated, and the top tier publishes pinned version aliases alongside the moving one."
      ],
      "tradeoffs": [
        "Training on customer content is the default posture, and the opt-out is explicitly not retroactive.",
        "The orchestrated pool is undisclosed by design, so a caller cannot establish which third party processed a given request or under whose terms.",
        "One synchronous on-demand path with no batch, reserved capacity, dedicated endpoint, regional endpoint, or documented failover, and no published service-level agreement, data-processing agreement, sub-processor list, or third-party audit."
      ],
      "score_profile": "inference_service",
      "score": {
        "operational_maturity": 4.6,
        "data_governance": 3.2,
        "regional_deployment_control": 2.6,
        "serving_flexibility": 3.0,
        "api_interoperability": 7.8,
        "traffic_resilience": 4.2,
        "customization_lifecycle": 4.4,
        "documentation_transparency": 5.4,
        "overall": 4.24
      },
      "terms": {
        "kind": "web_terms",
        "label": "Sakana AI API Platform Terms of Service, effective September 28, 2026",
        "url": "https://console.sakana.ai/terms-of-service",
        "verified_at": "2026-09-28"
      },
      "evidence": [
        {
          "kind": "web",
          "label": "API base URL, authentication, request contracts, and model identifiers",
          "url": "https://console.sakana.ai/get-started",
          "verified_at": "2026-09-28"
        },
        {
          "kind": "web",
          "label": "Launch announcement dated 2026-06-22 and the pool opt-out claim",
          "url": "https://sakana.ai/fugu-release/",
          "verified_at": "2026-09-28"
        },
        {
          "kind": "web",
          "label": "Product page stating the EU and EEA exclusion and the undisclosed pool",
          "url": "https://sakana.ai/fugu/",
          "verified_at": "2026-09-28"
        },
        {
          "kind": "web",
          "label": "Privacy policy last updated 2026-07-21, cross-border transfer and recipient categories",
          "url": "https://console.sakana.ai/privacy-policy",
          "verified_at": "2026-09-28"
        },
        {
          "kind": "web",
          "label": "Published model identities and pinned version aliases",
          "url": "https://console.sakana.ai/models",
          "verified_at": "2026-09-28"
        }
      ],
      "verified_at": "2026-09-28",
      "trust": {
        "verified_at": "2026-09-12",
        "properties": {
          "response_integrity": {
            "status": "undocumented",
            "note": "No signature, attestation, or equivalent mechanism for verifying that a response arrived unaltered from the model appears in the API reference or the security documentation.",
            "url": "https://console.sakana.ai/terms-of-service",
            "scope": "Sakana console terms of service, for Sakana Fugu",
            "verified_at": "2026-09-12"
          },
          "upstream_disclosure": {
            "status": "documented_yes",
            "note": "The privacy policy states the operator collects \"Service interaction data, such as prompts, uploaded content, outputs, feedback, feature usage, session data, timestamps, and request identifiers;\". No subprocessor is named.",
            "url": "https://console.sakana.ai/privacy-policy",
            "scope": "Sakana console privacy policy, for Sakana Fugu",
            "verified_at": "2026-09-12"
          },
          "credential_handling": {
            "status": "documented_no",
            "note": "The API offers no customer-supplied-key path: \"Both are accessible with the same API key issued from the console, via OpenAI-compatible endpoints.\"",
            "url": "https://console.sakana.ai/get-started",
            "scope": "Sakana console getting-started page, for Sakana Fugu",
            "verified_at": "2026-09-12"
          },
          "cache_isolation": {
            "status": "undocumented",
            "note": "The pricing page bills cached tokens for every model tier, and no page states whether a cache is scoped to the account that created it.",
            "url": "https://console.sakana.ai/pricing",
            "scope": "Sakana console pricing page, for Sakana Fugu",
            "verified_at": "2026-09-12"
          },
          "vulnerability_disclosure": {
            "status": "documented_yes",
            "note": "A security.txt file is published with a contact address (\"Contact: mailto:infosec-central@sakana.ai\").",
            "url": "https://sakana.ai/.well-known/security.txt",
            "scope": "Sakana security.txt, for Sakana Fugu",
            "verified_at": "2026-09-12"
          },
          "independent_audit": {
            "status": "undocumented",
            "note": "No SOC 2, ISO 27001, or equivalent attestation is named in the terms, the privacy policy, or the console documentation, and no trust or security page exists on either host.",
            "url": "https://console.sakana.ai/terms-of-service",
            "scope": "Sakana console terms of service, for Sakana Fugu",
            "verified_at": "2026-09-12"
          }
        },
        "findings": []
      }
    },
    {
      "id": "sambanova-cloud",
      "name": "SambaNova Cloud",
      "operator": "SambaNova Systems",
      "service_type": "managed_inference_host",
      "url": "https://docs.sambanova.ai/cloud/docs/get-started/overview",
      "description": "SambaNova's hosted inference API for selected open models on SambaNova dataflow infrastructure.",
      "service_boundary": "Represents SambaNova Cloud's developer API, not SambaNova on-premises systems, model publishers, or third-party gateways exposing SambaNova endpoints.",
      "delivery_modes": [
        "on_demand",
        "reserved_capacity"
      ],
      "model_sources": [
        "open_weight"
      ],
      "api_styles": [
        "openai_compatible"
      ],
      "regional_controls": "The reviewed public cloud documentation does not establish customer-selected inference regions; private and on-premises offerings are separate boundaries.",
      "retention_controls": "Request handling follows SambaNova's cloud terms and account arrangements; the reviewed public docs do not support a universal configurable retention claim.",
      "routing": "Customers select models hosted by SambaNova rather than unrelated upstream providers.",
      "customization": "Reserved and private capacity arrangements are enterprise paths; arbitrary public customer-weight upload is not claimed here.",
      "strengths": [
        "OpenAI-compatible access simplifies adoption of its hosted model catalog.",
        "SambaNova-operated infrastructure provides a distinct accelerator path."
      ],
      "tradeoffs": [
        "The hosted catalog and public regional controls are limited compared with hyperscale clouds.",
        "Private deployment capabilities belong to separate commercial arrangements."
      ],
      "score_profile": "inference_service",
      "score": {
        "operational_maturity": 7.5,
        "data_governance": 5.8,
        "regional_deployment_control": 4.0,
        "serving_flexibility": 7.0,
        "api_interoperability": 7.8,
        "traffic_resilience": 5.0,
        "customization_lifecycle": 5.5,
        "documentation_transparency": 7.0,
        "overall": 6.21
      },
      "terms": {
        "kind": "web_terms",
        "label": "SambaNova Terms and Conditions",
        "url": "https://sambanova.ai/terms-and-conditions",
        "verified_at": "2026-08-28"
      },
      "evidence": [
        {
          "kind": "web",
          "label": "SambaNova Cloud overview",
          "url": "https://docs.sambanova.ai/cloud/docs/get-started/overview",
          "verified_at": "2026-08-28"
        }
      ],
      "verified_at": "2026-08-28",
      "trust": {
        "verified_at": "2026-09-12",
        "properties": {
          "response_integrity": {
            "status": "undocumented",
            "note": "No signature, attestation, or equivalent mechanism for verifying that a response arrived unaltered from the model appears in the documentation or on the public trust centre.",
            "url": "https://trust.sambanova.ai/",
            "scope": "SambaNova trust centre, read for SambaNova Cloud",
            "verified_at": "2026-09-12"
          },
          "upstream_disclosure": {
            "status": "undocumented",
            "note": "A company blog post states \"SambaCloud never sees or collects any of your data or user prompts ensuring full data privacy.\", which is a marketing claim rather than a description of who processes API content; the privacy policy does not address API inputs, and no data-processing addendum or subprocessor list describing the inference path was readable. The public trust centre carries a subprocessor list behind a request-access control.",
            "url": "https://sambanova.ai/blog/unlock-enterprise-grade-security-with-lattice-ai-and-sambanova",
            "scope": "SambaNova security blog post, read for SambaNova Cloud",
            "verified_at": "2026-09-12"
          },
          "credential_handling": {
            "status": "documented_no",
            "note": "The API offers no customer-supplied-key path: \"To generate an API key, go to the API section of the SambaCloud portal.\" and every documented request uses that key.",
            "url": "https://docs.sambanova.ai/docs/en/get-started/api-keys-urls",
            "scope": "SambaNova Cloud API-keys page, for SambaNova Cloud",
            "verified_at": "2026-09-12"
          },
          "cache_isolation": {
            "status": "undocumented",
            "note": "The prompt-caching announcement describes the feature and its pricing but never states whether a cache is scoped to the account that created it.",
            "url": "https://sambanova.ai/blog/prompt-caching-on-sambacloud-faster-cheaper-inference",
            "scope": "SambaNova prompt-caching blog post, for SambaNova Cloud",
            "verified_at": "2026-09-12"
          },
          "vulnerability_disclosure": {
            "status": "documented_yes",
            "note": "The public trust centre publishes a security contact, security@sambanovasystems.com.",
            "url": "https://trust.sambanova.ai/",
            "scope": "SambaNova trust centre, for SambaNova Cloud",
            "verified_at": "2026-09-12"
          },
          "independent_audit": {
            "status": "documented_yes",
            "note": "The operator's security blog post names the service: \"SambaCloud is also SOC 2 Type 2 compliant and certified.\" The public trust centre states the company holds SOC 2 Type 2 and ISO 27001 certifications, with reports behind a request-access control.",
            "url": "https://sambanova.ai/blog/unlock-enterprise-grade-security-with-lattice-ai-and-sambanova",
            "scope": "SambaNova security blog post, for SambaNova Cloud",
            "verified_at": "2026-09-12"
          }
        },
        "findings": []
      }
    },
    {
      "id": "siliconflow-international",
      "name": "SiliconFlow (international)",
      "operator": "SiliconFlow Technology Pte. Ltd.",
      "service_type": "managed_inference_host",
      "url": "https://docs.siliconflow.com/en/userguide/introduction",
      "description": "Singapore-operated platform serving open-weight and third-party models, explicitly unavailable to users located in mainland China.",
      "service_boundary": "Represents the international platform operated at siliconflow.com by a Singapore entity, not the separately operated mainland platform, and not the model publishers whose weights it serves.",
      "delivery_modes": [
        "on_demand",
        "reserved_capacity",
        "dedicated_endpoint"
      ],
      "model_sources": [
        "open_weight",
        "third_party_proprietary",
        "customer_supplied"
      ],
      "api_styles": [
        "openai_compatible",
        "anthropic_compatible",
        "service_native"
      ],
      "regional_controls": "The terms state the service is unavailable to users located in mainland China and direct them to the separate mainland platform. No region parameter is documented, and personal data may be transferred within or outside Singapore.",
      "retention_controls": "The terms state the operator will not access interaction data and is under no obligation to store it, and will not use or disclose it without authorisation. Customers are prohibited from using service content for machine-learning training. Interaction data may be deleted at the operator's discretion when an account terminates.",
      "routing": "Customers select a model identifier per request. Reserved instances provide guaranteed throughput; documented routing or fallback parameters are absent from the API reference.",
      "customization": "Custom-model onboarding and private deployment are offered commercially. Fine-tuning appears as a product but is absent from this platform's documentation index.",
      "strengths": [
        "Terms state the operator will not access interaction data and prohibit customers from using service content for model training.",
        "One base path serves two major compatible conventions alongside native reranking, audio, and video endpoints.",
        "Reserved and dedicated capacity are available alongside serverless access."
      ],
      "tradeoffs": [
        "The governing terms are materially older than the mainland platform's, and the documentation omits batch and fine-tuning pages that the mainland site publishes.",
        "Interaction data may be deleted at the operator's discretion on account termination, and personal data may move outside Singapore.",
        "Users located in mainland China are excluded by the terms, so this platform is not a global superset."
      ],
      "score_profile": "inference_service",
      "score": {
        "operational_maturity": 6.4,
        "data_governance": 8.0,
        "regional_deployment_control": 5.0,
        "serving_flexibility": 6.6,
        "api_interoperability": 8.4,
        "traffic_resilience": 6.8,
        "customization_lifecycle": 5.4,
        "documentation_transparency": 6.0,
        "overall": 6.68
      },
      "terms": {
        "kind": "web_terms",
        "label": "SiliconFlow Terms of Use",
        "url": "https://docs.siliconflow.com/en/legals/terms-of-service",
        "verified_at": "2026-09-12"
      },
      "evidence": [
        {
          "kind": "web",
          "label": "Platform documentation",
          "url": "https://docs.siliconflow.com/en/userguide/introduction",
          "verified_at": "2026-08-31"
        },
        {
          "kind": "web",
          "label": "Privacy policy",
          "url": "https://docs.siliconflow.com/en/legals/privacy-policy",
          "verified_at": "2026-08-31"
        }
      ],
      "verified_at": "2026-08-31",
      "trust": {
        "verified_at": "2026-09-12",
        "properties": {
          "response_integrity": {
            "status": "undocumented",
            "note": "No signature, attestation, or equivalent mechanism for verifying that a response arrived unaltered from the model appears in the API reference or the security documentation.",
            "url": "https://docs.siliconflow.com/en/userguide/introduction",
            "scope": "SiliconFlow user guide, for SiliconFlow (international)",
            "verified_at": "2026-09-12"
          },
          "upstream_disclosure": {
            "status": "documented_yes",
            "note": "The privacy policy states the operator processes interaction data: \"In case the Interaction Data contains Personal Data, as a neutral technology service provider, we will only process your Interaction Data strictly in accordance with your instructions.\" No subprocessor is named.",
            "url": "https://docs.siliconflow.com/en/legals/privacy-policy",
            "scope": "SiliconFlow privacy policy, for SiliconFlow (international)",
            "verified_at": "2026-09-12"
          },
          "credential_handling": {
            "status": "documented_no",
            "note": "The API offers no customer-supplied-key path: \"Go to the API Keys page, click “Create API Key,” and generate your API key.\" and every documented request uses that key.",
            "url": "https://docs.siliconflow.com/en/userguide/quickstart",
            "scope": "SiliconFlow quickstart, for SiliconFlow (international)",
            "verified_at": "2026-09-12"
          },
          "cache_isolation": {
            "status": "undocumented",
            "note": "The prompt-caching announcement describes the feature and its pricing but never states whether a cache is scoped to the account that created it.",
            "url": "https://www.siliconflow.com/blog/siliconflow-prompt-caching-api-costs",
            "scope": "SiliconFlow prompt-caching blog post, for SiliconFlow (international)",
            "verified_at": "2026-09-12"
          },
          "vulnerability_disclosure": {
            "status": "undocumented",
            "note": "No security contact or disclosure policy appears in the terms of service, the privacy policy, or the documentation, and no security.txt is served.",
            "url": "https://docs.siliconflow.com/en/legals/terms-of-service",
            "scope": "SiliconFlow terms of service, for SiliconFlow (international)",
            "verified_at": "2026-09-12"
          },
          "independent_audit": {
            "status": "undocumented",
            "note": "No SOC 2, ISO 27001, or equivalent attestation is named in the privacy policy, the terms, or the documentation.",
            "url": "https://docs.siliconflow.com/en/legals/privacy-policy",
            "scope": "SiliconFlow privacy policy, for SiliconFlow (international)",
            "verified_at": "2026-09-12"
          }
        },
        "findings": []
      }
    },
    {
      "id": "stability-ai-developer-platform",
      "name": "Stability AI Developer Platform",
      "operator": "Stability AI",
      "service_type": "direct_model_api",
      "url": "https://platform.stability.ai/docs",
      "description": "Stability AI's first-party managed API for generating, editing, controlling, and upscaling images with Stable Image and related creative models.",
      "service_boundary": "Represents the managed Stability AI API, not Stable Assistant, DreamStudio, downloadable model weights, model licenses, or separately contracted on-premises and self-hosted enterprise deployments.",
      "delivery_modes": [
        "on_demand"
      ],
      "model_sources": [
        "first_party"
      ],
      "api_styles": [
        "service_native"
      ],
      "regional_controls": "The reviewed public API documentation does not establish customer-selected processing regions; on-premises and self-hosted enterprise options are separate deployment boundaries.",
      "retention_controls": "Inputs, outputs, account data, moderation, and service telemetry are governed by Stability AI's current terms and privacy policy; the reviewed API docs do not support a universal customer-configurable zero-retention claim.",
      "routing": "Customers call named Stability endpoints and models; the service is not a cross-provider router.",
      "customization": "API parameters cover generation, image-to-image, masks, structure and style control, background and object edits, relighting, and several upscale modes. Enterprise self-hosting is documented separately from the managed API.",
      "strengths": [
        "A focused first-party API exposes a deep set of image generation, control, editing, and upscale operations.",
        "Synchronous and asynchronous REST workflows cover both interactive transforms and heavier creative operations."
      ],
      "tradeoffs": [
        "The API is specialized for creative media rather than a general text or agent inference catalog.",
        "Public regional and retention controls are less explicit than the feature-level image documentation."
      ],
      "score_profile": "inference_service",
      "score": {
        "operational_maturity": 7.8,
        "data_governance": 5.8,
        "regional_deployment_control": 4.0,
        "serving_flexibility": 5.2,
        "api_interoperability": 7.0,
        "traffic_resilience": 4.5,
        "customization_lifecycle": 7.2,
        "documentation_transparency": 8.0,
        "overall": 6.1
      },
      "terms": {
        "kind": "web_terms",
        "label": "Stability AI Terms of Service",
        "url": "https://stability.ai/terms-of-service",
        "verified_at": "2026-08-28"
      },
      "evidence": [
        {
          "kind": "web",
          "label": "Developer Platform documentation",
          "url": "https://platform.stability.ai/docs",
          "verified_at": "2026-08-28"
        },
        {
          "kind": "web",
          "label": "Stability API reference",
          "url": "https://platform.stability.ai/docs/api-reference",
          "verified_at": "2026-08-28"
        },
        {
          "kind": "web",
          "label": "Stable Image service overview",
          "url": "https://platform.stability.ai/docs/getting-started/stable-image",
          "verified_at": "2026-08-28"
        }
      ],
      "verified_at": "2026-08-28",
      "trust": {
        "verified_at": "2026-09-12",
        "properties": {
          "response_integrity": {
            "status": "undocumented",
            "note": "No signature, attestation, or equivalent mechanism for verifying that a response arrived unaltered from the model appears in the API reference or the security documentation.",
            "url": "https://platform.stability.ai/docs/api-reference",
            "scope": "Stability AI API reference, for the Stability AI Developer Platform",
            "verified_at": "2026-09-12"
          },
          "upstream_disclosure": {
            "status": "documented_yes",
            "note": "The public trust centre names the operator's hosting subprocessor: \"Amazon Web Services (AWS) is housing a lot of our production environments as well as our HPC cluster which is used to train models and do research.\" and carries a subprocessor list.",
            "url": "https://trust.stability.ai/",
            "scope": "Stability AI trust centre, for the Stability AI Developer Platform",
            "verified_at": "2026-09-12"
          },
          "credential_handling": {
            "status": "documented_no",
            "note": "The API offers no customer-supplied-key path: \"All APIs documented on this site use the same authentication mechanism: passing the API key in via the Authorization header.\"",
            "url": "https://platform.stability.ai/docs",
            "scope": "Stability AI platform documentation, for the Stability AI Developer Platform",
            "verified_at": "2026-09-12"
          },
          "cache_isolation": {
            "status": "undocumented",
            "note": "No prompt-caching feature is documented in the API reference.",
            "url": "https://platform.stability.ai/docs/api-reference",
            "scope": "Stability AI API reference, for the Stability AI Developer Platform",
            "verified_at": "2026-09-12"
          },
          "vulnerability_disclosure": {
            "status": "documented_yes",
            "note": "The public trust centre publishes a vulnerability disclosure programme: \"For information on testing for or submitting to our VDP, please visit the following page.\"",
            "url": "https://trust.stability.ai/",
            "scope": "Stability AI trust centre, for the Stability AI Developer Platform",
            "verified_at": "2026-09-12"
          },
          "independent_audit": {
            "status": "documented_yes",
            "note": "The public trust centre lists a \"Stability AI Inc. SOC 2 Type 2 Report\" for the company, behind a request-access control; it does not name the Developer Platform, so the attestation is recorded as a company-level operator claim.",
            "url": "https://trust.stability.ai/",
            "scope": "Stability AI trust centre, for the Stability AI Developer Platform",
            "verified_at": "2026-09-12"
          }
        },
        "findings": []
      }
    },
    {
      "id": "stepfun-open-platform-global",
      "name": "StepFun Open Platform (international)",
      "operator": "StepFun Technology (HK) Limited",
      "service_type": "direct_model_api",
      "url": "https://platform.stepfun.ai/docs/en/quickstart/overview",
      "description": "StepFun's Hong Kong-incorporated platform for the same first-party model APIs, served from United States infrastructure.",
      "service_boundary": "Represents the international platform operated by a Hong Kong entity, not the separately operated mainland platform whose catalogue and documentation are broader.",
      "delivery_modes": [
        "on_demand"
      ],
      "model_sources": [
        "first_party"
      ],
      "api_styles": [
        "openai_compatible",
        "anthropic_compatible",
        "service_native"
      ],
      "regional_controls": "No customer-selectable region. The privacy policy states servers are located in the United States, with onward transfers to affiliates and processors. A data-processing agreement with standard contractual clauses is offered.",
      "retention_controls": "No retention period for prompts or outputs is documented. The terms take a perpetual, irrevocable, sublicensable licence over outputs, prompts, and associated call logs for any purpose including commercialisation, and separately state that this usage data, including personal data within prompts and outputs, may be used to train and improve the operator's models. The only stated remedy is not to participate in the relevant programme.",
      "routing": "Callers name a model. No routing, fallback, or steering controls are documented.",
      "customization": "No fine-tuning, adapter training, or distillation is documented.",
      "strengths": [
        "Numeric concurrency, request, and token limits are published across spend tiers.",
        "A data-processing agreement with standard contractual clauses is offered, which the mainland platform does not publish.",
        "Two compatible conventions and a newer response interface sit on one host alongside a native realtime socket."
      ],
      "tradeoffs": [
        "The terms take a perpetual and irrevocable licence over prompts, outputs, and call logs for any purpose, and permit training on them with no opt-out short of leaving the programme.",
        "No service-level agreement, no status page, and no changelog.",
        "The documentation set is materially smaller than the mainland platform's and omits several published capabilities."
      ],
      "score_profile": "inference_service",
      "score": {
        "operational_maturity": 5.6,
        "data_governance": 2.6,
        "regional_deployment_control": 4.6,
        "serving_flexibility": 5.4,
        "api_interoperability": 8.2,
        "traffic_resilience": 7.4,
        "customization_lifecycle": 3.4,
        "documentation_transparency": 5.8,
        "overall": 5.2
      },
      "terms": {
        "kind": "web_terms",
        "label": "StepFun Terms of Services",
        "url": "https://platform.stepfun.ai/docs/en/agreement/userservice",
        "verified_at": "2026-09-11"
      },
      "evidence": [
        {
          "kind": "web",
          "label": "Platform documentation",
          "url": "https://platform.stepfun.ai/docs/en/quickstart/overview",
          "verified_at": "2026-09-11"
        },
        {
          "kind": "web",
          "label": "Data processing agreement",
          "url": "https://platform.stepfun.ai/docs/en/agreement/dataprocess",
          "verified_at": "2026-08-31"
        },
        {
          "kind": "web",
          "label": "Privacy policy",
          "url": "https://platform.stepfun.ai/docs/en/agreement/userprivacy",
          "verified_at": "2026-08-31"
        }
      ],
      "verified_at": "2026-08-31",
      "trust": {
        "verified_at": "2026-09-12",
        "properties": {
          "response_integrity": {
            "status": "undocumented",
            "note": "No signature, attestation, or equivalent mechanism for verifying that a response arrived unaltered from the model appears in the API reference or the security documentation.",
            "url": "https://platform.stepfun.ai/docs/en/quickstart/overview",
            "scope": "StepFun platform quickstart, for StepFun Open Platform (international)",
            "verified_at": "2026-09-12"
          },
          "upstream_disclosure": {
            "status": "documented_yes",
            "note": "The platform privacy policy states the operator receives API content: \"When a commercial customer participates in our StepFun Startup Program or other early access program-based project and accesses our internal models through an API Key, it may share API-related data with us, including Prompts, Outputs, API call logs, and other information submitted through or generated by the API.\" No subprocessor is named.",
            "url": "https://platform.stepfun.ai/docs/en/agreement/userprivacy",
            "scope": "StepFun platform privacy policy, for StepFun Open Platform (international)",
            "verified_at": "2026-09-12"
          },
          "credential_handling": {
            "status": "documented_no",
            "note": "The API offers no customer-supplied-key path: \"Go to the Account Management submenu on the console and open Interface Keys to create a key.\"",
            "url": "https://platform.stepfun.ai/docs/en/quickstart/overview",
            "scope": "StepFun platform quickstart, for StepFun Open Platform (international)",
            "verified_at": "2026-09-12"
          },
          "cache_isolation": {
            "status": "undocumented",
            "note": "The prompt-cache guide documents the feature and its billing but never states whether a cache is scoped to the account that created it.",
            "url": "https://platform.stepfun.ai/docs/en/guides/developer/prompt-cache",
            "scope": "StepFun prompt-cache guide, for StepFun Open Platform (international)",
            "verified_at": "2026-09-12"
          },
          "vulnerability_disclosure": {
            "status": "undocumented",
            "note": "The terms offer only a general contact (\"Users with questions, complaints or claims with respect to the Services can be made by contacting us at platform@stepfun.com.\"); no security contact or disclosure policy is published and no security.txt is served.",
            "url": "https://platform.stepfun.ai/docs/en/agreement/userservice",
            "scope": "StepFun platform terms of service, for StepFun Open Platform (international)",
            "verified_at": "2026-09-12"
          },
          "independent_audit": {
            "status": "undocumented",
            "note": "No SOC 2, ISO 27001, or equivalent attestation is named in the platform documentation, the terms, or the privacy policy.",
            "url": "https://platform.stepfun.ai/docs/en/quickstart/overview",
            "scope": "StepFun platform quickstart, for StepFun Open Platform (international)",
            "verified_at": "2026-09-12"
          }
        },
        "findings": []
      }
    },
    {
      "id": "tencent-cloud-tokenhub",
      "name": "Tencent Cloud TokenHub",
      "operator": "Tencent Cloud",
      "service_type": "cloud_model_platform",
      "url": "https://intl.cloud.tencent.com/document/product/1300/78941?lang=en",
      "description": "Tencent Cloud's Model-as-a-Service platform for Hunyuan, third-party proprietary, and open models with manual and automatic model selection modes.",
      "service_boundary": "Represents the current Tencent Cloud TokenHub service, not the deprecated Hunyuan and LLM Knowledge Engine sales paths, Tencent consumer products, TI-ONE, or individual model publishers.",
      "delivery_modes": [
        "on_demand",
        "batch",
        "reserved_capacity",
        "dedicated_endpoint"
      ],
      "model_sources": [
        "first_party",
        "third_party_proprietary",
        "open_weight"
      ],
      "api_styles": [
        "openai_compatible",
        "anthropic_compatible",
        "service_native"
      ],
      "regional_controls": "Tencent documents separate Singapore global, Guangzhou mainland-China, and Silicon Valley US API addresses and scheduling scopes.",
      "retention_controls": "TokenHub terms authorize Tencent and applicable third-party model providers to process user inputs; effective retention depends on the selected model, operational mode, and applicable provider terms.",
      "routing": "Manual mode uses a customer-selected model. Auto Mode for eligible plans selects a model based on the input; third-party models can be reached through Tencent as an intermediary.",
      "customization": "The platform documents pay-as-you-go, guaranteed resources, and exclusive deployment; availability is model- and region-specific.",
      "strengths": [
        "A current unified Tencent Cloud service spans Hunyuan and several major third-party model families.",
        "Official docs expose regional endpoints and automatic model-selection behavior."
      ],
      "tradeoffs": [
        "Third-party models add publisher-specific terms and downstream processing boundaries.",
        "The predecessor APIs are being migrated, so integrations must target the current TokenHub endpoints."
      ],
      "score_profile": "inference_service",
      "score": {
        "operational_maturity": 8.5,
        "data_governance": 6.8,
        "regional_deployment_control": 8.5,
        "serving_flexibility": 9.1,
        "api_interoperability": 9.2,
        "traffic_resilience": 8.5,
        "customization_lifecycle": 7.5,
        "documentation_transparency": 8.0,
        "overall": 8.23
      },
      "terms": {
        "kind": "web_terms",
        "label": "LLM Service TokenHub Terms of Service",
        "url": "https://www.tencentcloud.com/document/product/301/78869",
        "verified_at": "2026-09-13"
      },
      "evidence": [
        {
          "kind": "web",
          "label": "TokenHub API usage and regions",
          "url": "https://intl.cloud.tencent.com/document/product/1300/78941?lang=en",
          "verified_at": "2026-08-28"
        },
        {
          "kind": "web",
          "label": "TokenHub migration guide",
          "url": "https://intl.cloud.tencent.com/document/product/1300/79733",
          "verified_at": "2026-08-28"
        }
      ],
      "verified_at": "2026-08-28",
      "trust": {
        "verified_at": "2026-09-13",
        "properties": {
          "response_integrity": {
            "status": "undocumented",
            "note": "No signature, attestation, or equivalent mechanism for verifying that a response arrived unaltered from the model appears in the API reference or the security documentation.",
            "url": "https://intl.cloud.tencent.com/document/product/1300/78941?lang=en",
            "scope": "Tencent Cloud TokenHub API documentation, for Tencent Cloud TokenHub",
            "verified_at": "2026-09-12"
          },
          "upstream_disclosure": {
            "status": "documented_yes",
            "note": "The terms of service state: \"by using the Service, you authorise Tencent Cloud to engage the relevant Third-Party AI Model Provider to process the User Inputs you submit to the Service, solely for the purpose of obtaining AI Outputs from that Third-Party AI Model or system on your behalf. Tencent Cloud acts as an intermediary in facilitating such access and does not itself provide, own, or control the AI Outputs.\"",
            "url": "https://www.tencentcloud.com/document/product/301/78869",
            "scope": "Tencent Cloud TokenHub terms of service, for Tencent Cloud TokenHub",
            "verified_at": "2026-09-13"
          },
          "credential_handling": {
            "status": "documented_no",
            "note": "The service offers no customer-supplied upstream-key path: \"Authentication method Use the API KEY for authentication via the Authorization: Bearer Header.\" using a TokenHub-issued key.",
            "url": "https://intl.cloud.tencent.com/document/product/1300/78941?lang=en",
            "scope": "Tencent Cloud TokenHub API-authentication documentation, for Tencent Cloud TokenHub",
            "verified_at": "2026-09-12"
          },
          "cache_isolation": {
            "status": "undocumented",
            "note": "No prompt or context caching feature or scope is documented for TokenHub.",
            "url": "https://cloud.tencent.com/document/product/1823/130051",
            "scope": "Tencent Cloud TokenHub API documentation, read for Tencent Cloud TokenHub",
            "verified_at": "2026-09-12"
          },
          "vulnerability_disclosure": {
            "status": "undocumented",
            "note": "Tencent's security response centre lists in-scope product categories as \"(computing/container and middleware/storage/network and CDN/security)\" and does not name TokenHub or an AI/ML category.",
            "url": "https://en.security.tencent.com/policy",
            "scope": "Tencent Security Response Center scope page, read for Tencent Cloud TokenHub",
            "verified_at": "2026-09-12"
          },
          "independent_audit": {
            "status": "undocumented",
            "note": "The company-wide ISO 27001 documentation page does not name TokenHub or list services in scope.",
            "url": "https://www.tencentcloud.com/document/product/363/2408",
            "scope": "Tencent Cloud ISO 27001 documentation, read for Tencent Cloud TokenHub",
            "verified_at": "2026-09-12"
          }
        },
        "findings": []
      }
    },
    {
      "id": "together-ai",
      "name": "Together AI",
      "operator": "Together AI",
      "service_type": "managed_inference_host",
      "url": "https://docs.together.ai/docs/introduction",
      "description": "Together AI's managed inference platform for serverless and dedicated access to open and selected proprietary models.",
      "service_boundary": "Represents Together's hosted inference APIs and dedicated endpoints, not model publishers, the Together research organization, or customer-operated inference software.",
      "delivery_modes": [
        "on_demand",
        "batch",
        "dedicated_endpoint",
        "reserved_capacity"
      ],
      "model_sources": [
        "third_party_proprietary",
        "open_weight",
        "customer_supplied"
      ],
      "api_styles": [
        "openai_compatible",
        "service_native"
      ],
      "regional_controls": "Dedicated deployment and enterprise arrangements can define infrastructure placement; the public serverless catalog does not establish customer-selected regions for every model.",
      "retention_controls": "Data handling follows Together's terms and the selected serverless, batch, fine-tuning, or dedicated feature; stateful artifacts have separate lifecycles.",
      "routing": "Customers choose a hosted model or endpoint; the platform is not primarily an automatic cross-provider router.",
      "customization": "Fine-tuning, LoRA, dedicated endpoints, and customer model deployment are available for supported architectures.",
      "strengths": [
        "Serverless and dedicated paths cover experimentation through reserved production capacity.",
        "A broad open-model catalog uses a common compatible API."
      ],
      "tradeoffs": [
        "Catalog, lifecycle, and capacity guarantees differ between serverless and dedicated modes.",
        "Model terms remain publisher-specific."
      ],
      "score_profile": "inference_service",
      "score": {
        "operational_maturity": 8.5,
        "data_governance": 6.8,
        "regional_deployment_control": 6.3,
        "serving_flexibility": 9.2,
        "api_interoperability": 8.6,
        "traffic_resilience": 6.2,
        "customization_lifecycle": 9.3,
        "documentation_transparency": 8.2,
        "overall": 7.81
      },
      "terms": {
        "kind": "web_terms",
        "label": "Together AI Terms of Service",
        "url": "https://www.together.ai/terms-of-service",
        "verified_at": "2026-09-12"
      },
      "evidence": [
        {
          "kind": "web",
          "label": "Together AI documentation",
          "url": "https://docs.together.ai/docs/introduction",
          "verified_at": "2026-08-28"
        }
      ],
      "verified_at": "2026-08-28",
      "trust": {
        "verified_at": "2026-09-12",
        "properties": {
          "response_integrity": {
            "status": "undocumented",
            "note": "No signature, attestation, or equivalent mechanism for verifying that a response arrived unaltered from the model appears in the API reference or the security documentation.",
            "url": "https://www.together.ai/terms-of-service",
            "scope": "Together AI terms of service, read for Together AI",
            "verified_at": "2026-09-12"
          },
          "upstream_disclosure": {
            "status": "documented_yes",
            "note": "The terms state the operator's role: \"You grant Company a limited license to access, host, use, copy, and otherwise operate Your Content and Output solely as necessary to provide the Services.\" The trust centre's subprocessor list renders only by script and could not be read.",
            "url": "https://www.together.ai/terms-of-service",
            "scope": "Together AI terms of service, for Together AI",
            "verified_at": "2026-09-12"
          },
          "credential_handling": {
            "status": "documented_no",
            "note": "The API offers no customer-supplied-key path: \"Together AI uses API keys to authenticate requests. Keys are scoped to projects, meaning a key only has access to the resources within its project.\"",
            "url": "https://docs.together.ai/docs/api-keys-authentication",
            "scope": "Together AI API-key documentation, for Together AI",
            "verified_at": "2026-09-12"
          },
          "cache_isolation": {
            "status": "undocumented",
            "note": "The serverless overview states: \"The serverless cache is shared across the fleet and entries are evicted as traffic shifts, so cache hits aren't guaranteed and there's no configurable retention window. For predictable cache behavior, use a dedicated endpoint, where prompt caching is enabled by default and scoped to your own replicas.\" It does not say whether serverless entries are keyed to the requesting account.",
            "url": "https://docs.together.ai/docs/serverless/overview",
            "scope": "Together AI serverless overview, for Together AI",
            "verified_at": "2026-09-12"
          },
          "vulnerability_disclosure": {
            "status": "documented_yes",
            "note": "A security.txt file is published with a disclosure programme (\"Contact: https://hackerone.com/together_ai\").",
            "url": "https://www.together.ai/.well-known/security.txt",
            "scope": "Together AI security.txt, for Together AI",
            "verified_at": "2026-09-12"
          },
          "independent_audit": {
            "status": "documented_yes",
            "note": "The certification announcement names the platform: \"The ISO 27001:2022 certification is scoped to the ISMS supporting Together AI's global platform, including the systems, processes, and controls that protect customer data and platform operations.\" The trust centre's SOC 2 material renders only by script.",
            "url": "https://www.together.ai/blog/iso-27001-2022-certification",
            "scope": "Together AI ISO 27001 announcement, for Together AI",
            "verified_at": "2026-09-12"
          }
        },
        "findings": []
      }
    },
    {
      "id": "venice-api",
      "name": "Venice API",
      "operator": "Venice.ai",
      "service_type": "routing_aggregator",
      "url": "https://docs.venice.ai/",
      "description": "Venice.ai's cross-modal inference API for private and anonymized access to open-weight and proprietary text, image, video, audio, embedding, and related models.",
      "service_boundary": "Represents the Venice developer API and its decentralized or upstream inference routing, not the Venice.ai end-user assistant, upstream model publishers, or customer-operated model deployments.",
      "delivery_modes": [
        "on_demand"
      ],
      "model_sources": [
        "third_party_proprietary",
        "open_weight"
      ],
      "api_styles": [
        "openai_compatible",
        "service_native"
      ],
      "regional_controls": "The reviewed public documentation does not establish customer-selected processing regions; private models run across Venice's decentralized provider fleet, while anonymized models can reach third-party frontier providers.",
      "retention_controls": "Venice states that it does not store or log API prompts or model responses. Effective privacy still depends on the selected model tier: private models use Venice-routed GPU capacity, while anonymized frontier models are proxied to third parties under different upstream handling, and selected models offer TEE or client-side E2EE.",
      "routing": "Customers select models from a cross-provider catalog. Venice routes private requests across decentralized GPU providers and proxies anonymized requests to frontier providers; response headers can identify the model and router when available.",
      "customization": "The service exposes model selection, system-prompt behavior, tools, structured output, and modality-specific generation parameters; arbitrary customer-weight deployment is not established as a public API capability.",
      "strengths": [
        "One compatible API spans a large cross-provider and cross-modal model catalog.",
        "Per-model privacy labels plus TEE and E2EE options make inference-boundary differences unusually visible."
      ],
      "tradeoffs": [
        "Private and anonymized model modes have materially different upstream boundaries and privacy properties.",
        "The broad, frequently changing catalog requires model-level capability, terms, and retention review."
      ],
      "score_profile": "inference_service",
      "score": {
        "operational_maturity": 7.6,
        "data_governance": 9.0,
        "regional_deployment_control": 4.0,
        "serving_flexibility": 5.5,
        "api_interoperability": 8.5,
        "traffic_resilience": 8.0,
        "customization_lifecycle": 4.5,
        "documentation_transparency": 9.0,
        "overall": 7.04
      },
      "terms": {
        "kind": "web_terms",
        "label": "Venice Terms of Service",
        "url": "https://venice.ai/legal/tos",
        "verified_at": "2026-08-28"
      },
      "evidence": [
        {
          "kind": "web",
          "label": "Venice API reference",
          "url": "https://docs.venice.ai/api-reference/api-spec",
          "verified_at": "2026-08-28"
        },
        {
          "kind": "web",
          "label": "Model catalog and privacy labels",
          "url": "https://docs.venice.ai/models/overview",
          "verified_at": "2026-08-28"
        },
        {
          "kind": "web",
          "label": "Privacy architecture",
          "url": "https://docs.venice.ai/welcome/privacy",
          "verified_at": "2026-08-28"
        },
        {
          "kind": "web",
          "label": "TEE and E2EE model operation",
          "url": "https://docs.venice.ai/guides/features/tee-e2ee-models",
          "verified_at": "2026-08-28"
        }
      ],
      "verified_at": "2026-08-28",
      "trust": {
        "verified_at": "2026-09-12",
        "properties": {
          "response_integrity": {
            "status": "documented_yes",
            "note": "Scoped to the TEE and end-to-end-encrypted models only. The guide states: \"TEE models can sign their responses, proving the output came from the attested enclave.\" Responses from the rest of the catalogue carry no signature or attestation.",
            "url": "https://docs.venice.ai/guides/features/tee-e2ee-models",
            "scope": "Venice TEE and E2EE models guide, for the Venice API",
            "verified_at": "2026-09-12"
          },
          "upstream_disclosure": {
            "status": "undocumented",
            "note": "The privacy overview states that for proxied models \"Venice proxies the request without sending your Venice identity to the model provider. Prompt content is still visible to that provider.\" No page names which providers those are.",
            "url": "https://docs.venice.ai/overview/privacy",
            "scope": "Venice privacy overview, for the Venice API",
            "verified_at": "2026-09-12"
          },
          "credential_handling": {
            "status": "documented_no",
            "note": "The documentation offers no customer-supplied-key path: \"Venice API requests are authenticated with Bearer API keys.\" issued by Venice.",
            "url": "https://docs.venice.ai/guides/getting-started/generating-api-key",
            "scope": "Venice API-key guide, for the Venice API",
            "verified_at": "2026-09-12"
          },
          "cache_isolation": {
            "status": "undocumented",
            "note": "The prompt-caching guide describes caching behaviour and pricing but not whether a cache entry is scoped to the requesting account or shared.",
            "url": "https://docs.venice.ai/guides/features/prompt-caching",
            "scope": "Venice prompt-caching guide, for the Venice API",
            "verified_at": "2026-09-12"
          },
          "vulnerability_disclosure": {
            "status": "documented_yes",
            "note": "A bug-bounty page states: \"We reward security researchers who responsibly disclose vulnerabilities in our products.\"",
            "url": "https://venice.ai/bug-bounty",
            "scope": "Venice bug-bounty page, for the Venice API",
            "verified_at": "2026-09-12"
          },
          "independent_audit": {
            "status": "undocumented",
            "note": "No SOC 2, ISO 27001, or equivalent attestation is named in the privacy policy, the terms, or the documentation.",
            "url": "https://venice.ai/legal/privacy-policy",
            "scope": "Venice privacy policy, for the Venice API",
            "verified_at": "2026-09-12"
          }
        },
        "findings": []
      }
    },
    {
      "id": "vercel-ai-gateway",
      "name": "Vercel AI Gateway",
      "operator": "Vercel",
      "service_type": "routing_aggregator",
      "url": "https://vercel.com/docs/ai-gateway",
      "description": "A routing service that forwards requests to hosted model providers at provider list price, with budgets scoped to teams and keys.",
      "service_boundary": "Represents Vercel's gateway service, not the upstream providers or Vercel's wider hosting platform.",
      "delivery_modes": [
        "on_demand"
      ],
      "model_sources": [
        "third_party_proprietary",
        "open_weight"
      ],
      "api_styles": [
        "openai_compatible",
        "service_native"
      ],
      "regional_controls": "No customer control over processing geography is documented for the gateway itself; upstream provider selection determines where processing occurs.",
      "retention_controls": "Zero-retention handling is documented both per request and as a chargeable team-wide setting, and customer-supplied provider keys are supported on paid plans.",
      "routing": "Requests can fall back across providers, and customer-supplied keys are used first with documented fallback to platform credentials when a key fails.",
      "customization": "The service routes existing hosted models; no customer fine-tuning or private model deployment is documented.",
      "strengths": [
        "Documentation states plainly that no markup and no platform fee are applied to tokens, and dates itself, which is rare among comparable services.",
        "Budgets can be scoped to a team, project, key, or member rather than only to an account.",
        "Observability exports through open telemetry drains rather than a proprietary console only."
      ],
      "tradeoffs": [
        "A failed request using a customer-supplied key falls back to platform credentials and that usage is billed, so key failures carry a silent cost.",
        "The free tier reaches a subset of the catalogue, and free credits stop applying permanently once credits are purchased.",
        "Team-wide provider allowlisting and zero retention are billed per request, while their per-request equivalents are free."
      ],
      "score_profile": "inference_service",
      "score": {
        "operational_maturity": 7.8,
        "data_governance": 7.4,
        "regional_deployment_control": 3.4,
        "serving_flexibility": 4.5,
        "api_interoperability": 8.6,
        "traffic_resilience": 7.6,
        "customization_lifecycle": 3.0,
        "documentation_transparency": 8.6,
        "overall": 6.38
      },
      "terms": {
        "kind": "web_terms",
        "label": "Vercel Terms of Service",
        "url": "https://vercel.com/legal/terms",
        "verified_at": "2026-09-12"
      },
      "evidence": [
        {
          "kind": "web",
          "label": "AI Gateway pricing",
          "url": "https://vercel.com/docs/ai-gateway/pricing",
          "verified_at": "2026-08-31"
        },
        {
          "kind": "web",
          "label": "AI Gateway documentation",
          "url": "https://vercel.com/docs/ai-gateway",
          "verified_at": "2026-08-31"
        }
      ],
      "verified_at": "2026-08-31",
      "trust": {
        "verified_at": "2026-09-12",
        "properties": {
          "response_integrity": {
            "status": "undocumented",
            "note": "No signature, attestation, or equivalent mechanism for verifying that a response arrived unaltered from the upstream model appears in the AI Gateway overview, the security and compliance pages, the zero-data-retention page, the FAQ, or the provider routing documentation.",
            "url": "https://vercel.com/docs/ai-gateway/security-and-compliance",
            "scope": "Vercel AI Gateway security and compliance documentation, for Vercel AI Gateway",
            "verified_at": "2026-09-12"
          },
          "upstream_disclosure": {
            "status": "documented_yes",
            "note": "The privacy notice lists \"AI providers in connection with providing you Vercel's AI Products and Services\" among the parties data is disclosed to, and the AI Gateway zero-data-retention page names the upstream providers individually, from Alibaba Cloud and Anthropic through Together AI and xAI.",
            "url": "https://vercel.com/legal/privacy-policy",
            "scope": "Vercel privacy notice, for Vercel AI Gateway",
            "verified_at": "2026-09-12"
          },
          "credential_handling": {
            "status": "documented_yes",
            "note": "A platform-wide statement rather than an AI Gateway one: the security page states \"Data is encrypted at rest (AES-256) and in transit (HTTPS / TLS), including sensitive information like access tokens and secrets.\" The AI Gateway bring-your-own-key page describes team-scoped credentials and fallback to Vercel's own credentials but does not restate encryption at rest.",
            "url": "https://vercel.com/security",
            "scope": "Vercel security page, read for AI Gateway bring-your-own-key credentials",
            "verified_at": "2026-09-12"
          },
          "cache_isolation": {
            "status": "undocumented",
            "note": "The zero-data-retention page states: \"When you use prompt caching through AI Gateway, caching happens at the provider level. Whether that caching is ZDR-compliant depends on the provider.\" Nothing states whether cache entries are scoped per team or pooled across customers reaching the same provider through Vercel's credentials.",
            "url": "https://vercel.com/docs/ai-gateway/security-and-compliance/zdr",
            "scope": "Vercel AI Gateway zero-data-retention page, for Vercel AI Gateway",
            "verified_at": "2026-09-12"
          },
          "vulnerability_disclosure": {
            "status": "documented_yes",
            "note": "A platform-wide security.txt names a disclosure programme (\"Contact: https://hackerone.com/vercel-open-source\") and a responsible-disclosure mailbox. AI Gateway is operated on the same domain under the same policy.",
            "url": "https://vercel.com/.well-known/security.txt",
            "scope": "Vercel security.txt, for Vercel AI Gateway",
            "verified_at": "2026-09-12"
          },
          "independent_audit": {
            "status": "undocumented",
            "note": "The compliance page states \"Vercel has a SOC 2 Type 2 attestation for Security, Confidentiality, and Availability\" company-wide, and neither it, the SOC 2 FAQ, nor the public trust centre names AI Gateway or states that the attestation covers every product. Recorded as undocumented for the named service.",
            "url": "https://vercel.com/docs/security/compliance",
            "scope": "Vercel compliance documentation, read for AI Gateway scope",
            "verified_at": "2026-09-12"
          }
        },
        "findings": []
      }
    },
    {
      "id": "xai-api",
      "name": "xAI API",
      "operator": "xAI",
      "service_type": "direct_model_api",
      "url": "https://docs.x.ai/developers/quickstart",
      "description": "xAI's direct managed API for Grok models, multimodal generation, realtime features, and server-side search tools.",
      "service_boundary": "Represents api.x.ai, not the Grok consumer applications, X, Grok Build, individual model releases, or Grok served through another cloud platform.",
      "delivery_modes": [
        "on_demand",
        "batch"
      ],
      "model_sources": [
        "first_party"
      ],
      "api_styles": [
        "openai_compatible",
        "service_native"
      ],
      "regional_controls": "The reviewed public API documentation centers on global endpoints; enterprise regional arrangements require contract review.",
      "retention_controls": "By default API requests and responses are retained for 30 days for abuse auditing and are not used for training without permission. Team-level Zero Data Retention is available with documented exclusions for stateful, file, collection, and batch features.",
      "routing": "Customers choose Grok models and optional xAI-operated tools; the service does not route across independent inference providers.",
      "customization": "The public API emphasizes model and tool invocation rather than imported customer weights.",
      "strengths": [
        "Direct API access to Grok models and xAI-operated web and X search tools.",
        "Self-service Zero Data Retention behavior is documented."
      ],
      "tradeoffs": [
        "The catalog is limited to xAI-operated models and tools.",
        "Zero Data Retention disables several stateful API features."
      ],
      "score_profile": "inference_service",
      "score": {
        "operational_maturity": 7.8,
        "data_governance": 8.5,
        "regional_deployment_control": 4.8,
        "serving_flexibility": 7.0,
        "api_interoperability": 8.5,
        "traffic_resilience": 5.8,
        "customization_lifecycle": 5.0,
        "documentation_transparency": 8.0,
        "overall": 7.05
      },
      "terms": {
        "kind": "web_terms",
        "label": "xAI Enterprise Terms of Service",
        "url": "https://x.ai/legal/terms-of-service-enterprise",
        "verified_at": "2026-08-28"
      },
      "evidence": [
        {
          "kind": "web",
          "label": "xAI API quickstart",
          "url": "https://docs.x.ai/developers/quickstart",
          "verified_at": "2026-08-28"
        },
        {
          "kind": "web",
          "label": "API security and retention",
          "url": "https://docs.x.ai/developers/faq/security",
          "verified_at": "2026-08-28"
        }
      ],
      "verified_at": "2026-08-28",
      "trust": {
        "verified_at": "2026-09-12",
        "properties": {
          "response_integrity": {
            "status": "undocumented",
            "note": "No signature, attestation, or equivalent mechanism for verifying that a response arrived unaltered from the model appears in the API reference or the security documentation.",
            "url": "https://docs.x.ai/developers/faq/security",
            "scope": "xAI API security FAQ, for the xAI API",
            "verified_at": "2026-09-12"
          },
          "upstream_disclosure": {
            "status": "documented_yes",
            "note": "The API security FAQ states the operator holds the content: \"all API requests and responses are stored on our servers (encrypted at rest) for 30 days for auditing purposes\". The marketing host's privacy and subprocessor pages refuse automated fetches, so no subprocessor is named here.",
            "url": "https://docs.x.ai/developers/faq/security",
            "scope": "xAI API security FAQ, for the xAI API",
            "verified_at": "2026-09-12"
          },
          "credential_handling": {
            "status": "documented_no",
            "note": "The API offers no customer-supplied-key path: the quickstart says \"Create an API key via the API Keys page\" and documents only that key.",
            "url": "https://docs.x.ai/developers/quickstart",
            "scope": "xAI API quickstart, for the xAI API",
            "verified_at": "2026-09-12"
          },
          "cache_isolation": {
            "status": "undocumented",
            "note": "The prompt-caching page documents automatic caching and its pricing but never states whether a cache is scoped to the account or key.",
            "url": "https://docs.x.ai/developers/advanced-api-usage/prompt-caching",
            "scope": "xAI API prompt-caching page, for the xAI API",
            "verified_at": "2026-09-12"
          },
          "vulnerability_disclosure": {
            "status": "documented_yes",
            "note": "A security.txt file is published with a contact address (\"Contact: mailto:vulnerabilities@x.ai\").",
            "url": "https://x.ai/.well-known/security.txt",
            "scope": "xAI security.txt, for the xAI API",
            "verified_at": "2026-09-12"
          },
          "independent_audit": {
            "status": "documented_yes",
            "note": "The API security FAQ states: \"We are SOC 2 Type 2 compliant.\" No report or auditor is linked.",
            "url": "https://docs.x.ai/developers/faq/security",
            "scope": "xAI API security FAQ, for the xAI API",
            "verified_at": "2026-09-12"
          }
        },
        "findings": []
      }
    },
    {
      "id": "qiniu-ai-inference",
      "name": "Qiniu AI Large-Model Inference",
      "operator": "上海七牛信息技术有限公司 (Shanghai Qiniu Information Technology)",
      "service_type": "routing_aggregator",
      "url": "https://developer.qiniu.com/aitokenapi",
      "description": "A Chinese cloud operator's unified API routing to third-party and open-weight models, with separate mainland and overseas endpoints.",
      "service_boundary": "Represents the operator's model-inference API, offered under a separate overseas brand at a second endpoint, not the publishers whose models it routes to and not the operator's storage, delivery, or private GPU products.",
      "delivery_modes": [
        "on_demand",
        "batch"
      ],
      "model_sources": [
        "third_party_proprietary",
        "open_weight"
      ],
      "api_styles": [
        "openai_compatible",
        "anthropic_compatible",
        "service_native"
      ],
      "regional_controls": "Two endpoints are documented, one for mainland users and one overseas, over a network spanning several regions. The operator explicitly warns that the entry endpoint does not determine where a model executes, so no residency guarantee follows from endpoint choice.",
      "retention_controls": "Request logs hold metadata rather than content and are retained about thirty days with export interfaces. Retention of prompts and outputs is not documented: the user agreement defers to an artificial-intelligence data policy that is not published, in which case data is deleted when the service terminates. No zero-retention mode or opt-out is documented, and no clause grants training rights.",
      "routing": "A unified interface selects an upstream channel per request and adapts protocols to it. Passthrough endpoints preserve upstream request shapes while still traversing the operator's gateway for authentication, rate limiting, metering, and billing. Third-party suppliers are onboarded through a formal admission programme.",
      "customization": "No fine-tuning or distillation is documented. Available controls are operational: per-key model scoping, per-key quotas, and prompt-cache control.",
      "strengths": [
        "A dedicated service-level agreement with a published compensation schedule and a per-component public status page, uncommon for a routing service.",
        "Three passthrough surfaces preserving upstream request shapes sit alongside two compatible conventions.",
        "Separate mainland and overseas endpoints carry an identical catalogue and interface."
      ],
      "tradeoffs": [
        "Retention of prompts and outputs is undocumented, and the terms defer to a data policy that is not published anywhere reachable.",
        "The operator warns that the entry endpoint does not determine the processing region, so no residency can be inferred.",
        "Numeric rate limits are unpublished and explicitly variable, and no tuning surface exists."
      ],
      "score_profile": "inference_service",
      "score": {
        "operational_maturity": 7.6,
        "data_governance": 4.6,
        "regional_deployment_control": 4.4,
        "serving_flexibility": 6.0,
        "api_interoperability": 8.8,
        "traffic_resilience": 6.0,
        "customization_lifecycle": 3.0,
        "documentation_transparency": 7.2,
        "overall": 5.95
      },
      "terms": {
        "kind": "web_terms",
        "label": "七牛云服务用户协议",
        "url": "https://www.qiniu.com/agreements/user-agreement",
        "verified_at": "2026-09-12"
      },
      "evidence": [
        {
          "kind": "web",
          "label": "Inference API documentation",
          "url": "https://developer.qiniu.com/aitokenapi/13379/real-time-ai-interface-api",
          "verified_at": "2026-08-31"
        },
        {
          "kind": "web",
          "label": "Service level agreement",
          "url": "https://www.qiniu.com/agreements/sla/ai-token",
          "verified_at": "2026-08-31"
        },
        {
          "kind": "web",
          "label": "Batch inference",
          "url": "https://developer.qiniu.com/aitokenapi/13380/new-ai-batch-inference-api",
          "verified_at": "2026-08-31"
        }
      ],
      "verified_at": "2026-08-31",
      "trust": {
        "verified_at": "2026-09-12",
        "properties": {
          "response_integrity": {
            "status": "undocumented",
            "note": "No signature, attestation, or equivalent mechanism for verifying that a response arrived unaltered from the upstream model appears in the chat-completions reference or elsewhere in the API documentation.",
            "url": "https://developer.qiniu.com/aitokenapi/13390/chat-completions",
            "scope": "Qiniu AI inference API reference, for Qiniu AI Large-Model Inference",
            "verified_at": "2026-09-12"
          },
          "upstream_disclosure": {
            "status": "documented_yes",
            "note": "The user agreement states that the AI service integrates third-party model suppliers and that \"模型的计算、推理与内容生成能力由各模型供应商直接提供\" (model computation, inference, and content generation are provided directly by each model supplier), and the model marketplace names the supplier of each model.",
            "url": "https://www.qiniu.com/agreements/user-agreement",
            "scope": "Qiniu user agreement, for Qiniu AI Large-Model Inference",
            "verified_at": "2026-09-12"
          },
          "credential_handling": {
            "status": "documented_no",
            "note": "The documentation offers no customer-supplied-key path: the API-key guide issues a Qiniu key and shows it set as \"OPENAI_API_KEY\" or \"ANTHROPIC_API_KEY\" against Qiniu's own base URL.",
            "url": "https://developer.qiniu.com/aitokenapi/12884/how-to-get-api-key",
            "scope": "Qiniu API-key guide, for Qiniu AI Large-Model Inference",
            "verified_at": "2026-09-12"
          },
          "cache_isolation": {
            "status": "undocumented",
            "note": "The model marketplace prices cached input tokens, but no page states whether a cache is scoped per customer or pooled; a documentation search for 缓存 returns nothing.",
            "url": "https://www.qiniu.com/ai/models",
            "scope": "Qiniu model marketplace, for Qiniu AI Large-Model Inference",
            "verified_at": "2026-09-12"
          },
          "vulnerability_disclosure": {
            "status": "documented_yes",
            "note": "The company contact page publishes a data-security and network-security mailbox: \"数据安全合规风险反馈与网络安全问题咨询 电子邮箱 sec@qiniu.com\". It is company-wide rather than named for this service.",
            "url": "https://www.qiniu.com/contact",
            "scope": "Qiniu contact page, for Qiniu AI Large-Model Inference",
            "verified_at": "2026-09-12"
          },
          "independent_audit": {
            "status": "undocumented",
            "note": "No SOC 2, ISO 27001, or equivalent attestation naming the inference service appears on the company page or in the documentation.",
            "url": "https://www.qiniu.com/company",
            "scope": "Qiniu company page, for Qiniu AI Large-Model Inference",
            "verified_at": "2026-09-12"
          }
        },
        "findings": []
      }
    },
    {
      "id": "stepfun-open-platform",
      "name": "StepFun Open Platform (mainland China)",
      "operator": "上海阶跃星辰智能科技股份有限公司 (Shanghai StepFun Intelligent Technology)",
      "service_type": "direct_model_api",
      "url": "https://platform.stepfun.com/docs/zh/quickstart/overview",
      "description": "The Chinese platform where StepFun sells API access to its own text, audio, vision, and image models.",
      "service_boundary": "Represents the mainland platform operated by a Chinese entity, not the separately incorporated international platform served from other infrastructure, and not the model weights themselves.",
      "delivery_modes": [
        "on_demand"
      ],
      "model_sources": [
        "first_party"
      ],
      "api_styles": [
        "openai_compatible",
        "anthropic_compatible",
        "service_native"
      ],
      "regional_controls": "No customer-selectable region. The privacy policy states that personal information collected in mainland operations is stored within the country and is not currently transferred abroad.",
      "retention_controls": "No retention period for prompts or outputs is documented, and no zero-retention mode or opt-out exists. The user agreement takes a licence over uploaded content framed around fulfilling the agreement and improving the model service experience, which is narrower than the international platform's equivalent.",
      "routing": "Callers name a model. One routing alias on the subscription channel dispatches between a first-party model and a third-party model by request characteristics, and that third-party model is not otherwise selectable or listed in the price table.",
      "customization": "No fine-tuning, adapter training, or distillation is documented. An experimental preview channel exists but is explicitly not recommended for production.",
      "strengths": [
        "Numeric concurrency, request, and token limits are published across six spend tiers, which is unusually specific.",
        "A dated model-deprecation page maps each retiring model to a recommended replacement.",
        "Two compatible conventions and a newer response interface sit on one host alongside a native realtime socket and speech stack."
      ],
      "tradeoffs": [
        "No service-level agreement, no status page, and no changelog.",
        "No batch, reserved capacity, dedicated endpoints, or tuning surface is documented.",
        "A subscription-channel routing alias silently fronts a third-party model that is absent from the published price table."
      ],
      "score_profile": "inference_service",
      "score": {
        "operational_maturity": 6.0,
        "data_governance": 6.6,
        "regional_deployment_control": 5.2,
        "serving_flexibility": 5.4,
        "api_interoperability": 8.2,
        "traffic_resilience": 7.4,
        "customization_lifecycle": 3.4,
        "documentation_transparency": 6.6,
        "overall": 6.13
      },
      "terms": {
        "kind": "web_terms",
        "label": "阶跃星辰用户协议",
        "url": "https://platform.stepfun.com/docs/zh/agreement/userservice",
        "verified_at": "2026-08-31"
      },
      "evidence": [
        {
          "kind": "web",
          "label": "Pricing and model list",
          "url": "https://platform.stepfun.com/docs/zh/guides/pricing/details",
          "verified_at": "2026-08-31"
        },
        {
          "kind": "web",
          "label": "Model migration notices",
          "url": "https://platform.stepfun.com/docs/zh/guides/model-migration",
          "verified_at": "2026-08-31"
        },
        {
          "kind": "web",
          "label": "Privacy policy",
          "url": "https://platform.stepfun.com/docs/zh/agreement/userprivacy",
          "verified_at": "2026-08-31"
        }
      ],
      "verified_at": "2026-08-31",
      "trust": {
        "verified_at": "2026-09-12",
        "properties": {
          "response_integrity": {
            "status": "undocumented",
            "note": "No signature, attestation, or equivalent mechanism for verifying that a response arrived unaltered from the model appears in the API reference or the security documentation.",
            "url": "https://platform.stepfun.com/docs/llms.txt",
            "scope": "StepFun platform documentation, for StepFun Open Platform (mainland China)",
            "verified_at": "2026-09-12"
          },
          "upstream_disclosure": {
            "status": "documented_yes",
            "note": "The platform privacy policy states the operator collects inputs and outputs: \"我们会收集您主动输入的信息（包括文字、语音、图片、视频、文本、录音、链接等多种形式）以及服务的输出信息、您的任务指令信息、您设置的模型及参数信息以及您提供的反馈信息\" (we collect the information you actively input, in text, voice, image, video, recording, and link form, together with the service's outputs, your task instructions, model and parameter settings, and feedback). No subprocessor is named.",
            "url": "https://platform.stepfun.com/docs/zh/agreement/userprivacy",
            "scope": "StepFun platform privacy policy, for StepFun Open Platform (mainland China)",
            "verified_at": "2026-09-12"
          },
          "credential_handling": {
            "status": "documented_no",
            "note": "The API offers no customer-supplied-key path: the API-key guide describes only organisation-issued keys (\"请妥善保管您的 API Key，不要写入代码仓库或分享给他人。任何获得该 Key 的人都能以您的身份调用模型，并消耗组织的 Credit。\", keep your API key safe; anyone holding it can call models as you and spend the organisation's credit).",
            "url": "https://platform.stepfun.com/docs/zh/guides/organization/api-keys",
            "scope": "StepFun platform API-key guide, for StepFun Open Platform (mainland China)",
            "verified_at": "2026-09-12"
          },
          "cache_isolation": {
            "status": "undocumented",
            "note": "The prompt-cache guide documents the feature and its billing but never states whether a cache is scoped to the account that created it.",
            "url": "https://platform.stepfun.com/docs/zh/guides/developer/prompt-cache",
            "scope": "StepFun prompt-cache guide, for StepFun Open Platform (mainland China)",
            "verified_at": "2026-09-12"
          },
          "vulnerability_disclosure": {
            "status": "undocumented",
            "note": "No security contact or disclosure policy appears in the platform documentation, the terms, or the privacy policy, and no security.txt is served.",
            "url": "https://platform.stepfun.com/docs/llms.txt",
            "scope": "StepFun platform documentation, for StepFun Open Platform (mainland China)",
            "verified_at": "2026-09-12"
          },
          "independent_audit": {
            "status": "undocumented",
            "note": "No SOC 2, ISO 27001, or equivalent attestation is named in the platform documentation, the terms, or the privacy policy.",
            "url": "https://platform.stepfun.com/docs/llms.txt",
            "scope": "StepFun platform documentation, for StepFun Open Platform (mainland China)",
            "verified_at": "2026-09-12"
          }
        },
        "findings": []
      }
    },
    {
      "id": "zhipu-bigmodel",
      "name": "Zhipu AI Open Platform",
      "operator": "北京智谱华章科技股份有限公司 (Beijing Zhipu Huazhang Technology)",
      "service_type": "direct_model_api",
      "url": "https://docs.bigmodel.cn/cn/guide/start/introduction",
      "description": "Zhipu's mainland-China developer platform for its own model family, with tuning, batch, and private instance deployment.",
      "service_boundary": "Represents the mainland platform operated at bigmodel.cn by a Chinese entity, not the separately operated Z.ai Model API, the open-weight model releases, or Zhipu's consumer assistant.",
      "delivery_modes": [
        "on_demand",
        "batch",
        "dedicated_endpoint"
      ],
      "model_sources": [
        "first_party"
      ],
      "api_styles": [
        "service_native",
        "openai_compatible",
        "anthropic_compatible"
      ],
      "regional_controls": "One public endpoint with no customer-selectable region. The privacy policy states that personal information collected in mainland operations is stored in mainland China with no current cross-border transfer. Private instances add virtual-network and allowlist access control.",
      "retention_controls": "Customers own uploaded data and the platform commits to no unauthorised use or disclosure and to minimum-necessary storage. Customer-initiated deletion triggers a product-specific buffer period after which caches and backups are removed irreversibly. There is no blanket commitment against training: anonymised data may be used for machine-learning and model-algorithm training without separate consent.",
      "routing": "Customers select a model identifier. Rate limiting is concurrency-based per model and tiered by benefit level and subscription, adjusted dynamically at peak. No cross-provider routing or documented fallback.",
      "customization": "Fine-tuning and evaluation are documented, with private instance deployment of tuned versions and configurable inference settings. Customer-supplied weights are not documented.",
      "strengths": [
        "Compatible surfaces for two major client conventions sit alongside the native interface on one documented host.",
        "Deletion is specified concretely as a buffer period followed by irreversible removal of cached and backup copies.",
        "Personal information from mainland operations is stated to stay in mainland China with no current cross-border transfer."
      ],
      "tradeoffs": [
        "No blanket commitment against training; anonymised data may be used for model-algorithm training without separate consent.",
        "A single public endpoint with no customer-selectable region and no documented reserved-capacity tier.",
        "The service agreement carries no date or version, unlike the user agreement and privacy policy."
      ],
      "score_profile": "inference_service",
      "score": {
        "operational_maturity": 7.6,
        "data_governance": 5.8,
        "regional_deployment_control": 5.0,
        "serving_flexibility": 6.6,
        "api_interoperability": 8.2,
        "traffic_resilience": 6.0,
        "customization_lifecycle": 7.0,
        "documentation_transparency": 6.8,
        "overall": 6.58
      },
      "terms": {
        "kind": "web_terms",
        "label": "智谱开放平台用户协议",
        "url": "https://docs.bigmodel.cn/cn/terms/user-agreement",
        "verified_at": "2026-09-25"
      },
      "evidence": [
        {
          "kind": "web",
          "label": "Platform documentation",
          "url": "https://docs.bigmodel.cn/cn/guide/start/introduction",
          "verified_at": "2026-08-31"
        },
        {
          "kind": "web",
          "label": "Privacy policy",
          "url": "https://docs.bigmodel.cn/cn/terms/privacy-policy",
          "verified_at": "2026-08-31"
        },
        {
          "kind": "web",
          "label": "Rate limits",
          "url": "https://docs.bigmodel.cn/cn/api/rate-limit",
          "verified_at": "2026-08-31"
        }
      ],
      "verified_at": "2026-08-31",
      "trust": {
        "verified_at": "2026-09-12",
        "properties": {
          "response_integrity": {
            "status": "undocumented",
            "note": "No signature, attestation, or equivalent mechanism for verifying that a response arrived unaltered from the model appears in the API reference or the security documentation.",
            "url": "https://docs.bigmodel.cn/cn/api/rate-limit",
            "scope": "Zhipu open platform API documentation, for the Zhipu AI Open Platform",
            "verified_at": "2026-09-12"
          },
          "upstream_disclosure": {
            "status": "documented_yes",
            "note": "The privacy policy states the operator receives and processes inputs: \"您可以自愿在大模型开放平台内试用我们的模型……您可以向我们提供文本对话信息、图片信息、音频信息、文档信息以及其他输入信息（以下称“输入信息”）\" (you may provide text, image, audio, document, and other input information, from which the platform generates content). No subprocessor is named.",
            "url": "https://docs.bigmodel.cn/cn/terms/privacy-policy",
            "scope": "Zhipu open platform privacy policy, for the Zhipu AI Open Platform",
            "verified_at": "2026-09-12"
          },
          "credential_handling": {
            "status": "documented_no",
            "note": "The API offers no customer-supplied-key path: the quick-start says \"登录后，在个人中心页面，点击 API Keys，创建一个新的 API Key。\" (after logging in, create a new API key on the personal centre page) and every documented request uses that key.",
            "url": "https://docs.bigmodel.cn/cn/guide/start/quick-start",
            "scope": "Zhipu open platform quick-start, for the Zhipu AI Open Platform",
            "verified_at": "2026-09-12"
          },
          "cache_isolation": {
            "status": "undocumented",
            "note": "The cache guide documents the feature and its billing but never states whether a cache is scoped to the account that created it.",
            "url": "https://docs.bigmodel.cn/cn/guide/capabilities/cache",
            "scope": "Zhipu open platform cache guide, for the Zhipu AI Open Platform",
            "verified_at": "2026-09-12"
          },
          "vulnerability_disclosure": {
            "status": "undocumented",
            "note": "No security contact or disclosure policy is published: the security-audit guide concerns content moderation, the security page and security.txt paths serve only an application shell, and the only contact found is a content-reporting channel.",
            "url": "https://docs.bigmodel.cn/cn/guide/platform/securityaudit",
            "scope": "Zhipu open platform security-audit guide, for the Zhipu AI Open Platform",
            "verified_at": "2026-09-12"
          },
          "independent_audit": {
            "status": "undocumented",
            "note": "No SOC 2, ISO 27001, or equivalent attestation is named in the privacy policy, the terms, or the platform documentation.",
            "url": "https://docs.bigmodel.cn/cn/terms/privacy-policy",
            "scope": "Zhipu open platform privacy policy, for the Zhipu AI Open Platform",
            "verified_at": "2026-09-12"
          }
        },
        "findings": []
      }
    },
    {
      "id": "volcengine-ark",
      "name": "Volcengine Ark",
      "operator": "北京火山引擎科技有限公司 (Beijing Volcano Engine Technology)",
      "service_type": "cloud_model_platform",
      "url": "https://docs.volcengine.com/docs/82379/1099455",
      "description": "ByteDance's mainland-China platform serving its own and third-party models with tuning, batch, reserved capacity, and dedicated endpoints.",
      "service_boundary": "Represents the mainland-China Volcengine Ark platform, whose licence limits use to mainland China, not the international BytePlus ModelArk service, ByteDance consumer products, or individual Doubao model releases.",
      "delivery_modes": [
        "on_demand",
        "batch",
        "reserved_capacity",
        "dedicated_endpoint"
      ],
      "model_sources": [
        "first_party",
        "third_party_proprietary",
        "open_weight",
        "customer_supplied"
      ],
      "api_styles": [
        "service_native",
        "openai_compatible",
        "anthropic_compatible"
      ],
      "regional_controls": "All documented endpoints are in one mainland region and the platform terms grant a licence to use the service only within mainland China. Private network access is available through virtual-network endpoints without changing the request address.",
      "retention_controls": "Platform terms commit to not storing or training on customer data without separate consent, naming exceptions for compliance filtering, customer-requested troubleshooting, and abnormal-invocation alerts. A sandbox tier keeps data from reaching third-party model publishers, and customers may hold their own encryption keys. Individual-edition subscription plans reverse this default and authorise storage and training use of inputs and outputs, withdrawable only by leaving the plan.",
      "routing": "Customers select a model or endpoint identifier. A routing model can auto-select among a customer-scoped model set by prompt, quality, and cost preference, limited to the chat interface and shorter contexts. Reserved throughput takes priority and spills over to the shared pool.",
      "customization": "Supervised, preference, and continued-pretraining tuning with datasets and evaluation jobs; tuned and customer-uploaded open-weight models deploy on dedicated units, including quantised variants.",
      "strengths": [
        "Platform terms state a no-storage, no-training default and enumerate each exception, with published and effective dates.",
        "Four serving modes span shared on-demand, reserved throughput, dedicated units with elastic scaling, and discounted batch.",
        "Serves first-party models alongside separately contracted third-party publishers and accepts customer-uploaded open-weight models."
      ],
      "tradeoffs": [
        "The service licence is restricted to mainland China and only one region is documented.",
        "Individual-edition subscription plans authorise storage and training use of prompts and outputs, with no withdrawal short of leaving the plan.",
        "Documentation is Chinese only and several catalogue pages return empty bodies over HTTP."
      ],
      "score_profile": "inference_service",
      "score": {
        "operational_maturity": 8.2,
        "data_governance": 7.0,
        "regional_deployment_control": 5.6,
        "serving_flexibility": 8.6,
        "api_interoperability": 8.0,
        "traffic_resilience": 8.4,
        "customization_lifecycle": 8.4,
        "documentation_transparency": 6.6,
        "overall": 7.57
      },
      "terms": {
        "kind": "web_terms",
        "label": "火山方舟大模型服务平台专用条款",
        "url": "https://docs.volcengine.com/docs/82379/1104498",
        "verified_at": "2026-09-15"
      },
      "evidence": [
        {
          "kind": "web",
          "label": "Platform documentation",
          "url": "https://docs.volcengine.com/docs/82379/1099455",
          "verified_at": "2026-08-31"
        },
        {
          "kind": "web",
          "label": "Subscription plan terms",
          "url": "https://docs.volcengine.com/docs/82379/2278469",
          "verified_at": "2026-08-31"
        },
        {
          "kind": "web",
          "label": "Volcengine service terms",
          "url": "https://docs.volcengine.com/docs/6256/64903",
          "verified_at": "2026-08-31"
        }
      ],
      "verified_at": "2026-08-31",
      "trust": {
        "verified_at": "2026-09-15",
        "properties": {
          "response_integrity": {
            "status": "undocumented",
            "note": "No signature, attestation, or equivalent mechanism for verifying that a response arrived unaltered from the model appears in the API reference or the security documentation.",
            "url": "https://docs.volcengine.com/docs/82379/1396491?lang=zh",
            "scope": "Volcengine Ark context API documentation, for Volcengine Ark",
            "verified_at": "2026-09-15"
          },
          "upstream_disclosure": {
            "status": "documented_yes",
            "note": "The platform terms state who receives data: \"高阶安全防护即火山引擎为您提供的安全沙箱安全互信方案，保护您的数据不会被提供给模型服务商。如您选择使用不具备高阶安全防护的模型服务，那么您的数据处理规则将遵循您接受的模型服务协议与规则的约定。\" (advanced security protection is a sandbox scheme under which your data is not provided to the model provider; for model services without it, the model provider's own agreement governs your data).",
            "url": "https://docs.volcengine.com/docs/82379/1104498",
            "scope": "Volcengine Ark platform terms, for Volcengine Ark",
            "verified_at": "2026-09-15"
          },
          "credential_handling": {
            "status": "documented_no",
            "note": "The service offers no customer-supplied-key path: every documented request authenticates with a Volcengine-issued key (\"Authorization: Bearer $ARK_API_KEY\").",
            "url": "https://docs.volcengine.com/docs/82379/1396491?lang=zh",
            "scope": "Volcengine Ark context API documentation, for Volcengine Ark",
            "verified_at": "2026-09-15"
          },
          "cache_isolation": {
            "status": "documented_yes",
            "note": "The platform terms state where cached data lives: \"您理解您的数据将会存储在火山方舟平台为您提供的存储空间中以实现您对数据缓存存储、监控观测、加标识、Agents 托管等目的。\" (your data is stored in the storage space the Ark platform provides for you, for cache storage, monitoring, labelling, and agent hosting). The terms describe per-customer storage rather than cache-key behaviour.",
            "url": "https://docs.volcengine.com/docs/82379/1104498",
            "scope": "Volcengine Ark platform terms, for Volcengine Ark",
            "verified_at": "2026-09-15"
          },
          "vulnerability_disclosure": {
            "status": "documented_yes",
            "note": "ByteDance's security response centre, which covers Volcengine, publishes a vulnerability submission route (\"提交漏洞\") and the mailbox security@bytedance.com; it is company-wide rather than named for Ark.",
            "url": "https://security.bytedance.com/news/volcengine-sec-white-paper-released/",
            "scope": "ByteDance security response centre, for Volcengine Ark",
            "verified_at": "2026-09-15"
          },
          "independent_audit": {
            "status": "undocumented",
            "note": "The Volcengine trust and compliance page lists company certifications and does not name Ark, so it is recorded as undocumented for the named service.",
            "url": "https://www.volcengine.com/trust/compliance",
            "scope": "Volcengine trust and compliance page, read for Volcengine Ark",
            "verified_at": "2026-09-15"
          }
        },
        "findings": []
      }
    },
    {
      "id": "siliconflow-cn",
      "name": "SiliconFlow (mainland China)",
      "operator": "北京硅基流动科技股份有限公司 (Beijing SiliconFlow Technology)",
      "service_type": "managed_inference_host",
      "url": "https://docs.siliconflow.cn/docs/userguide/introduction",
      "description": "Mainland-China platform serving open-weight and third-party models on a self-built engine, with batch, reserved, and dedicated capacity.",
      "service_boundary": "Represents the mainland platform operated at siliconflow.cn by a Chinese entity, not the separately operated international platform whose terms exclude mainland users, and not the model publishers whose weights it serves.",
      "delivery_modes": [
        "on_demand",
        "batch",
        "reserved_capacity",
        "dedicated_endpoint"
      ],
      "model_sources": [
        "open_weight",
        "third_party_proprietary",
        "customer_supplied"
      ],
      "api_styles": [
        "openai_compatible",
        "anthropic_compatible",
        "service_native"
      ],
      "regional_controls": "Geography is chosen by platform rather than by parameter: this platform serves mainland users while the international site excludes them. No region parameter is documented; stricter isolation is offered commercially through customer-cloud, private, and on-premises deployment.",
      "retention_controls": "The platform terms state that the operator will not access interaction data, will not use or disclose it without authorisation, and will not store any of it, separating that from telemetry which may be used to improve products. No clause authorises training on customer interaction data.",
      "routing": "Customers select a model identifier per request. Rate limits are published per model across several metrics with tier-based upgrade paths, and batch jobs are exempt from online limits. Reserved instances provide guaranteed throughput.",
      "customization": "Fine-tuning of an enumerated model set from chat-format datasets with one-click deployment of the result, plus custom-model onboarding and hybrid or private deployment.",
      "strengths": [
        "Terms state the operator will not access, use, disclose, or store interaction data, which is stronger than the usual no-training assurance.",
        "One base path serves two major compatible conventions alongside native reranking, audio, and video endpoints.",
        "Serving spans serverless, reserved capacity with an enterprise commitment, dedicated and elastic instances, and private deployment."
      ],
      "tradeoffs": [
        "Operated by a separate entity from the international platform, with separate hosts, keys, and consoles, so neither is a superset of the other.",
        "No first-party models and no region parameter, so model availability and processing geography both follow the platform you sign up to.",
        "Batch jobs are capped in size and line count, with result links expiring after a month."
      ],
      "score_profile": "inference_service",
      "score": {
        "operational_maturity": 7.4,
        "data_governance": 8.6,
        "regional_deployment_control": 5.4,
        "serving_flexibility": 8.0,
        "api_interoperability": 8.4,
        "traffic_resilience": 7.2,
        "customization_lifecycle": 7.0,
        "documentation_transparency": 6.8,
        "overall": 7.44
      },
      "terms": {
        "kind": "web_terms",
        "label": "硅基流动平台使用协议",
        "url": "https://docs.siliconflow.cn/docs/legals/terms-of-service",
        "verified_at": "2026-08-31"
      },
      "evidence": [
        {
          "kind": "web",
          "label": "Platform documentation",
          "url": "https://docs.siliconflow.cn/docs/userguide/introduction",
          "verified_at": "2026-08-31"
        },
        {
          "kind": "web",
          "label": "Privacy policy",
          "url": "https://docs.siliconflow.cn/docs/legals/privacy-policy",
          "verified_at": "2026-08-31"
        },
        {
          "kind": "web",
          "label": "Batch jobs",
          "url": "https://docs.siliconflow.cn/docs/userguide/guides/batch",
          "verified_at": "2026-08-31"
        }
      ],
      "verified_at": "2026-08-31",
      "trust": {
        "verified_at": "2026-09-12",
        "properties": {
          "response_integrity": {
            "status": "undocumented",
            "note": "No signature, attestation, or equivalent mechanism for verifying that a response arrived unaltered from the model appears in the API reference or the security documentation.",
            "url": "https://docs.siliconflow.cn/docs/userguide/introduction",
            "scope": "SiliconFlow user guide, for SiliconFlow (mainland China)",
            "verified_at": "2026-09-12"
          },
          "upstream_disclosure": {
            "status": "documented_yes",
            "note": "The privacy policy states the operator's role: \"针对大模型 API 加速推理服务，我们仅作为底层算力与技术提供方。对于您通过 API 传输的业务数据（包括输入指令及生成的输出内容），我们仅在提供当次推理计算的必要且短暂的时间内进行处理。\" (for the accelerated inference API we act only as the underlying compute and technology provider, and process the business data you send, inputs and outputs, only for the brief time the inference requires). No subprocessor is named.",
            "url": "https://docs.siliconflow.cn/docs/legals/privacy-policy",
            "scope": "SiliconFlow privacy policy, for SiliconFlow (mainland China)",
            "verified_at": "2026-09-12"
          },
          "credential_handling": {
            "status": "documented_no",
            "note": "The API offers no customer-supplied-key path: \"在“API 密钥”页面，点击“新建 API 密钥”，创建您的 API Key。\" (create your API key on the API keys page) and every documented request uses that key.",
            "url": "https://docs.siliconflow.cn/docs/userguide/quickstart",
            "scope": "SiliconFlow quickstart, for SiliconFlow (mainland China)",
            "verified_at": "2026-09-12"
          },
          "cache_isolation": {
            "status": "undocumented",
            "note": "The chat-completions reference exposes cache fields but no page states whether a cache is scoped to the account that created it.",
            "url": "https://docs.siliconflow.cn/cn/api-reference/chat-completions/chat-completions",
            "scope": "SiliconFlow chat-completions reference, for SiliconFlow (mainland China)",
            "verified_at": "2026-09-12"
          },
          "vulnerability_disclosure": {
            "status": "undocumented",
            "note": "No security contact or disclosure policy appears in the privacy policy, the terms, or the documentation, and no security.txt is served; the privacy policy's breach-notification clause is not a reporting route.",
            "url": "https://docs.siliconflow.cn/docs/legals/privacy-policy",
            "scope": "SiliconFlow privacy policy, for SiliconFlow (mainland China)",
            "verified_at": "2026-09-12"
          },
          "independent_audit": {
            "status": "undocumented",
            "note": "The company page lists certifications by name (\"权威认证 信息安全管理体系 系统信息安全等级保护（三级） 质量管理体系认证 信息技术服务管理体系认证\": an information-security management system, MLPS level 3, quality management, and IT service management) without naming the inference service or a scope, so it is recorded as undocumented for the named service.",
            "url": "https://siliconflow.cn/about",
            "scope": "SiliconFlow company page, read for SiliconFlow (mainland China)",
            "verified_at": "2026-09-12"
          }
        },
        "findings": []
      }
    },
    {
      "id": "typesafe-api",
      "name": "TypeSafe API",
      "operator": "TypeSafe AI",
      "service_type": "direct_model_api",
      "url": "https://docs.typesafe.ai/",
      "description": "TypeSafe's managed API serving its first-party Jev typed-decision models through POST /v1/systemone over native REST with bearer-key auth: the caller sends state plus a map of typed questions (yes/no, choice, score) and gets back probabilities with confidence instead of generated text. This catalog's maintenance scripts are a paying customer of the service. Reviewed by automation under ADR 055 with human spot-checks; verify against the cited evidence.",
      "service_boundary": "Represents the managed TypeSafe API at api.typesafe.ai, not Jev model weights, the Python and JavaScript SDKs, the documentation, or the typesafe-agent-skills pack.",
      "delivery_modes": [
        "on_demand"
      ],
      "model_sources": [
        "first_party"
      ],
      "api_styles": [
        "service_native"
      ],
      "regional_controls": "The reviewed documentation exposes one global base URL and no customer-selected inference region; the enterprise FAQ asks where data is processed but publishes no answer.",
      "retention_controls": "The privacy policy retains personal data as long as reasonably necessary to provide the service; zero data retention is available for enterprise customers on request, and the operator states it does not use prompts or other inputs to train or fine-tune models.",
      "routing": "Customers call the single TypeSafe-operated endpoint and select the first-party Jev model; the API routes no request to third-party providers.",
      "customization": "Every request configures its own typed criteria (up to 255 choice options, up to 10 score levels); the reviewed pages document no customer-imported weights or dedicated deployments.",
      "strengths": [
        "Typed answers with probabilities and confidence directly address decision workloads without parsing generated text.",
        "Full endpoint reference with SDKs, usage reporting, rate-limit handling, and error semantics.",
        "Master Customer Agreement, Data Processing Agreement, and privacy policy with enterprise zero-retention option."
      ],
      "tradeoffs": [
        "Single model line and single global endpoint: no regions, no dedicated deployments, no third-party models.",
        "SOC 2 Type II report exists but is request-gated rather than public, and no public vulnerability-disclosure process is documented.",
        "Responses carry no documented integrity mechanism tying an answer back to the model run."
      ],
      "score_profile": "inference_service",
      "score": {
        "operational_maturity": 7.0,
        "data_governance": 7.5,
        "regional_deployment_control": 3.0,
        "serving_flexibility": 4.5,
        "api_interoperability": 6.5,
        "traffic_resilience": 6.0,
        "customization_lifecycle": 5.0,
        "documentation_transparency": 8.0,
        "overall": 5.94
      },
      "terms": {
        "kind": "web_terms",
        "label": "TypeSafe Master Customer Agreement",
        "url": "https://typesafe.ai/legal/mca",
        "verified_at": "2026-10-12"
      },
      "evidence": [
        {
          "kind": "web",
          "label": "API reference",
          "url": "https://docs.typesafe.ai/api.md",
          "verified_at": "2026-10-12"
        },
        {
          "kind": "web",
          "label": "Enterprise data handling",
          "url": "https://typesafe.ai/enterprise",
          "verified_at": "2026-10-12"
        },
        {
          "kind": "web",
          "label": "Master Customer Agreement",
          "url": "https://typesafe.ai/legal/mca",
          "verified_at": "2026-10-12"
        },
        {
          "kind": "web",
          "label": "Privacy policy",
          "url": "https://typesafe.ai/legal/privacy-policy",
          "verified_at": "2026-10-12"
        },
        {
          "kind": "web",
          "label": "Data Processing Agreement",
          "url": "https://typesafe.ai/legal/data-processing",
          "verified_at": "2026-10-12"
        }
      ],
      "verified_at": "2026-10-12",
      "trust": {
        "verified_at": "2026-10-12",
        "properties": {
          "response_integrity": {
            "status": "undocumented",
            "note": "The reference documents answers, probabilities, confidence, and usage per request, but no signature, attestation, or equivalent mechanism tying an answer back to the model run appears on the reviewed pages.",
            "url": "https://docs.typesafe.ai/api.md",
            "scope": "TypeSafe API reference, for the TypeSafe API",
            "verified_at": "2026-10-12"
          },
          "upstream_disclosure": {
            "status": "documented_yes",
            "note": "The reference names the serving model directly: 'The model that handles the request. Use \"jev-latest\", TypeSafe's flagship model.' The model is first-party Jev, and no subprocessor is named on the reviewed pages.",
            "url": "https://docs.typesafe.ai/api.md",
            "scope": "TypeSafe API reference, for the TypeSafe API",
            "verified_at": "2026-10-12"
          },
          "credential_handling": {
            "status": "documented_yes",
            "note": "The reference authenticates with 'Authorization: Bearer <API_KEY>' and returns 401 Unauthorized for a missing or invalid key.",
            "url": "https://docs.typesafe.ai/api.md",
            "scope": "TypeSafe API reference, for the TypeSafe API",
            "verified_at": "2026-10-12"
          },
          "cache_isolation": {
            "status": "undocumented",
            "note": "No per-customer isolation, tenancy, or cache-separation statement appears on the reviewed documentation, terms, or policy pages.",
            "url": "https://docs.typesafe.ai/api.md",
            "scope": "TypeSafe API reference and legal pages, for the TypeSafe API",
            "verified_at": "2026-10-12"
          },
          "vulnerability_disclosure": {
            "status": "undocumented",
            "note": "No security contact, disclosure process, or coordinated-vulnerability policy appears on the reviewed pages; the SOC 2 report lives behind a request-gated Trust Center.",
            "url": "https://typesafe.ai/enterprise",
            "scope": "TypeSafe enterprise page, for the TypeSafe API",
            "verified_at": "2026-10-12"
          },
          "independent_audit": {
            "status": "documented_yes",
            "note": "The enterprise page states SOC 2 Type II and invites report access through the Trust Center: 'Visit our Trust Center to request access to the SOC 2 Type II report.' The report itself is request-gated, not public.",
            "url": "https://typesafe.ai/enterprise",
            "scope": "TypeSafe enterprise page, for the TypeSafe API",
            "verified_at": "2026-10-12"
          }
        },
        "findings": []
      }
    },
    {
      "id": "seekrflow-api",
      "name": "SeekrFlow API",
      "operator": "Seekr Technologies",
      "service_type": "direct_model_api",
      "url": "https://docs.seekr.com/flow/reference/route_chat_completion_v1_inference_chat_completions_post",
      "description": "Seekr's managed inference surface on flow.seekr.com: one OpenAPI-documented REST API serving chat completions, completions, embeddings, audio transcription, and batch inference jobs against customer deployments of catalog models on dedicated compute, with per-request API-key auth. Reviewed by automation under ADR 055 with human spot-checks; verify against the cited evidence.",
      "service_boundary": "Represents the SeekrFlow inference API at flow.seekr.com, not the SeekrFlow development platform (agents, data engine, fine-tuning, deployments UI), the Python and JavaScript SDKs, or the seekrflow agent runtime record.",
      "delivery_modes": [
        "dedicated_endpoint",
        "batch"
      ],
      "model_sources": [
        "customer_supplied"
      ],
      "api_styles": [
        "service_native"
      ],
      "regional_controls": "The reviewed reference exposes one global base URL and no customer-selected inference region.",
      "retention_controls": "The reviewed terms and privacy pages state no request-data retention period, no training-use commitment, and no zero-retention option.",
      "routing": "Customers address their own deployments on the single Seekr endpoint and select the model per request; the API routes no request to an external provider.",
      "customization": "Customers fine-tune (instruction, GRPO, context-grounded) and deploy their own checkpoints to dedicated endpoints; the reviewed pages document no shared multi-tenant serving tier.",
      "strengths": [
        "Full OpenAPI reference with per-operation pages, batch inference jobs with queue and status, and health endpoints.",
        "Deployments provision dedicated compute per model with pause and delete lifecycle.",
        "Model catalog reports identifier, type, country of origin, and inference availability per model."
      ],
      "tradeoffs": [
        "Customer deployments only: no shared serving tier, no regions, no training-use or retention commitments found on the reviewed pages.",
        "Inference serves what the customer deploys; catalog breadth beyond the deployment model is not established.",
        "No public vulnerability-disclosure process and no published audit found on the reviewed pages."
      ],
      "score_profile": "inference_service",
      "score": {
        "operational_maturity": 7.5,
        "data_governance": 5.0,
        "regional_deployment_control": 3.0,
        "serving_flexibility": 6.5,
        "api_interoperability": 6.0,
        "traffic_resilience": 6.5,
        "customization_lifecycle": 7.5,
        "documentation_transparency": 8.0,
        "overall": 6.04
      },
      "terms": {
        "kind": "web_terms",
        "label": "Seekr Terms and Conditions",
        "url": "https://www.seekr.com/terms-conditions/",
        "verified_at": "2026-10-12"
      },
      "evidence": [
        {
          "kind": "web",
          "label": "Chat completion reference",
          "url": "https://docs.seekr.com/flow/reference/route_chat_completion_v1_inference_chat_completions_post",
          "verified_at": "2026-10-12"
        },
        {
          "kind": "web",
          "label": "Models catalog",
          "url": "https://docs.seekr.com/flow/components/models",
          "verified_at": "2026-10-12"
        },
        {
          "kind": "web",
          "label": "Deployments",
          "url": "https://docs.seekr.com/flow/components/deployments",
          "verified_at": "2026-10-12"
        },
        {
          "kind": "web",
          "label": "What is SeekrFlow",
          "url": "https://docs.seekr.com/flow/what-is-seekrflow",
          "verified_at": "2026-10-12"
        },
        {
          "kind": "web",
          "label": "Terms and Conditions",
          "url": "https://www.seekr.com/terms-conditions/",
          "verified_at": "2026-10-12"
        },
        {
          "kind": "web",
          "label": "Privacy policy",
          "url": "https://www.seekr.com/privacy-policy/",
          "verified_at": "2026-10-12"
        }
      ],
      "verified_at": "2026-10-12",
      "trust": {
        "verified_at": "2026-10-12",
        "properties": {
          "response_integrity": {
            "status": "undocumented",
            "note": "The reference documents answers with confidence and token usage per request, but no signature, attestation, or equivalent mechanism tying a result back to the model run appears on the reviewed pages.",
            "url": "https://docs.seekr.com/flow/reference/route_chat_completion_v1_inference_chat_completions_post",
            "scope": "SeekrFlow API reference, for the SeekrFlow API",
            "verified_at": "2026-10-12"
          },
          "upstream_disclosure": {
            "status": "documented_yes",
            "note": "The caller names the deployed model per request, and the model catalog reports each model's identifier, type, and country of origin; no subprocessor is named on the reviewed pages.",
            "url": "https://docs.seekr.com/flow/components/models",
            "scope": "SeekrFlow model catalog, for the SeekrFlow API",
            "verified_at": "2026-10-12"
          },
          "credential_handling": {
            "status": "documented_yes",
            "note": "The reference authenticates with a Seekr API key sent in the Authorization header with no Bearer prefix.",
            "url": "https://docs.seekr.com/flow/reference/route_chat_completion_v1_inference_chat_completions_post",
            "scope": "SeekrFlow API reference, for the SeekrFlow API",
            "verified_at": "2026-10-12"
          },
          "cache_isolation": {
            "status": "undocumented",
            "note": "No per-customer isolation, tenancy, or cache-separation statement appears on the reviewed documentation, terms, or policy pages.",
            "url": "https://docs.seekr.com/flow/components/deployments",
            "scope": "SeekrFlow documentation and legal pages, for the SeekrFlow API",
            "verified_at": "2026-10-12"
          },
          "vulnerability_disclosure": {
            "status": "undocumented",
            "note": "No security contact, disclosure process, or coordinated-vulnerability policy appears on the reviewed pages.",
            "url": "https://docs.seekr.com/flow/what-is-seekrflow",
            "scope": "SeekrFlow documentation and site pages, for the SeekrFlow API",
            "verified_at": "2026-10-12"
          },
          "independent_audit": {
            "status": "undocumented",
            "note": "No audit report, attestation, or compliance certification appears on the reviewed pages.",
            "url": "https://docs.seekr.com/flow/what-is-seekrflow",
            "scope": "SeekrFlow documentation and site pages, for the SeekrFlow API",
            "verified_at": "2026-10-12"
          }
        },
        "findings": []
      }
    }
  ],
  "generated_at": "2026-09-01"
}
