manifest_version
The version of this format. Always 0 today.
- manifest_version
RuleThe number 0
WhyIf the format changes incompatibly this number rises, and older manifests stay readable.
MARKETPLACE · OPEN STANDARD
Every System on the Fintery Marketplace ships a manifest: how it boots, which personal data it stores, which AI it calls and how it was made. The format is open, published as a JSON Schema, and any builder can write one today.
checked, not claimed
Why a manifest
A manifest makes claims that can be checked. The Fintery Auditor boots the archive with the declared compose file, compares the data map with the real schema, and rejects dated model ids. Anything the manifest states that is not true becomes a finding in the published audit.
Reference
Every section is required. Empty lists are allowed where a System simply has nothing to declare.
The version of this format. Always 0 today.
RuleThe number 0
WhyIf the format changes incompatibly this number rises, and older manifests stay readable.
What the System is and the licence it is sold under.
RuleLowercase kebab-case, for example strategy-dashboard
WhyBecomes the listing URL.
RuleAt least two characters
WhyThe name buyers see.
RuleSemver MAJOR.MINOR.PATCH, no leading v
WhyEvery audit covers exactly one version. A new archive needs a new number.
RuleOne of: sales, hr-hiring, finance, operations, marketing, analytics, legal-compliance
WhyFiles the System under the job it does.
RuleA licence identifier, for example fintery-perpetual-v1
WhyBuyers should know what they will own before they pay.
How the System boots. Docker Compose is the only target, so every System boots the same way.
Rule"docker-compose"
WhyThe Auditor boots every archive with docker compose up and checks that it answers.
RulePath to the compose file inside the archive
WhySo nobody has to guess which file is meant.
Rulename in UPPER_SNAKE_CASE, required as true or false, a non empty description
WhyEvery variable the System reads is explained. An undeclared required variable is a finding.
Which personal data the System stores, why, and for how long. The basis for the GDPR record and the DPA.
Rulefield, purpose and retention, each non empty. An empty list is allowed.
WhyThe audit reads the database schema and compares. A field the code writes and the list leaves out counts as a finding.
Which AI the System calls. Transparency in the spirit of the EU AI Act.
Rulename, and optionally protocol with the value mcp
WhyAgents the System exposes are discoverable instead of hidden.
RuleAlias ids such as claude-sonnet-4-6. Dated snapshots ending in -YYYYMMDD are rejected.
WhyDated snapshots get retired, and a System you bought should not stop on a date nobody wrote down.
How the System was made.
Ruletrue / false
WhyAI written code is welcome. Hiding it is not.
RuleTools used, for example claude-code
WhyBuyers see what it was built with.
Ruletrue / false
WhyWhether a person read the code before it is sold.
How to see the System with sample data.
RuleOne command, non empty
WhyThe Auditor and every buyer should see something real within minutes, not an empty screen.
Example
Shortened from the manifest inside the Landing + AI Concierge Kit 1.0.2 archive. It passes the same check every submission passes.
{
"$schema": "https://fintery.com/marketplace/fintery.schema.json",
"manifest_version": 0,
"system": {
"slug": "landing-concierge-kit",
"name": "Landing + AI Concierge Kit",
"version": "1.0.2",
"category": "marketing",
"license": "fintery-perpetual-v1"
},
"runtime": {
"target": "docker-compose",
"compose_file": "docker-compose.yml",
"env": [
{
"name": "CONTACT_WEBHOOK_URL",
"required": false,
"description": "Where contact form submissions are forwarded."
},
{
"name": "OPENAI_API_KEY",
"required": false,
"description": "Enables the AI concierge. Without it the concierge falls back to scripted answers."
},
{
"name": "NEXT_PUBLIC_SITE_URL",
"required": false,
"description": "Public URL of the site, used for canonical links."
}
]
},
"data_map": {
"personal_data": [
{
"field": "email (contact form)",
"purpose": "Lead capture: lets you respond to the inquiry",
"retention": "Forwarded to your CONTACT_WEBHOOK_URL, not stored by the kit"
},
{
"field": "concierge chat messages",
"purpose": "Answering visitor questions and turn by turn lead qualification",
"retention": "Processed in memory per request; not stored by the kit"
}
]
},
"ai_surface": {
"agents": [],
"models": [
"gpt-4.1-mini"
]
},
"provenance": {
"ai_generated": true,
"tools": [
"claude-code"
],
"human_reviewed": true
},
"demo": {
"seed_command": "npm ci && npm run dev"
}
}Check it yourself
The schema follows JSON Schema draft 2020-12 and works with any common validator and with editors that understand $schema. The one rule a schema cannot fully express is still in it as a pattern: model ids must not end in a date.
https://fintery.com/marketplace/fintery.schema.json
Next step
Founding builders pay a 0% take rate, and the IP stays theirs. The audit is the gate, not the invitation.