MCP · Tools
Tools: projects
Six tools on the management plane (api.manybases.com). Two require a signed-in human. Descriptions are quoted as the agent reads them.
create_project#
Create a new Manybases project (its own isolated database, storage and users). Idempotent when you pass a stable idempotency_key: retrying with the same key returns the same project instead of creating a second one.
| Parameter | Type | Required | Meaning |
|---|---|---|---|
name | string, min 1 | yes | Human-readable project name. |
plan | "free" or "personal" (the Builder plan) | no | Defaults to 'free'. |
idempotency_key | string | no | Pass a stable value to make retries safe. |
Calls POST /v1/projects. Provisions a real database and a file bucket in about six seconds. The account key must have the "every project" scope; a key limited to some projects receives 403. On the Free plan the third project answers 402 quota_exceeded. The response is the project card, with the data-plane address (urls.api).
list_projects#
List the projects on this account (scoped to what the account key can see).
Takes limit and cursor, both optional. Calls GET /v1/projects. Each project carries its data-plane address (urls.api) and the platform's last reading, dated by seats.as_of; seats.used can be null for a project never observed. The site's address (urls.site) is only on get_project.
get_project#
Get a project's card: status, plan, its API URLs, and its table and seat counts from the platform's last reading (dated by seats.as_of, refreshed every few minutes). For the live list of tables, call list_tables.
| Parameter | Type | Required | Meaning |
|---|---|---|---|
project_id | string | yes | The project id, e.g. proj_… |
Calls GET /v1/projects/:pid. The card adds the table count (tables) and the site's address (urls.site) to what the list carries. Its figures are the platform's last reading, dated by seats.as_of: reading the card measures nothing and records nothing. The platform refreshes that reading on its own, every five minutes, a few projects at a time; a project never observed returns null, with a hint. For the live list of tables, call list_tables.
get_usage#
Get a project's usage snapshot: storage, rows, seats, the account's requests this month (UTC), and quotas. Fields the API cannot derive are null — it never invents numbers.
| Parameter | Type | Required | Meaning |
|---|---|---|---|
project_id | string | yes |
Calls GET /v1/projects/:pid/usage. requests_month is the account's figure, served on a project route on purpose. The other figures are the platform's last reading, with its as_of — the same reading get_project serves. No call refreshes them: the platform does, on its own.
set_app_url — human required#
Set (or clear, with null) the app URL the mobile launcher opens for this project, and/or rename it. Changing the app URL redirects every user of the app: the API answers 428 with a confirmation_token the first time — re-send with that token to execute. Requires human elevation (MANYBASES_ACCOUNT_SESSION); without it the API refuses and tells you.
| Parameter | Type | Required | Meaning |
|---|---|---|---|
project_id | string | yes | |
app_url | string or null | no | The app URL (https only), or null to clear it. |
name | string | no | Optional new project name. |
confirmation_token | string | no | The token returned by the first (428) call, to confirm. |
Calls PATCH /v1/projects/:pid. The app URL must be in canonical form with its trailing slash (https://my-app.example/). Renaming alone needs neither a human nor a confirmation. Today the app URL is what invitation links are built from, and what a site deployment fills in when it is empty.
delete_project — human required#
Permanently delete a project and all its resources (database, storage, worker). Irreversible. Answers 428 with a confirmation_token the first time — re-send with that token. Requires human elevation (MANYBASES_ACCOUNT_SESSION).
| Parameter | Type | Required | Meaning |
|---|---|---|---|
project_id | string | yes | |
confirmation_token | string | no |
Calls DELETE /v1/projects/:pid. Without the elevation token the API answers 401 and no confirmation token is issued. Deleting frees the account's app slot and takes the project's functions and site with it.
