Your API backlog is a MySQL or MariaDB table.

Open MySQL or MariaDB to apps and agents, permissioned per table.

Register it once as type ms for MySQL or ma for MariaDB. Every table is served as REST routes and as MCP tools.

Every role, decided on the table. Every call, on the record. The rows stay in your database; nothing is copied out of it.

Minimal Core is in beta. Licences are set up with you in a session, or email us. What Minimal Core is.

The same call

Change one word. Get the same answer.

The Book’s worked Acme database runs on Postgres. Move the same table to MySQL or MariaDB and the call changes in one place: pg becomes ms for MySQL or ma for MariaDB. The request, the role checks and the response stay the same, so moving a database is a configuration change, not a rewrite of the code that calls it.

http
GET /minimal/api/rest/auto/v1/acme/people/ms/acme/employee?fc=id,full_name,department_id&oy=id.as&ps=5&pg=0 HTTP/1.1
Host: api.acme.example
LB-Access-Token: <your-access-token>
json · 200
[
  { "id": 1, "full_name": "Rafael Delacroix", "department_id": 11 },
  { "id": 2, "full_name": "Rafael Müller", "department_id": 7 },
  { "id": 3, "full_name": "Rafael Novak", "department_id": 8 },
  { "id": 4, "full_name": "Kwame Haddad", "department_id": 6 },
  { "id": 5, "full_name": "Rafael Haddad", "department_id": 6 }
]
http
DELETE /minimal/api/rest/auto/v1/acme/people/ma/acme/employee?id=eq.5 HTTP/1.1
Host: api.acme.example
LB-Access-Token: <token · roles hr-analyst · key_type -r-->
json · 403
{
  "code": 403,
  "status": "Forbidden",
  "message": "insufficient permissions for this operation on this table, got [hr-analyst]"
}

Acme’s employee table, as printed for Postgres in the Book of Minimal. The read goes to MySQL (ms) and the refused delete to MariaDB (ma); only the type segment differs. Vol. I, Chapter 5 is the full query language.

What differs

Four things that are specific to MySQL and MariaDB.

Two codes: ms and ma

ms is MySQL and ma is MariaDB, in the path and in the MCP type argument. The registration surface spells them mysql and mariadb under the field db_type.

Writes are transactional

A multi-row insert lands in one transaction, and a PUT or DELETE that matches many rows runs as one statement, atomic the same way. A Custom API definition’s logic steps run in one transaction, so a failure partway rolls back what already ran.

Schema changes are not

Schema statements are transactional on Postgres only. A multi-statement run on MySQL or MariaDB can leave some statements applied and later ones failed. The run’s status partial is the only warning, so read each statement’s own status in the run record.

Statements refused here only

DROP combined with SCHEMA, and PREPARE, EXECUTE, DEALLOCATE and CALL, are refused outright on MySQL and MariaDB. No other database refuses them.

The boundary

One table per call.

The Auto API reads and writes one table per call: no joins, no subqueries, no aggregate functions. A join belongs in a view, or in a Custom API definition. Minimal Core does not issue your users’ credentials and does not connect your third-party services; both stay where they already are.

Also: Postgres · ClickHouse · All of Minimal Core · Pricing

Put it in front of a MySQL or MariaDB database.

Next on the shelf

Where to go from here.

API Bayß

A dataset in, a priced API out.

Drop a file; we code, host, back up and serve the endpoints. You set the price and keep all of it.

Agent StudioJ.27

The job runs without you.

Fill in a form and an agent runs the job over your own database, under an identity you scope.

Teach your agent

One page, 4 KB.

The Minimal Core agent skill: session rule, discovery order, headers and refusals.