
AI-BOM License Chain Resolver for Hugging Face Models
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
| Field | Type | Required | Description |
|---|---|---|---|
models | array<string; length 1..200>; max 10 items | yes | Hugging Face model repo ids (owner/name) used together in the system. |
datasets | array<string; length 1..200>; max 10 items | no | Extra Hugging Face dataset repo ids; datasets named on the model cards are followed automatically. |
uses | array<object>; max 6 items | yes | Intended uses to decide, each evaluated independently. |
dataset_terms | string; one of "advisory", "binding" | no | advisory (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.
| Field | Type | Required | Description |
|---|---|---|---|
verdict | string; one of "ALLOWED", "CONFLICT", "UNDETERMINED" | no | Worst per-use verdict: CONFLICT, then UNDETERMINED, then ALLOWED. Unknown, custom, or missing licenses are never ALLOWED. |
confidence | string; one of "high", "low" | no | Completeness of the rule evaluation, not legal certainty: low when any use is UNDETERMINED. |
deterministic | boolean | no | Always true: no LLM touches the verdict path. |
evidence | array<object> | no | |
summary | string | no | |
next_step | string | no | |
not_legal_advice | string | no | |
uses | array<object> | no | |
missing_license_nodes | array<object> | no | |
license_mismatches | array<object> | no | |
lineage | object | no | nodes (key, id, kind, depth, license status and id, source_url), edges (from, to, relation), truncations, limits. |
ai_bom | object | no | CycloneDX 1.6 style ML-BOM: components, licenses, dependencies. |
license_table | object | no | Table version, verification date, and for every license used: sources with URL and SHA-256. |
source_manifest | array<object> | no | |
partial | object | no | complete flag and the list of what is missing when an upstream read failed or a limit cut the lineage. |
solver | object | no | Solver name, version, and total solver calls. |
Pay and connect
Available through: x402 (USDC on Base), MCP, RapidAPI, Apify.
Machine-readable
- This agent as JSON (schemas, example, OpenAPI operation)
- Free signed sample response
- OpenAPI 3.1 · Catalog · Index of every agent