HOW IT WORKS · 03

Every Cordango app is designed around a contract.

The contract is the capability layer we are currently introducing across the platform. It describes what an app offers to everything outside it: the events it announces, the actions that can be invoked, the questions it can answer and what it depends on. The Definition describes how the app works. The Contract describes how everything else can work with it.

FIG.01

What the contract states.

Everything in it is computed from the definition when the app is compiled. The one exception is the purpose, which the generator writes once when the app is created and which you can edit.

PURPOSE

What the app is for

A summary and the duties the app owns. Written once by the generator from your description, editable afterwards, and the only part a person maintains.

CAPABILITIES

What it can do

The interaction surfaces the app supports, derived from what the definition actually contains. No flag that says webhooks: yes. Facts, not promises.

EVENTS

What it announces

Named events like deal.won or pto.approved, plus the record and state changes that come with every entity. The announcement is the contract.

ACTIONS

What can be invoked

The commands the definition declares. Create a deal, move a stage, approve a request. Each one runs under the caller's permissions.

QUERIES

What can be asked

The entities, views, KPIs and rollups the app makes readable. The forecast is a query, and so is the list of open deals.

DEPENDENCIES

What it expects to find

The Organizations, People and other apps it points at instead of inventing its own. A CRM that depends on Organizations never keeps a second customer list.

FIG.02

Who reads it, and why that matters.

The app's own screens never need the contract. Everything outside the app does. A workflow subscribes to an event by its name. Another app declares what it depends on. An agent asks what it can do. The App Library shows what an app announces before anybody installs it.

The contract also has a stability promise the app's internals do not. The definition can change shape every week. The contract is versioned, so a dropped event or a renamed action is visible before an update lands, and an app that only changed on the inside does not disturb anything wired to it.

  • NAME Events and actions are addressed by name, never by table or screen
  • STABLE Versioned, so a breaking change is visible before it breaks anything
  • LISTING What an app offers is shown in the library before it is installed
  • RIGHTS Every reader acts under its own permissions, the contract grants none
App updateContract diff
# planned: the contract diff before an update installs > sales-crm v1.2 → v1.3 + event invoice.posted + query deals by owner 0 removed events · 0 removed actions · 0 renamed fields ✔ compatible every workflow and connection keeps working
FIG.03

What is true today, and what comes next.

We would rather say this here than let a diagram imply it. The parts of the contract that exist today: every definition names the events it announces, every app is reachable over REST, OpenAPI and MCP under the caller's permissions, and apps already point at the same Organizations and People instead of keeping copies.

What we are introducing now: the contract as its own compiled file next to every app, apps reacting to each other's events without middleware, and agents discovering an app's capabilities from the contract instead of from its interface. The roadmap says where each of those stands.

  • TODAY Named events, REST and MCP per app, shared records across apps
  • NEXT The contract file, cross-app reactions, agent discovery
Where we areHonest version
# today events named in every definition deal.won · pto.approved REST · OpenAPI · MCP per app under your permissions cross-app references a deal points at the real Organization # next the contract as a file beside every app apps reacting to each other's events agents discovering what an app can do
FIG.04

Born Connected.

— why the contract exists

A Cordango app is created with a known interaction surface. It does not have to be integrated later, because from the first day it says what it offers and what it depends on, and it points at the company's own records rather than keeping a copy of them.

That is the difference between connected and integrated. Integrated means two separate things were wired together afterwards. Connected means the app was built to participate: the same people, the same organizations, the same permission model, and a contract that tells everything else how to work with it.

  • SHARED Apps point at one Organization and one Person record, never at copies
  • ONE One gateway behind REST, OpenAPI and MCP for every app
  • RIGHTS A cross-app answer is built after permissions are applied, not before
  • NEXT Reactions between apps follow the same contract, without middleware
Connected by designGlobex SE
# one record, three apps Globex SE Organization · owner Tomas R. ✔ crm deal 42.000 € stage: negotiation ✔ helpdesk ticket #2841 priority: high ✔ projects onboarding project 3 open tasks # the same record, asked over rest or mcp one answer your permissions applied before it is built
MORE

Further reading

NEXT

See what an app offers
before it is installed.

Bring a process that touches more than one tool today. We build the app live and show what it announces, what it can be asked, and how the rest of your company works with it.