import { FoodBlock } from "@foodx/sdk";import { createHash } from "crypto"; const client = new FoodBlock({ apiKey: process.env.FOODX_API_KEY, baseURL: "https://api.foodx.world/api/v1",}); // Create a product listingconst block = FoodBlock.create("substance.product", { name: "Organic Tomatoes", price: 350, currency: "GBP", organic: true, category: "vegetables",}, { seller: "a3f8c2d1e9b7a4f5c8d2e1b9a7f5c2d1" }); // Place an orderconst order = FoodBlock.create("transfer.order", { amount: 700, status: "pending", items: [{ product: block.hash, qty: 2 }],}, { from: buyer.hash, to: seller.hash }); // Leave a reviewconst review = FoodBlock.create("observe.review", { score: 4.8, text: "Best tomatoes in Kent — perfectly ripe, great flavour",}, { subject: block.hash, author: buyer.hash }); // POST a block to the networkawait fetch("/api/v1/foodblock", { method: "POST", headers: { "Authorization": `Bearer ${apiKey}`, "Content-Type": "application/json", }, body: JSON.stringify({ type, state, refs }),}); // Query the feedconst feed = await fetch("/api/v1/foodblock/feed?limit=20&lat=51.09&lng=-0.71");const { blocks, total, next_cursor } = await feed.json(); // Trace provenanceconst provenance = await fetch(`/api/v1/foodblock/${hash}/provenance`);const { chain } = await provenance.json(); // Register a sellerconst actor = FoodBlock.create("actor.seller", { name: "Kent Farm", type: "producer", status: "live", lat: 51.09, lng: -0.71, bio: "Family farm since 1987",}, { place: venue.hash }); // Share a recipeconst recipe = FoodBlock.create("transform.recipe", { title: "Tomato Bruschetta", serves: 4, prep_time: "10min", cook_time: "5min", ingredients: ["tomatoes", "basil", "bread", "garlic", "olive oil"], steps: ["Dice tomatoes", "Toast bread", "Rub garlic", "Assemble"],}, { author: chef.hash }); // Rescue surplus foodconst surplus = FoodBlock.create("substance.surplus", { name: "Sourdough loaves", quantity: "12", expires: "2025-03-18T23:00:00Z", price: 0,}, { seller: bakery.hash, place: venue.hash }); // Subscribe to eventsconst webhook = await fetch("/api/v1/webhooks", { method: "POST", body: JSON.stringify({ url: "https://myapp.com/hook", events: ["order.created", "review.created", "block.updated"], }),}); // Check trust scoresconst trust = await fetch(`/api/v1/trust/${actorHash}`);const { avg_score, review_count } = await trust.json();if (avg_score > 4.5) badge.assign("trusted-seller", actorHash); // Register an AI agentagent.register({ capabilities: ["substance.product", "transfer.order"], max_amount: 500, rate_limit: 60, auto_approve: true,}); // Create a venueconst venue = FoodBlock.create("place.venue", { name: "The Golden Fork", lat: 51.509, lng: -0.118, category: "restaurant", capacity: 45,}, { operator: owner.hash }); // Express intent to buyconst intent = FoodBlock.create("observe.intent", { product_name: "Sourdough", quantity: "6 loaves", deadline: "2025-03-19T09:00:00Z",}, { author: buyer.hash }); // Certify organicconst cert = FoodBlock.create("observe.certification", { standard: "organic", issuer: "Soil Association", valid_until: "2026-01-01",}, { subject: farm.hash, authority: inspector.hash }); // Direct messagingconst conversation = FoodBlock.create("observe.conversation", { title: "Order #4821",}, { participants: [buyer.hash, seller.hash] }); const message = FoodBlock.create("transfer.message", { content: "Is the sourdough still available?",}, { conversation: convo.hash, author: buyer.hash }); // Track a shipmentconst dispatch = FoodBlock.create("transfer.dispatch", { item: "Wheat flour - 500kg", status: "dispatched", vehicle: "LK71 ABX",}, { from: factory.hash, to: bakery.hash }); // hash = SHA-256(canonical(type + state + refs))// Append-only. Immutable. Content-addressed. Sovereign.import { FoodBlock } from "@foodx/sdk";import { createHash } from "crypto"; const client = new FoodBlock({ apiKey: process.env.FOODX_API_KEY, baseURL: "https://api.foodx.world/api/v1",}); // Create a product listingconst block = FoodBlock.create("substance.product", { name: "Organic Tomatoes", price: 350, currency: "GBP", organic: true, category: "vegetables",}, { seller: "a3f8c2d1e9b7a4f5c8d2e1b9a7f5c2d1" }); // Place an orderconst order = FoodBlock.create("transfer.order", { amount: 700, status: "pending", items: [{ product: block.hash, qty: 2 }],}, { from: buyer.hash, to: seller.hash }); // Leave a reviewconst review = FoodBlock.create("observe.review", { score: 4.8, text: "Best tomatoes in Kent — perfectly ripe, great flavour",}, { subject: block.hash, author: buyer.hash }); // POST a block to the networkawait fetch("/api/v1/foodblock", { method: "POST", headers: { "Authorization": `Bearer ${apiKey}`, "Content-Type": "application/json", }, body: JSON.stringify({ type, state, refs }),}); // Query the feedconst feed = await fetch("/api/v1/foodblock/feed?limit=20&lat=51.09&lng=-0.71");const { blocks, total, next_cursor } = await feed.json(); // Trace provenanceconst provenance = await fetch(`/api/v1/foodblock/${hash}/provenance`);const { chain } = await provenance.json(); // Register a sellerconst actor = FoodBlock.create("actor.seller", { name: "Kent Farm", type: "producer", status: "live", lat: 51.09, lng: -0.71, bio: "Family farm since 1987",}, { place: venue.hash }); // Share a recipeconst recipe = FoodBlock.create("transform.recipe", { title: "Tomato Bruschetta", serves: 4, prep_time: "10min", cook_time: "5min", ingredients: ["tomatoes", "basil", "bread", "garlic", "olive oil"], steps: ["Dice tomatoes", "Toast bread", "Rub garlic", "Assemble"],}, { author: chef.hash }); // Rescue surplus foodconst surplus = FoodBlock.create("substance.surplus", { name: "Sourdough loaves", quantity: "12", expires: "2025-03-18T23:00:00Z", price: 0,}, { seller: bakery.hash, place: venue.hash }); // Subscribe to eventsconst webhook = await fetch("/api/v1/webhooks", { method: "POST", body: JSON.stringify({ url: "https://myapp.com/hook", events: ["order.created", "review.created", "block.updated"], }),}); // Check trust scoresconst trust = await fetch(`/api/v1/trust/${actorHash}`);const { avg_score, review_count } = await trust.json();if (avg_score > 4.5) badge.assign("trusted-seller", actorHash); // Register an AI agentagent.register({ capabilities: ["substance.product", "transfer.order"], max_amount: 500, rate_limit: 60, auto_approve: true,}); // Create a venueconst venue = FoodBlock.create("place.venue", { name: "The Golden Fork", lat: 51.509, lng: -0.118, category: "restaurant", capacity: 45,}, { operator: owner.hash }); // Express intent to buyconst intent = FoodBlock.create("observe.intent", { product_name: "Sourdough", quantity: "6 loaves", deadline: "2025-03-19T09:00:00Z",}, { author: buyer.hash }); // Certify organicconst cert = FoodBlock.create("observe.certification", { standard: "organic", issuer: "Soil Association", valid_until: "2026-01-01",}, { subject: farm.hash, authority: inspector.hash }); // Direct messagingconst conversation = FoodBlock.create("observe.conversation", { title: "Order #4821",}, { participants: [buyer.hash, seller.hash] }); const message = FoodBlock.create("transfer.message", { content: "Is the sourdough still available?",}, { conversation: convo.hash, author: buyer.hash }); // Track a shipmentconst dispatch = FoodBlock.create("transfer.dispatch", { item: "Wheat flour - 500kg", status: "dispatched", vehicle: "LK71 ABX",}, { from: factory.hash, to: bakery.hash }); // hash = SHA-256(canonical(type + state + refs))// Append-only. Immutable. Content-addressed. Sovereign.
// POST a block to the networkawait fetch("/api/v1/foodblock", { method: "POST", headers: { "Authorization": `Bearer ${apiKey}`, "Content-Type": "application/json", }, body: JSON.stringify({ type, state, refs }),}); // Query the feedconst feed = await fetch("/api/v1/foodblock/feed?limit=20&lat=51.09&lng=-0.71");const { blocks, total, next_cursor } = await feed.json(); // Trace provenanceconst provenance = await fetch(`/api/v1/foodblock/${hash}/provenance`);const { chain } = await provenance.json(); // Register a sellerconst actor = FoodBlock.create("actor.seller", { name: "Kent Farm", type: "producer", status: "live", lat: 51.09, lng: -0.71, bio: "Family farm since 1987",}, { place: venue.hash }); // Share a recipeconst recipe = FoodBlock.create("transform.recipe", { title: "Tomato Bruschetta", serves: 4, prep_time: "10min", cook_time: "5min", ingredients: ["tomatoes", "basil", "bread", "garlic", "olive oil"], steps: ["Dice tomatoes", "Toast bread", "Rub garlic", "Assemble"],}, { author: chef.hash }); // Rescue surplus foodconst surplus = FoodBlock.create("substance.surplus", { name: "Sourdough loaves", quantity: "12", expires: "2025-03-18T23:00:00Z", price: 0,}, { seller: bakery.hash, place: venue.hash }); // Subscribe to eventsconst webhook = await fetch("/api/v1/webhooks", { method: "POST", body: JSON.stringify({ url: "https://myapp.com/hook", events: ["order.created", "review.created", "block.updated"], }),}); // Check trust scoresconst trust = await fetch(`/api/v1/trust/${actorHash}`);const { avg_score, review_count } = await trust.json();if (avg_score > 4.5) badge.assign("trusted-seller", actorHash); // Register an AI agentagent.register({ capabilities: ["substance.product", "transfer.order"], max_amount: 500, rate_limit: 60, auto_approve: true,}); // Create a venueconst venue = FoodBlock.create("place.venue", { name: "The Golden Fork", lat: 51.509, lng: -0.118, category: "restaurant", capacity: 45,}, { operator: owner.hash }); // Express intent to buyconst intent = FoodBlock.create("observe.intent", { product_name: "Sourdough", quantity: "6 loaves", deadline: "2025-03-19T09:00:00Z",}, { author: buyer.hash }); // Certify organicconst cert = FoodBlock.create("observe.certification", { standard: "organic", issuer: "Soil Association", valid_until: "2026-01-01",}, { subject: farm.hash, authority: inspector.hash }); // Direct messagingconst conversation = FoodBlock.create("observe.conversation", { title: "Order #4821",}, { participants: [buyer.hash, seller.hash] }); const message = FoodBlock.create("transfer.message", { content: "Is the sourdough still available?",}, { conversation: convo.hash, author: buyer.hash }); // Track a shipmentconst dispatch = FoodBlock.create("transfer.dispatch", { item: "Wheat flour - 500kg", status: "dispatched", vehicle: "LK71 ABX",}, { from: factory.hash, to: bakery.hash }); // hash = SHA-256(canonical(type + state + refs))// Append-only. Immutable. Content-addressed. Sovereign.import { FoodBlock } from "@foodx/sdk";import { createHash } from "crypto"; const client = new FoodBlock({ apiKey: process.env.FOODX_API_KEY, baseURL: "https://api.foodx.world/api/v1",}); // Create a product listingconst block = FoodBlock.create("substance.product", { name: "Organic Tomatoes", price: 350, currency: "GBP", organic: true, category: "vegetables",}, { seller: "a3f8c2d1e9b7a4f5c8d2e1b9a7f5c2d1" }); // Place an orderconst order = FoodBlock.create("transfer.order", { amount: 700, status: "pending", items: [{ product: block.hash, qty: 2 }],}, { from: buyer.hash, to: seller.hash }); // Leave a reviewconst review = FoodBlock.create("observe.review", { score: 4.8, text: "Best tomatoes in Kent — perfectly ripe, great flavour",}, { subject: block.hash, author: buyer.hash }); // POST a block to the networkawait fetch("/api/v1/foodblock", { method: "POST", headers: { "Authorization": `Bearer ${apiKey}`, "Content-Type": "application/json", }, body: JSON.stringify({ type, state, refs }),}); // Query the feedconst feed = await fetch("/api/v1/foodblock/feed?limit=20&lat=51.09&lng=-0.71");const { blocks, total, next_cursor } = await feed.json(); // Trace provenanceconst provenance = await fetch(`/api/v1/foodblock/${hash}/provenance`);const { chain } = await provenance.json(); // Register a sellerconst actor = FoodBlock.create("actor.seller", { name: "Kent Farm", type: "producer", status: "live", lat: 51.09, lng: -0.71, bio: "Family farm since 1987",}, { place: venue.hash }); // Share a recipeconst recipe = FoodBlock.create("transform.recipe", { title: "Tomato Bruschetta", serves: 4, prep_time: "10min", cook_time: "5min", ingredients: ["tomatoes", "basil", "bread", "garlic", "olive oil"], steps: ["Dice tomatoes", "Toast bread", "Rub garlic", "Assemble"],}, { author: chef.hash }); // Rescue surplus foodconst surplus = FoodBlock.create("substance.surplus", { name: "Sourdough loaves", quantity: "12", expires: "2025-03-18T23:00:00Z", price: 0,}, { seller: bakery.hash, place: venue.hash }); // Subscribe to eventsconst webhook = await fetch("/api/v1/webhooks", { method: "POST", body: JSON.stringify({ url: "https://myapp.com/hook", events: ["order.created", "review.created", "block.updated"], }),}); // Check trust scoresconst trust = await fetch(`/api/v1/trust/${actorHash}`);const { avg_score, review_count } = await trust.json();if (avg_score > 4.5) badge.assign("trusted-seller", actorHash); // Register an AI agentagent.register({ capabilities: ["substance.product", "transfer.order"], max_amount: 500, rate_limit: 60, auto_approve: true,}); // Create a venueconst venue = FoodBlock.create("place.venue", { name: "The Golden Fork", lat: 51.509, lng: -0.118, category: "restaurant", capacity: 45,}, { operator: owner.hash }); // Express intent to buyconst intent = FoodBlock.create("observe.intent", { product_name: "Sourdough", quantity: "6 loaves", deadline: "2025-03-19T09:00:00Z",}, { author: buyer.hash }); // Certify organicconst cert = FoodBlock.create("observe.certification", { standard: "organic", issuer: "Soil Association", valid_until: "2026-01-01",}, { subject: farm.hash, authority: inspector.hash }); // Direct messagingconst conversation = FoodBlock.create("observe.conversation", { title: "Order #4821",}, { participants: [buyer.hash, seller.hash] }); const message = FoodBlock.create("transfer.message", { content: "Is the sourdough still available?",}, { conversation: convo.hash, author: buyer.hash }); // Track a shipmentconst dispatch = FoodBlock.create("transfer.dispatch", { item: "Wheat flour - 500kg", status: "dispatched", vehicle: "LK71 ABX",}, { from: factory.hash, to: bakery.hash }); // hash = SHA-256(canonical(type + state + refs))// Append-only. Immutable. Content-addressed. Sovereign.import { FoodBlock } from "@foodx/sdk";import { createHash } from "crypto"; const client = new FoodBlock({ apiKey: process.env.FOODX_API_KEY, baseURL: "https://api.foodx.world/api/v1",}); // Create a product listingconst block = FoodBlock.create("substance.product", { name: "Organic Tomatoes", price: 350, currency: "GBP", organic: true, category: "vegetables",}, { seller: "a3f8c2d1e9b7a4f5c8d2e1b9a7f5c2d1" }); // Place an orderconst order = FoodBlock.create("transfer.order", { amount: 700, status: "pending", items: [{ product: block.hash, qty: 2 }],}, { from: buyer.hash, to: seller.hash }); // Leave a reviewconst review = FoodBlock.create("observe.review", { score: 4.8, text: "Best tomatoes in Kent — perfectly ripe, great flavour",}, { subject: block.hash, author: buyer.hash }); 
title: "Tomato Bruschetta", serves: 4, prep_time: "10min", cook_time: "5min", ingredients: ["tomatoes", "basil", "bread", "garlic", "olive oil"], steps: ["Dice tomatoes", "Toast bread", "Rub garlic", "Assemble"],}, { author: chef.hash }); // Rescue surplus foodconst surplus = FoodBlock.create("substance.surplus", { name: "Sourdough loaves", quantity: "12", expires: "2025-03-18T23:00:00Z", price: 0,}, { seller: bakery.hash, place: venue.hash }); // Subscribe to eventsconst webhook = await fetch("/api/v1/webhooks", { method: "POST", body: JSON.stringify({ url: "https://myapp.com/hook", events: ["order.created", "review.created", "block.updated"], }),}); // Check trust scoresconst trust = await fetch(`/api/v1/trust/${actorHash}`);const { avg_score, review_count } = await trust.json();if (avg_score > 4.5) badge.assign("trusted-seller", actorHash); // Register an AI agentagent.register({ capabilities: ["substance.product", "transfer.order"], max_amount: 500, rate_limit: 60, auto_approve: true,}); // Create a venueconst venue = FoodBlock.create("place.venue", { name: "The Golden Fork", lat: 51.509, lng: -0.118, category: "restaurant", capacity: 45,}, { operator: owner.hash }); // Express intent to buyconst intent = FoodBlock.create("observe.intent", { product_name: "Sourdough", quantity: "6 loaves", deadline: "2025-03-19T09:00:00Z",}, { author: buyer.hash }); // Certify organicconst cert = FoodBlock.create("observe.certification", { standard: "organic", issuer: "Soil Association", valid_until: "2026-01-01",}, { subject: farm.hash, authority: inspector.hash }); // Direct messagingconst conversation = FoodBlock.create("observe.conversation", { title: "Order #4821",}, { participants: [buyer.hash, seller.hash] }); const message = FoodBlock.create("transfer.message", { content: "Is the sourdough still available?",}, { conversation: convo.hash, author: buyer.hash }); // Track a shipmentconst dispatch = FoodBlock.create("transfer.dispatch", { item: "Wheat flour - 500kg", status: "dispatched", vehicle: "LK71 ABX",}, { from: factory.hash, to: bakery.hash }); // hash = SHA-256(canonical(type + state + refs))// Append-only. Immutable. Content-addressed. Sovereign.import { FoodBlock } from "@foodx/sdk";import { createHash } from "crypto"; const client = new FoodBlock({ apiKey: process.env.FOODX_API_KEY, baseURL: "https://api.foodx.world/api/v1",}); // Create a product listingconst block = FoodBlock.create("substance.product", { name: "Organic Tomatoes", price: 350, currency: "GBP", organic: true, category: "vegetables",}, { seller: "a3f8c2d1e9b7a4f5c8d2e1b9a7f5c2d1" }); // Place an orderconst order = FoodBlock.create("transfer.order", { amount: 700, status: "pending", items: [{ product: block.hash, qty: 2 }],}, { from: buyer.hash, to: seller.hash }); // Leave a reviewconst review = FoodBlock.create("observe.review", { score: 4.8, text: "Best tomatoes in Kent — perfectly ripe, great flavour",}, { subject: block.hash, author: buyer.hash }); // POST a block to the networkawait fetch("/api/v1/foodblock", { method: "POST", headers: { "Authorization": `Bearer ${apiKey}`, "Content-Type": "application/json", }, body: JSON.stringify({ type, state, refs }),}); // Query the feedconst feed = await fetch("/api/v1/foodblock/feed?limit=20&lat=51.09&lng=-0.71");const { blocks, total, next_cursor } = await feed.json(); // Trace provenanceconst provenance = await fetch(`/api/v1/foodblock/${hash}/provenance`);const { chain } = await provenance.json(); // Register a sellerconst actor = FoodBlock.create("actor.seller", { name: "Kent Farm", type: "producer", status: "live", lat: 51.09, lng: -0.71, bio: "Family farm since 1987",}, { place: venue.hash }); // Share a recipeconst recipe = FoodBlock.create("transform.recipe", { title: "Tomato Bruschetta", serves: 4, prep_time: "10min", cook_time: "5min", ingredients: ["tomatoes", "basil", "bread", "garlic", "olive oil"], steps: ["Dice tomatoes", "Toast bread", "Rub garlic", "Assemble"],}, { author: chef.hash }); // Rescue surplus foodconst surplus = FoodBlock.create("substance.surplus", { name: "Sourdough loaves", quantity: "12", expires: "2025-03-18T23:00:00Z", price: 0,}, { seller: bakery.hash, place: venue.hash }); // Subscribe to eventsconst webhook = await fetch("/api/v1/webhooks", { method: "POST", body: JSON.stringify({ url: "https://myapp.com/hook", events: ["order.created", "review.created", "block.updated"], }),}); // Check trust scoresconst trust = await fetch(`/api/v1/trust/${actorHash}`);const { avg_score, review_count } = await trust.json();if (avg_score > 4.5) badge.assign("trusted-seller", actorHash); // Register an AI agentagent.register({ capabilities: ["substance.product", "transfer.order"], max_amount: 500, rate_limit: 60, auto_approve: true,}); // Create a venueconst venue = FoodBlock.create("place.venue", { name: "The Golden Fork", lat: 51.509, lng: -0.118, category: "restaurant", capacity: 45,}, { operator: owner.hash }); // Express intent to buyconst intent = FoodBlock.create("observe.intent", { product_name: "Sourdough", quantity: "6 loaves", deadline: "2025-03-19T09:00:00Z",}, { author: buyer.hash }); // Certify organicconst cert = FoodBlock.create("observe.certification", { standard: "organic", issuer: "Soil Association", valid_until: "2026-01-01",}, { subject: farm.hash, authority: inspector.hash }); // Direct messagingconst conversation = FoodBlock.create("observe.conversation", { title: "Order #4821",}, { participants: [buyer.hash, seller.hash] }); const message = FoodBlock.create("transfer.message", { content: "Is the sourdough still available?",}, { conversation: convo.hash, author: buyer.hash }); // Track a shipmentconst dispatch = FoodBlock.create("transfer.dispatch", { item: "Wheat flour - 500kg", status: "dispatched", vehicle: "LK71 ABX",}, { from: factory.hash, to: bakery.hash }); // hash = SHA-256(canonical(type + state + refs))// Append-only. Immutable. Content-addressed. Sovereign.import { FoodBlock } from "@foodx/sdk";import { createHash } from "crypto"; const client = new FoodBlock({ apiKey: process.env.FOODX_API_KEY, baseURL: "https://api.foodx.world/api/v1",}); // Create a product listingconst block = FoodBlock.create("substance.product", { name: "Organic Tomatoes", price: 350, currency: "GBP", organic: true, category: "vegetables",}, { seller: "a3f8c2d1e9b7a4f5c8d2e1b9a7f5c2d1" }); // Place an orderconst order = FoodBlock.create("transfer.order", { amount: 700, status: "pending", items: [{ product: block.hash, qty: 2 }],}, { from: buyer.hash, to: seller.hash }); // Leave a reviewconst review = FoodBlock.create("observe.review", { score: 4.8, text: "Best tomatoes in Kent — perfectly ripe, great flavour",}, { subject: block.hash, author: buyer.hash }); // POST a block to the networkawait fetch("/api/v1/foodblock", { method: "POST", headers: { "Authorization": `Bearer ${apiKey}`, "Content-Type": "application/json", }, body: JSON.stringify({ type, state, refs }),}); // Query the feedconst feed = await fetch("/api/v1/foodblock/feed?limit=20&lat=51.09&lng=-0.71");const { blocks, total, next_cursor } = await feed.json(); // Trace provenanceconst provenance = await fetch(`/api/v1/foodblock/${hash}/provenance`);const { chain } = await provenance.json(); // Register a sellerconst actor = FoodBlock.create("actor.seller", { name: "Kent Farm", type: "producer", status: "live", lat: 51.09, lng: -0.71, bio: "Family farm since 1987",}, { place: venue.hash }); // Share a recipeconst recipe = FoodBlock.create("transform.recipe", {

Build on the foodgraph.

223 endpoints across 30 categories. MCP server, REST API, or SDK.

The developer journey.

From understanding the protocol to shipping in production.

Foundation

Learn

Understand the protocol. Six base types, three fields, ten rules.

Interactive

Try

Playground, block explorer, guided onboarding. No signup required.

Reference

Build

223 endpoints, 5 SDKs, MCP server. Full API reference with code examples.

Operations

Ship

Dashboard, status page, changelog. Everything for production.

What you can build.

One append-only chain. Build anything in the food graph.

Marketplace

Direct-from-farm marketplaces

Connect growers, makers, and small farms with the people who eat their food, with no supermarket in between.

Discovery

Real-time food discovery

Surface what is actually available nearby this hour, filtered by allergens, preferences, ethics, and distance.

Provenance

Traceability and provenance tools

Trace any product back through every signed step, from field, to facility, to plate. Embed origin widgets on any storefront.

Compliance

Compliance and certification dashboards

Live organic, hygiene, fair-trade status. FSA, certifiers, and auditors read directly from the chain.

Recalls

Recall and contamination notification

When a batch is unsafe, trace it through every product it became part of and notify exactly who is affected.

Relationships

Loyalty and subscription engines

Cup-on-chain, weekly bread, monthly veg, gifts between regulars. Relationships as signed, portable records.

Surplus

Surplus rescue networks

A baker's extra loaves, a grower's surplus, a restaurant's end-of-night food, routed to where it is needed before it spoils.

Ordering

Ordering and POS integrations

Orders, deliveries, and payments signed on chain. Reads from and writes to existing tills, payment rails, and messaging.

Agents

AI agents and assistants

Build agents that act on a person's behalf over MCP, with full memory, narrow authority, and on-chain auditability.

Sustainability

Carbon, soil, and welfare scorecards

Per-product carbon, soil regeneration trajectories, animal welfare records, surfaced at the point of choice.

Reputation

Trust and reputation systems

Reviews, ratings, supplier scorecards, and patronage indices computed from signed activity, not marketing claims.

Coordination

Local supply coordination

Match a brewery's spent grain to a baker's flour, a farm's whey to a cheesemaker, an over-yielded crop to a preserve maker.

Who builds on FoodBlock.

The protocol specifies only the block format. Three fields of valid JSON. MIT licensed, open, free to build on.

Existing companies

Add an export, join the network

A POS vendor adds a FoodBlock export to its existing product, and overnight every merchant using that system becomes a participant. The integration cost is low because the protocol asks so little.

Warehouse management systems
POS terminals
Retail receiving systems
New companies

Build on an open foundation

A hardware startup designs a smart fridge that tracks stock levels and triggers reorders. A cold-chain startup builds temperature monitors with verifiable, tamper-evident records. No permission from FoodBlock required.

Smart fridges and sensors
Cold-chain monitors
QR provenance apps
Anyone

Describe it, build it

The barrier drops from technical literacy to imagination. A restaurant owner who has never written code can describe what they need and receive a working tool that reads and writes FoodBlocks.

Non-technical business owners
Makers and growers
Community organisers

Every legacy format becomes compatible.

The protocol does not need custom integrations with legacy systems. AI is the integration. Instead of convincing a million businesses to change their systems, the protocol needs one AI that can read their existing output.

The barrier drops from technical literacy to imagination.

Photo of a handwritten receiptFoodBlock
Voice memo describing a deliveryFoodBlock
PDF invoice from an unknown supplierFoodBlock
WhatsApp message from a regularFoodBlock
Till receipt from a Sunday marketFoodBlock
Spreadsheet of supplier pricesFoodBlock
Email from a certifierFoodBlock
Paper hygiene inspection reportFoodBlock

Start building.

Open protocol. Read the spec, hit the API, or fork the SDK.

API DocsPlaygroundPricingGitHub