Your AI agent can call APIs.
It gets the connections between them wrong.

Manifold connects your APIs, discovers the data model, maps relationships across systems, and exposes everything as one set of LLM tools. Your agent reads across all systems, writes to one, and Manifold auto-syncs the change everywhere — right field names, right format, every system. No integration code. No LLM in the loop at runtime.

"Just give the LLM all the tools" doesn't work.

You can hand your LLM 50 API tools and it'll call them. But when it needs to work across systems — match a Stripe charge to a QuickBooks invoice, update a customer's email in three places — it guesses. It gets it wrong. And every time it tries, it reasons differently. You can't build reliable systems on probabilistic cross-system reasoning.

The LLM gets matches wrong

"Find the matching QuickBooks invoice for this Stripe charge." The LLM fetches from both systems, compares amounts and dates, and picks one. Sometimes it's right. Sometimes it matches the wrong invoice — same amount, different customer. You don't find out until the data is corrupted. Manifold resolves matches once, verifies them, and returns the same correct answer every time.

Every answer is different

Ask the same cross-system question twice, get two different reasoning paths. The LLM might match on amount today and date tomorrow. There's no consistency, no auditability, no way to debug when it's wrong. Manifold's mappings are deterministic — same query, same answer, every time.

Writes are dangerous without accuracy

The LLM doesn't know that Stripe's cust is QuickBooks' VendorRef is HubSpot's contact_id. It guesses from context. For reads, a wrong guess is confusing. For writes, a wrong guess corrupts production data across multiple systems. Manifold knows the exact field mapping — verified at build time, not guessed at runtime.

Tool explosion degrades accuracy further

10 systems × 20 entity types × 3 operations = 600 tools. LLMs pick the wrong tool more often as the tool set grows. Manifold gives you 12 tools that span everything — the LLM always picks the right one.

Token cost scales with inaccuracy

When the LLM gets cross-system reasoning wrong, you retry, add more context, chain more calls. You're burning tokens to compensate for a lack of ground truth. Manifold provides the ground truth — the relationships are pre-computed. Zero reasoning tokens, zero retries.

Three lines of code. Zero integration work.

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."

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

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.

Map across systems

Manifold finds that Stripe's charge is QuickBooks' bill. That charge.amt maps to bill.TotalAmt. That ch-1001 and BILL-2025-001 are the same transaction. Built once at connect time, queried deterministically at runtime.

Act across systems

Manifold doesn't just read — it writes back. Your agent can update a record in one system and Manifold automatically propagates the change to every connected system where that entity exists.

# 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

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 and every write is a deterministic graph operation. Reads are lookups. Writes propagate through the cross-source mapping automatically. No tokens burned, no latency, no hallucination risk.

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

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.

Your agent doesn't just read. It acts.

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.

cross-system sync
Agent: "Update Acme Corp's email to new@acme.com"

Manifold knows:
  hubspot.contact.501  ←→  stripe.account.acct-1  ←→  qbo.vendor.56
  All three are Acme Corp.

Manifold executes:
  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"

Each system gets the update in its own field format.
The agent made one call. Manifold handled the rest.

Manifold maps fields across systems — it knows that HubSpot's email is Stripe's email is QuickBooks' PrimaryEmailAddr. 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

"Show me the Stripe charge for Acme Corp and its matching QuickBooks invoice." Your agent follows references across both systems without custom logic.

🛒

E-commerce

"Which Shopify orders are still unfulfilled in our warehouse system?" Manifold knows that a Shopify order maps to a warehouse fulfillment request — your agent queries across both without knowing either API.

>_

Customer support

"What's the status of this customer's subscription, their latest invoice, and the matching record in our ERP?" One query path across three systems.

Cross-system sync

"Update Acme's billing address in all systems." Your agent makes one call. Manifold updates the Stripe account, the QuickBooks vendor, and the HubSpot contact — each with the right field names, the right format.

{}

DevOps

"Link this PagerDuty incident to the Jira ticket and the GitHub PR that caused it." Manifold already knows the incident, ticket, and PR are connected — your agent navigates 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.

terminal
$ pip install manifold

Connect your first system in minutes.

Manifold is in early access. Join the waitlist to get notified when we ship, and get early access to the Python library.

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