New: build your backend and app together with AI. Point Claude or Cursor at AppAmbit over MCP.

On mobile?

Email yourself the setup link so you can finish when you're at your computer.

AppAmbit CMS

Change what your app shows. Skip the release.

Define a content type, publish entries, and your app reads them live. Move it all as JSON, or share one set of content across many apps.

Read the docs

Pairs with App Database and Cloud Code, and your AI Agent can run it too.

12

Field types, from text to relations

JSON

Export and import, whenever you want

Shared

One set of content across your apps

7

SDKs that read it, iOS to .NET

Content types

Define the shape. Twelve field types.

Build a content type from the fields your screen needs. Every entry is checked against it before it saves, and relation fields link one content type to another.

Text Rich Text Number Boolean Date Date & Time Email URL Select Media Relation JSON
Relations

Link your content types. One to many, many to one.

A relation field points at another content type. Keep it single and many entries can share the same one, or allow multiple and one entry holds a list.

Many to one
Many offers can point at the same product.
One to many
Turn on Allow Multiple and a collection holds a list of products, in the order you drag them.
Many to many
The same product can sit in any number of collections.
Read together
Linked entries can come back inline with the entry, one level deep.
Relations · Cartly
Many to one productRelation to Products
Home offersProducts
Autumn sale
Winter drop
Weekend deal
Studio Pro$79.99
One to many productsRelation to Products, Allow Multiple
CollectionsProducts
Holiday picks3 products
Studio Pro$79.99
Studio Pro Amber$79.99
Studio Pro Sage$84.99
Set on the field: a Target Content Type, and Allow Multiple for a list.
Export and import

Take your content anywhere. As JSON.

Content types and their entries come out as one JSON file. Edit it in bulk, duplicate it into another app, and bring it back in.

  1. 1

    Export

    Every content type, a selection, or one type with its entries.

  2. 2

    Edit, duplicate or write it

    Plain JSON. Change it in bulk, copy it for another app, or have your AI agent write it.

  3. 3

    Import

    Paste it or drop the .json file. Identical types are reused.

Export Entries & Types
{  "content_types": [{    "display_name": "Home offers",    "schema": [      { "key": "title", "label": "Title", "type": "text" },      { "key": "hero", "label": "Hero", "type": "media" }    ],    "entries": [{      "data": { "title": "Autumn sale" },      "status": "published",      "locale": "en"    }]  }]}
export-2026-09-10-120000.json
Import Content
A type with the same name and the same shape is always reused.
One source, many apps

Write it once. Every app reads it.

Change the offer once and your iOS, Android and .NET apps all show it. No copy per app, and nothing to keep in step by hand.

One content type, assigned to as many apps as you need
Sync groups share the same entries across apps
Merge or replace existing content when an app joins
An app that leaves keeps the content it has
Sync group · Cartly
3 apps

home_offers

Autumn sale

Publishing Published
Edit the entry once. Every app in the group reads it.
Read it from your app

One call, every platform.

Read a content type by name into your own model, filtered and paged.

// a content type you defined, read into// a type you ownCms.content("home_offers", modelType: Offer.self)    .equals("locale", "en")    .getPerPage(10)    .getList { offers in        self.offers = offers    }
// a content type you defined, read into// a class you ownCms.content("home_offers", Offer::class.java)    .equals("locale", "en")    .getPerPage(10)    .getList()    .then { offers -> show(offers) }
// a content type you defined, read into// a class you ownfinal offers = await AppAmbitCms    .content<Offer>(      "home_offers",      fromJson: Offer.fromJson,    )    .equals("locale", "en")    .getList();
// a content type you defined, read by its nameconst offers = await AppAmbitCms  .content("home_offers")  .equals("locale", "en")  .getList();
// a content type you defined, read into// a class you ownvar offers = await Cms    .Content<Offer>("home_offers")    .Equals("locale", "en")    .GetPerPage(10)    .GetListAsync();
// a content type you defined, read into// a class you ownvar offers = await Cms    .Content<Offer>("home_offers")    .Equals("locale", "en")    .GetPerPage(10)    .GetListAsync();
// a content type you defined, read into// a class you ownvar offers = await Cms    .Content<Offer>("home_offers")    .Equals("locale", "en")    .GetPerPage(10)    .GetListAsync();
What comes back

home_offers · published · en

Autumn sale20% off everything
Winter dropNew colors are in
Your AI Agent

Ask for the content. It publishes it.

Point Claude, Cursor or ChatGPT at AppAmbit over MCP. It defines the content type and creates the entry right in AppAmbit, checked against the schema before anything saves. Or have it write the JSON anywhere else, then import it.

Claude · MCP: appambit
Connected

Add an offers type with a title and a hero image, then publish the autumn sale.

I'll create the content type first, then the entry.

create-content-type-tool home_offers · title: text, hero: media
create-content-entry-tool Autumn sale · published

Done. Autumn sale is live in Home offers, and your app reads it now.

Published
Questions

The CMS, answered.

What is a content type?
The shape of your content: a set of fields like a title, an image and a price. You build it from twelve field types, including rich text, media, JSON and relations to other entries.
Can content types link to each other?
Yes. A relation field points at another content type. Left single, many entries can share the same related entry (many to one). With Allow Multiple, one entry holds an ordered list (one to many), and the same entry can sit in many lists (many to many). Linked entries can come back inline, one level deep.
How do I export and import content?
Export every content type, a selection, or one type with its entries as JSON, then copy it or download the file. To import, paste the JSON or drop the .json file. Content types that already exist with the same shape are reused.
Can I duplicate content into another app?
Yes. Export it from one app and import it into another, even one in a different team. If a type with the same name but a different shape is already there, you choose: skip it, create a copy under a new name, or merge the entries into it.
Can my AI agent create the content?
Yes. Over MCP it creates content types and entries right in AppAmbit, or writes them as JSON anywhere else for you to import.
How do several apps share the same content?
Assign a content type to as many apps as you need, or put apps in a sync group so they share the same entries. When an app joins, keep its content alongside the group's or replace it. An app that leaves keeps what it has.
Do I need to ship an update to change content?
No. Your app reads entries at runtime through the SDK, so publishing or unpublishing an entry changes what it shows without a store release.
Which platforms can read it?
iOS, Android, Flutter, React Native, .NET MAUI, Avalonia and .NET. Each SDK reads a content type by name into your own model, with filters and paging.
Ready when you are

Content your app can change. No release required.

Start free, define your first content type in minutes, and read it from your app. No credit card required.

Already have an account? Log in

Change your app's content, not its build.