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.
Your API backlog is a MySQL or MariaDB 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
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.
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>[
{ "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 }
]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-->{
"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
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
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
Drop a file; we code, host, back up and serve the endpoints. You set the price and keep all of it.
Fill in a form and an agent runs the job over your own database, under an identity you scope.
The Minimal Core agent skill: session rule, discovery order, headers and refusals.