Code and supply chain security logo

AI-BOM License Chain Resolver for Hugging Face Models

$0.50 USDC per call · Developer and security · POST /api/v1/ai-bom-license-resolver · Id ai-bom-license-resolver

Walks the Hugging Face lineage of up to 10 models (base_model chain, training datasets; at most 30 nodes, 4 generations) and applies a curated, hash-pinned table of license clauses (Apache-2.0, MIT, CC-BY, CC-BY-NC, CC-BY-SA, OpenRAIL variants, Llama 2 / 3 / 3.1 / 3.2 / 3.3, Gemma, Mistral Research License) to each intended use: commercial or not, API, weights or on-prem, fine-tuning, monthly active users, jurisdiction, sensitive fields of use. Per use it returns ALLOWED, CONFLICT or UNDETERMINED with the conflicting nodes, the clause, a verbatim quote, and the license source URL and SHA-256; the unsatisfiable core comes from the hub's deterministic SAT/LRA solver, with no LLM. Unknown, custom, missing or unreadable licenses are UNDETERMINED, never ALLOWED. Not legal advice.

What you get

Tells you whether a model stack may be used for your stated use, names the conflicting model and clause, and ships a CycloneDX-style AI-BOM.

Call it

Send the JSON body below to https://agents.writerslogic.com/api/v1/ai-bom-license-resolver. An unpaid request answers 402 with the price and how to pay; a request that fails with a 5xx status is not charged.

curl -i -X POST https://agents.writerslogic.com/api/v1/ai-bom-license-resolver \
  -H 'content-type: application/json' \
  -d '{"models":["NousResearch/Hermes-3-Llama-3.1-8B","mistralai/Mistral-7B-Instruct-v0.2"],"uses":[{"id":"api-above-700m-mau","commercial":true,"distribution":"api","monthly_active_users":800000000},{"id":"api-below-700m-mau","commercial":true,"distribution":"api","monthly_active_users":50000000}]}'

Input

FieldTypeRequiredDescription
modelsarray<string; length 1..200>; max 10 itemsyesHugging Face model repo ids (owner/name) used together in the system.
datasetsarray<string; length 1..200>; max 10 itemsnoExtra Hugging Face dataset repo ids; datasets named on the model cards are followed automatically.
usesarray<object>; max 6 itemsyesIntended uses to decide, each evaluated independently.
dataset_termsstring; one of "advisory", "binding"noadvisory (default): a dataset license restriction yields UNDETERMINED because it is unsettled whether it binds trained weights. binding: treat it as binding and report CONFLICT.

Example request body

{
  "models": [
    "NousResearch/Hermes-3-Llama-3.1-8B",
    "mistralai/Mistral-7B-Instruct-v0.2"
  ],
  "uses": [
    {
      "id": "api-above-700m-mau",
      "commercial": true,
      "distribution": "api",
      "monthly_active_users": 800000000
    },
    {
      "id": "api-below-700m-mau",
      "commercial": true,
      "distribution": "api",
      "monthly_active_users": 50000000
    }
  ]
}

Result

The response is { "data": ..., "_provenance": ... }. data carries these fields; _provenance is a signed W3C Verifiable Credential with a C2PA-style manifest, checked free at POST /api/v1/verify-provenance.

FieldTypeRequiredDescription
verdictstring; one of "ALLOWED", "CONFLICT", "UNDETERMINED"noWorst per-use verdict: CONFLICT, then UNDETERMINED, then ALLOWED. Unknown, custom, or missing licenses are never ALLOWED.
confidencestring; one of "high", "low"noCompleteness of the rule evaluation, not legal certainty: low when any use is UNDETERMINED.
deterministicbooleannoAlways true: no LLM touches the verdict path.
evidencearray<object>no
summarystringno
next_stepstringno
not_legal_advicestringno
usesarray<object>no
missing_license_nodesarray<object>no
license_mismatchesarray<object>no
lineageobjectnonodes (key, id, kind, depth, license status and id, source_url), edges (from, to, relation), truncations, limits.
ai_bomobjectnoCycloneDX 1.6 style ML-BOM: components, licenses, dependencies.
license_tableobjectnoTable version, verification date, and for every license used: sources with URL and SHA-256.
source_manifestarray<object>no
partialobjectnocomplete flag and the list of what is missing when an upstream read failed or a limit cut the lineage.
solverobjectnoSolver name, version, and total solver calls.

Pay and connect

Available through: x402 (USDC on Base), MCP, RapidAPI, Apify.

Machine-readable