FrootAI — AmpliFAI your AI Ecosystem Get Started

Skip to schema list

Schemas

/schemas

Machine-readable JSON Schema contracts that define every data shape in the FrootAI pipeline. CC0-licensed for maximum adoption — validate your own pipelines against our schemas.

Harvest schemas

7

Verified schemas

5

Published

2

Harvest Engine Schemas

7 schemas defining the data contracts across the 7-stage Harvest pipeline (S1 Discover → S7 Customize) plus the WAF compliance report.

S1 Discovercoming soon

Discover Record

v1.0.0 · [H1] · CC0-1.0 · Draft 2020-12

H1 Discover stage

Persistence shape for the output of the Discover stage — validated repo metadata, license, upstream commit SHA, and provenance.

discover-record.v1.json
Use this schema
Node — ajv
import Ajv2020 from "ajv/dist/2020";

const ajv = new Ajv2020();
const schema = await fetch("https://frootai.dev/schemas/discover-record.v1.json").then(r => r.json());
const validate = ajv.compile(schema);

const data = { /* your Discover Record data */ };
if (validate(data)) {
  console.log("Valid Discover Record");
} else {
  console.error(validate.errors);
}
Python — jsonschema
import httpx, jsonschema

schema = httpx.get("https://frootai.dev/schemas/discover-record.v1.json").json()
data = { ... }  # your Discover Record data
jsonschema.validate(data, schema)
print("Valid Discover Record")
Version history (1)
v1.0.02026-06-04

Initial release — H1 Discover stage output shape. Validated by Ajv2020 in-loop before persistence.

S2 Fetchcoming soon

Fetch Record

v1.0.0 · [H2] · CC0-1.0 · Draft 2020-12

H2 Fetch stage

File tree enumeration, well-known surface classification, scrubbed file contents, and clone metadata from the Fetch stage.

fetch-record.v1.json
Use this schema
Node — ajv
import Ajv2020 from "ajv/dist/2020";

const ajv = new Ajv2020();
const schema = await fetch("https://frootai.dev/schemas/fetch-record.v1.json").then(r => r.json());
const validate = ajv.compile(schema);

const data = { /* your Fetch Record data */ };
if (validate(data)) {
  console.log("Valid Fetch Record");
} else {
  console.error(validate.errors);
}
Python — jsonschema
import httpx, jsonschema

schema = httpx.get("https://frootai.dev/schemas/fetch-record.v1.json").json()
data = { ... }  # your Fetch Record data
jsonschema.validate(data, schema)
print("Valid Fetch Record")
Version history (1)
v1.0.02026-06-04

Initial release — H2 Fetch stage output shape. File tree enumeration, surface classification, scrubbed content.

S3 Extractcoming soon

RepoFacts

v1.0.0 · [H3] · CC0-1.0 · Draft 2020-12

H3 Extract stage

Deterministic, typed extraction surface — architecture, services, regions, models, dependencies. All downstream stages ground claims on values from this shape.

repo-facts.v1.json
Use this schema
Node — ajv
import Ajv2020 from "ajv/dist/2020";

const ajv = new Ajv2020();
const schema = await fetch("https://frootai.dev/schemas/repo-facts.v1.json").then(r => r.json());
const validate = ajv.compile(schema);

const data = { /* your RepoFacts data */ };
if (validate(data)) {
  console.log("Valid RepoFacts");
} else {
  console.error(validate.errors);
}
Python — jsonschema
import httpx, jsonschema

schema = httpx.get("https://frootai.dev/schemas/repo-facts.v1.json").json()
data = { ... }  # your RepoFacts data
jsonschema.validate(data, schema)
print("Valid RepoFacts")
Version history (1)
v1.0.02026-06-04

Initial release — H3 Extract stage output. 30 derivers (H3.1–H3.30). Per-field provenance and confidence baked in.

S4 Retrievecoming soon

Retrieval Record

v1.0.0 · [H4] · CC0-1.0 · Draft 2020-12

H4 Retrieve stage

Top-K nearest reference plays and top-N nearest primitives that condition the scaffolding LLM in stage S5.

retrieval-record.v1.json
Use this schema
Node — ajv
import Ajv2020 from "ajv/dist/2020";

const ajv = new Ajv2020();
const schema = await fetch("https://frootai.dev/schemas/retrieval-record.v1.json").then(r => r.json());
const validate = ajv.compile(schema);

const data = { /* your Retrieval Record data */ };
if (validate(data)) {
  console.log("Valid Retrieval Record");
} else {
  console.error(validate.errors);
}
Python — jsonschema
import httpx, jsonschema

schema = httpx.get("https://frootai.dev/schemas/retrieval-record.v1.json").json()
data = { ... }  # your Retrieval Record data
jsonschema.validate(data, schema)
print("Valid Retrieval Record")
Version history (1)
v1.0.02026-06-04

Initial release — H4 Retrieve stage output. Top-K nearest plays + top-N nearest primitives.

S5 Scaffoldpublished

FAI Manifest v2

v2.0.0 · [H0.3] · CC0-1.0 · Draft 2020-12

H5 Scaffold stage

Solution Play manifest with Harvest provenance extension — harvested_from, pipeline_version, LLM steps, policy overlay, composition, and confidence aggregate.

sha256: 0f09619b564bed4f

19.9 KB

Use this schema
Node — ajv
import Ajv2020 from "ajv/dist/2020";

const ajv = new Ajv2020();
const schema = await fetch("https://frootai.dev/schemas/fai-manifest.v2.json").then(r => r.json());
const validate = ajv.compile(schema);

const data = { /* your FAI Manifest v2 data */ };
if (validate(data)) {
  console.log("Valid FAI Manifest v2");
} else {
  console.error(validate.errors);
}
Python — jsonschema
import httpx, jsonschema

schema = httpx.get("https://frootai.dev/schemas/fai-manifest.v2.json").json()
data = { ... }  # your FAI Manifest v2 data
jsonschema.validate(data, schema)
print("Valid FAI Manifest v2")
Version history (2)
v2.0.02026-06-04breaking

Major bump from v1 (Draft-07) to v2 (Draft 2020-12). Added provenance block: harvested_from, pipeline_version, llm_steps, policy_overlay, composition, confidence_aggregate. Provenance optional at v2.0.0 for non-breaking v1 migration.

v1.0.02026-05-24

Initial release — Solution Play manifest schema. JSON Schema Draft-07. 101 existing plays reference this version.

S7 Customizepublished

Policy Overlay v1

v1.0.0 · [H0.4] · CC0-1.0 · Draft 2020-12

H7 Customize stage

Regional, SKU, network, RBAC, identity, IaC, encryption, observability, and cost guardrails applied to Harvest-emitted plays.

sha256: 74d1416c2af03984

12.9 KB

Use this schema
Node — ajv
import Ajv2020 from "ajv/dist/2020";

const ajv = new Ajv2020();
const schema = await fetch("https://frootai.dev/schemas/policy-overlay.v1.json").then(r => r.json());
const validate = ajv.compile(schema);

const data = { /* your Policy Overlay v1 data */ };
if (validate(data)) {
  console.log("Valid Policy Overlay v1");
} else {
  console.error(validate.errors);
}
Python — jsonschema
import httpx, jsonschema

schema = httpx.get("https://frootai.dev/schemas/policy-overlay.v1.json").json()
data = { ... }  # your Policy Overlay v1 data
jsonschema.validate(data, schema)
print("Valid Policy Overlay v1")
Version history (1)
v1.0.02026-06-04

Initial release — regional, SKU, network, RBAC, identity, IaC, encryption, observability, and cost guardrails. Frozen enums — extending requires a major bump.

V1 WAF/CAFcoming soon

WAF Report

v1.0.0 · [V1] · CC0-1.0 · Draft 2020-12

V1 WAF/CAF component

Aggregated WAF compliance report — per-pillar scores, weighted aggregate, check-level pass/fail detail. Null-safe scoring for pillars with zero applicable checks.

Use this schema
Node — ajv
import Ajv2020 from "ajv/dist/2020";

const ajv = new Ajv2020();
const schema = await fetch("https://frootai.dev/schemas/waf-report.v1.json").then(r => r.json());
const validate = ajv.compile(schema);

const data = { /* your WAF Report data */ };
if (validate(data)) {
  console.log("Valid WAF Report");
} else {
  console.error(validate.errors);
}
Python — jsonschema
import httpx, jsonschema

schema = httpx.get("https://frootai.dev/schemas/waf-report.v1.json").json()
data = { ... }  # your WAF Report data
jsonschema.validate(data, schema)
print("Valid WAF Report")
Version history (1)
v1.0.02026-06-04

Initial release — WAF compliance report. Per-pillar scores (5 WAF pillars), weighted aggregate, check-level detail. Sealed at V1.17.