The data fabric for the agent economy.

LLMs guess which fields match across systems. For reads, that's annoying. For writes, that's a production incident. Manifold maps every relationship — field names, data formats, entity matches — at build time, so your agent writes to any connected system with the same accuracy as hand-written integration code. No guessing. No LLM in the loop at runtime.

Reads can be wrong. Writes can't.

Your AI agent can query your systems today. It works... mostly. Wrong matches are annoying but survivable — the user asks again, the agent retries. But the moment your agent writes — updates a customer record, syncs an invoice, changes a billing address — "mostly works" becomes "corrupted production data across every system it touched." That's the line most teams won't cross. Manifold makes it safe to cross it.

The LLM guesses field mappings

Every system names its fields differently. cust in one is VendorRef in another is contact_id in a third. The LLM guesses from context which fields correspond. For a read, it might pull the wrong related record. For a write, it updates the wrong field in production. Manifold knows the exact mapping — verified at build time, not guessed at runtime.

Wrong entity matches corrupt data

"Update the invoice in System B that matches this charge in System A." The LLM finds two invoices with similar amounts, picks one. If it's wrong, you've updated the wrong customer's record. Manifold resolves entity matches once, deterministically, with confidence scores. Same match every time.

Updates don't propagate — or propagate wrong

Your agent updates a record in one system. The same entity exists in three other systems — but those stay stale. Or worse, the LLM tries to sync them and writes a field name from one system as a literal value in another. Manifold translates field names and formats across systems automatically.

No audit trail

When the LLM writes to multiple systems, what exactly changed? Which field, which record, which system? If something goes wrong, can you roll it back? Without Manifold, you're reading API logs across separate dashboards. With Manifold, every write returns a receipt and is reversible.

You can't scale writes you can't trust

You've hand-built one integration between two systems. It took a sprint. Now do it for 10 systems. The LLM approach doesn't scale because the error rate scales with it. Manifold's accuracy is the same whether you have 2 systems or 20.

Same setup. But now your agent can write.

setup.py
import manifold

m = manifold.Manifold()

# Point Manifold at your existing code — any system, any domain
m.connect("billing", stripe_client)
m.connect("accounting", quickbooks_module)
m.connect("crm", hubspot_client)
m.connect("inventory", warehouse_api)

# Manifold discovers types, classifies fields, maps cross-system relationships
m.discover()

# Hand the tools to your LLM — one unified interface across all systems
tools = m.tool_definitions()

Now your agent takes over. You give it the tools — it decides what to call, when, and why.

User"What systems do I have connected?"
Agent callsmanifold_list_types()
stripe: charge, account, product, subscription, payment_method, ...
qbo: vendor, bill, item, account, vendor_credit, ...
hubspot: contact, company, deal, ...
Agent"You have 3 systems connected — Stripe (billing), QuickBooks (accounting), and HubSpot (CRM) with 18 entity types total."
User"What does a charge look like in Stripe?"
Agent callsmanifold_describe_type("stripe", "charge")
8 fields: id (identifier), amt (number), cust (reference → account),
status (categorical: paid/pending/refunded), ...
Maps to: qbo.bill (confidence 0.95)
Agent"A Stripe charge has amount, customer reference, status, line items... Each charge automatically maps to a QuickBooks bill."
User"Show me Acme Corp's latest charge and the matching QuickBooks record"
Agent callsmanifold_search("stripe", "charge", {"cust": "acct-1"})
Agent callsmanifold_get("stripe", "charge", "ch-1001")
cross_source_matches: [{"source": "qbo", "type": "bill", "id": "201"}]
Agent callsmanifold_get("qbo", "bill", "201")
Agent"Acme's latest charge is ch-1001 for $260 (paid). The matching QuickBooks bill is BILL-2025-001, also $260, due Feb 10. Both settled."
User"Update Acme's email to new@acme.com across all systems"
Agent callsmanifold_update("hubspot", "contact", "501", {"email": "new@acme.com"})
Agent callsmanifold_sync("hubspot", "contact", "501")
synced: stripe.account.acct-1 → email: "new@acme.com"
        qbo.vendor.56 → PrimaryEmailAddr: "new@acme.com"
Agent"Done. Updated in HubSpot, Stripe, and QuickBooks."

That last one is the one that matters. The agent updated one field in one system, and Manifold propagated it to every connected system — translating field names, matching the right records, and returning a receipt showing exactly what changed where. No LLM reasoning. No guessing. No "I think this is the right field."

Your agent reads with full cross-system context and writes with automatic propagation. One call, every system updated — with the right field names, the right format. The agent makes decisions. Manifold handles the plumbing.

What Manifold does

Act across systems

Update once, sync everywhere. Because Manifold knows the exact entity matches and field mappings, your agent can update a record in one system and Manifold propagates the change to every connected system — right field names, right format. This is the feature that turns "read-only AI agent" into "AI agent that actually does things."

# Update a customer — Manifold handles cross-system propagation
m.execute("manifold_update", {
    "source": "hubspot",
    "type": "contact",
    "id": "501",
    "fields": {"email": "new@acme.com"}
})
# → Also updates stripe.account.acct-1 and qbo.vendor.56
#   because Manifold knows they're the same entity

Map across systems

The reason writes are safe. Manifold builds a verified mapping between every connected system — field to field, record to record. These mappings are built at connect time and never change until you reconnect. Deterministic. Auditable.

m.discover()

# ✓ 4 sources connected
# ✓ 23 entity types discovered
# ✓ 47 intra-source relationships mapped
# ✓ 12 cross-source relationships found

Connect anything

Pass in a Python module, an SDK client, or an OpenAPI spec. Manifold inspects your existing code — function names, signatures, docstrings — and figures out the data model. You don't write adapters.

# Your existing Stripe client — unchanged
m.connect("billing", stripe_client)

# Or an OpenAPI spec
m.connect("erp", spec="https://api.internal.co/openapi.json", auth={...})

Discover automatically

Manifold pulls representative samples, builds a schema graph, and uses an LLM to classify every field — identifiers, references, categories. It understands that cust on a charge points to an account, that VendorRef on a bill points to a vendor.

Serve to any LLM

One set of tools that spans your entire data landscape. Feed them to Claude, GPT, Gemini — framework agnostic. Or connect via MCP. No LLM calls at runtime — it's a graph lookup.

# Tool definitions — works with any LLM framework
tools = m.tool_definitions()

# Or serve via MCP
m.serve_mcp(port=8080)

Build-time LLM. Runtime deterministic.

Your Systems
Stripe SDK
QuickBooks API
HubSpot Client
Manifold
Plugin Poolinspect
Graph Builderschema + mapping
Unified Graphschema + cache
Your LLM Agent
Tool definitions
MCP server
manifold_get()
manifold_update()
manifold_sync()

The LLM runs at build time — when you connect a system. At runtime, every read is a graph lookup and every write is a verified propagation through the cross-source mapping. The mapping was built by the LLM, verified against real data, and frozen. Your agent never guesses at runtime. That's why writes are safe.

What your agent can do

Read — navigate the unified graph

Tool
What it does
Example
manifold_list_types
List all entity types across all connected sources
["stripe.charge", "qbo.bill", ...]
manifold_describe_type
Fields, roles, references, and statistics for a type
charge has 8 fields, cust is a reference to account
manifold_get
Get an entity — includes cross-source match hints automatically
Returns ch-1001 with cross_source_matches: [{qbo.bill.201}]
manifold_search
Find entities matching field criteria
manifold_search("stripe", "charge", {"status": "paid"})
manifold_follow_reference
Follow a reference field to the linked entity
Follow charge.cust on ch-1001account.acct-1
manifold_cross_references
Get all cross-source matches for an entity
ch-1001 matches qbo.bill.201 (0.95)

Write — act across connected systems

Tool
What it does
Example
manifold_update
Update an entity's fields in one source system
Update qbo.vendor.56 email to "new@acme.com"
manifold_sync
Propagate the current state to all matched systems — translates field names automatically
Sync hubspot.contact.501 → updates Stripe + QBO
manifold_create
Create a new entity in a source system
Create a QBO invoice mapped from a Stripe charge

Every write tool returns a receipt: exactly what changed, in which system, which fields, old values and new values. Every write is reversible. This is not "fire and forget" — it's "act and verify."

Inspect — understand the graph itself

Tool
What it does
Example
manifold_type_mapping
Show how a type in one source maps to another
stripe.chargeqbo.bill: amt→TotalAmt
manifold_sync_preview
Dry-run a sync — show what would change without executing
Would update qbo.vendor.56.PrimaryEmailAddr
manifold_audit
History of sync operations — what changed, when, why
3 syncs in 7 days, all triggered by CRM updates

One tool set. Not per-system, not per-group. Your agent reads, writes, inspects, and syncs across the full graph.

One update. Every connected system. Zero guesswork.

Most integration tools stop at querying. Manifold goes further — because it understands the data linkages across every connected system, your agent can write to one system and Manifold ensures the change is reflected everywhere.

Without Manifold
Agent tries to update email across systems:

  1. Updates hubspot.contact.501.email  "new@acme.com" 

  2. Searches Stripe for matching account...
     finds 3 results... picks stripe.account.acct-7
     (wrong one — same company name, different entity)
      Updates wrong customer's email in Stripe

  3. Searches QuickBooks for matching vendor...
     tries to write "email" to field "PrimaryEmailAddr"
      API rejects the field name, or worse: creates a new field

Result: 1 correct update, 1 wrong customer, 1 failed write
With Manifold
Agent calls: manifold_update + manifold_sync

  1. hubspot.contact.501.email        "new@acme.com" 
  2. stripe.account.acct-1.email      "new@acme.com" 
  3. qbo.vendor.56.PrimaryEmailAddr   "new@acme.com" 

Entity matches: verified at build time (confidence 0.97)
Field mapping: exact (email → email → PrimaryEmailAddr)
Receipt: returned with old/new values for each system
Reversible: yes

Result: 3 correct updates, auditable, reversible

Manifold maps fields across systems — it knows which field in System A corresponds to which field in System B. Updates are translated automatically using the cross-source field mapping built at discover time. No LLM in the loop. No guessing.

Safety

Cross-system writes are auditable and reversible. Every sync operation returns a receipt showing exactly what changed where, and Manifold can roll back individual updates. Your agent acts with confidence because Manifold acts with precision.

Use cases

$

Finance ops

Your agent pulls a Stripe charge and automatically gets the matching QuickBooks invoice, linked journal entries, and the customer record across all systems. When the charge is refunded, it updates the matching bill in QuickBooks automatically.

E-commerce

Your agent checks a Shopify order and gets the linked warehouse fulfillment, shipping status, and inventory levels in one call. When stock changes, it updates counts across Shopify and the warehouse system automatically.

>_

Customer support

Your agent looks up a customer and gets their subscription, latest invoice, and matching ERP record — all linked, one query. When the support agent updates the customer's address, Manifold propagates it to billing and shipping systems.

Cross-system sync

Your agent updates a billing address in one system. Manifold pushes the change to every connected system where that entity exists — each with the right field names, the right format. One call, every system current.

{}

DevOps

Your agent pulls a PagerDuty incident and gets the linked Jira ticket and GitHub PR automatically. When the incident is resolved, it closes the ticket and merges the PR — all through the graph.

>

Internal tooling

Connect your internal APIs with m.connect("inventory", warehouse_api). Manifold discovers the schema and maps it to your existing systems. No integration sprint required.

If it has a Python library or an API, Manifold connects to it.

There are no "supported systems." Manifold doesn't ship pre-built connectors. It inspects whatever you give it — any Python SDK, any REST API, any internal service — and figures out the data model.

How you connect

You have...
You pass in...
A Python SDK
m.connect("billing", stripe_client)
A Python module
m.connect("inventory", warehouse_module)
A REST API
m.connect("erp", spec="https://...", auth={...})
Internal services
Any object with methods that return data

Examples people are building with

Finance
Stripe, QuickBooks, Xero
Charges ⇔ invoices ⇔ journal entries
Sales & CRM
HubSpot, Salesforce, Pipedrive
Contacts ⇔ leads ⇔ deals across platforms
E-commerce
Shopify, internal inventory API
Orders ⇔ fulfillments ⇔ stock levels
Healthcare
Epic FHIR API, internal patient system
Patients ⇔ appointments ⇔ billing records
DevOps
PagerDuty, Jira, GitHub
Incidents ⇔ tickets ⇔ pull requests
Logistics
Custom fleet API, order management
Vehicles ⇔ routes ⇔ shipments ⇔ orders

Any domain. Any system. If your code can call it, Manifold can discover it.

Python library first. Hosted service later.

Manifold ships as a Python package. Install it, run it locally, keep your data in your infrastructure. No SaaS dependency, no data leaving your network.

We're building the hosted version for teams that want managed discovery, a dashboard for reviewing cross-source mappings, automatic re-sync when schemas change, and a full audit log of every cross-system write. The waitlist is for early access to both.

Every cross-system write is logged, auditable, and reversible. The Python library includes manifold_audit() and manifold_sync_preview() so you can inspect what will happen before it happens, and trace what did happen after.

terminal
$ pip install manifold

Help us build the final version.

Manifold works. Now we need your systems to prove it. We're running a closed beta to stress-test cross-system writes against real integrations, real edge cases, real data models. Your use case shapes what we ship. Early access is free.

We'll only email you about beta access and product updates. Nothing else.