AgentDBDocs

Publishing

CMS delivery and revisions, public forms, content dispatch.

Start with: cms_configure, cms_publish, forms_create, forms_submissions, cms_revisions.

29 operations. Discover them from an agent with agentdb_capabilities {"category": "publishing"}.

#cms_configure

stable added in 1.0.0-rc.6 changes data

Make an object a CMS content type (or change its settings): status/slug/locale fields, the ONLY fields the public delivery API shows (public_fields), delivery off | token (default) | public, CORS origins, cache seconds. Install {template: "cms"} first for pages and posts. Nothing is public until you do this.

MCP tool
cms_configure
REST
POST /v1/workspaces/{ws}/cms/types scope schema:write
CLI
agentdb cms configure

Arguments

ArgumentTypeRequiredDescription
objectstringyesObject type name, e.g. contact.
status_fieldstringstring, default "status"
published_statusstringstring, 1–64 characters, default "published"
slug_fieldstringstring, default "slug"
locale_fieldstring | nullstring | null, default null
translation_relationshipstring | nullstring | null, default null
public_fieldsstring[]yesFields the public content API may return. (max 100 items)
delivery"off" | "token" | "public"string, one of: off, token, public, default "token"
allowed_originsstring[] | nullstring[] | null, default null
cache_secondsintegerinteger, 0–86400, default 60
idempotency_keystringOptional retry key ([A-Za-z0-9._:-], max 255). Repeating a call with the same key and arguments returns the original result without writing again.
workspacestringWorkspace id (preferred), slug or exact name. Omit for the default workspace. Resolve names once with workspace_select.

Example

MCP
{
  "tool": "cms_configure",
  "arguments": {
    "object": "cms_post",
    "public_fields": [
      "title",
      "slug",
      "body"
    ],
    "delivery": "token"
  }
}
MCP via agentdb_execute
{
  "tool": "agentdb_execute",
  "arguments": {
    "operation": "cms_configure",
    "arguments": {
      "object": "cms_post",
      "public_fields": [
        "title",
        "slug",
        "body"
      ],
      "delivery": "token"
    }
  }
}
REST
curl -s -X POST "https://app.agentdb.link/v1/workspaces/$AGENTDB_WORKSPACE/cms/types" \
  -H "Authorization: Bearer $AGENTDB_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"object":"cms_post","public_fields":["title","slug","body"],"delivery":"token"}'
CLI
agentdb cms configure [options]

#cms_diff

stable added in 1.0.0-rc.6 read-only

Field-by-field diff between two revisions (Markdown bodies line by line); to defaults to the current version.

MCP tool
cms_diff
REST
GET /v1/workspaces/{ws}/records/{record}/diff scope records:read
CLI
agentdb cms diff

Arguments

ArgumentTypeRequiredDescription
fromintegeryesRevision to compare from.
tointegerEnd of the time range (ISO 8601 date-time with time zone).
record_idstringyesRecord id (rec_...)
workspacestringWorkspace id (preferred), slug or exact name. Omit for the default workspace. Resolve names once with workspace_select.

Example

MCP
{
  "tool": "cms_diff",
  "arguments": {
    "record_id": "rec_example",
    "from": 1,
    "to": 2
  }
}
MCP via agentdb_execute
{
  "tool": "agentdb_execute",
  "arguments": {
    "operation": "cms_diff",
    "arguments": {
      "record_id": "rec_example",
      "from": 1,
      "to": 2
    }
  }
}
REST
curl -s "https://app.agentdb.link/v1/workspaces/$AGENTDB_WORKSPACE/records/rec_example/diff" \
  -H "Authorization: Bearer $AGENTDB_TOKEN"
CLI
agentdb cms diff [options] <record> <from> [to]

#cms_get

stable added in 1.0.0-rc.6 read-only

One content type's delivery settings and published item count.

MCP tool
cms_get
REST
GET /v1/workspaces/{ws}/cms/types/{object} scope schema:read

Arguments

ArgumentTypeRequiredDescription
objectstringyesObject name, e.g. cms_post
workspacestringWorkspace id (preferred), slug or exact name. Omit for the default workspace. Resolve names once with workspace_select.

Example

MCP
{
  "tool": "cms_get",
  "arguments": {
    "object": "cms_post"
  }
}
MCP via agentdb_execute
{
  "tool": "agentdb_execute",
  "arguments": {
    "operation": "cms_get",
    "arguments": {
      "object": "cms_post"
    }
  }
}
REST
curl -s "https://app.agentdb.link/v1/workspaces/$AGENTDB_WORKSPACE/cms/types/cms_post" \
  -H "Authorization: Bearer $AGENTDB_TOKEN"

#cms_list

stable added in 1.0.0-rc.6 read-only

CMS content types and their delivery settings.

MCP tool
cms_list
REST
GET /v1/workspaces/{ws}/cms/types scope schema:read

Arguments

ArgumentTypeRequiredDescription
workspacestringWorkspace id (preferred), slug or exact name. Omit for the default workspace. Resolve names once with workspace_select.

Example

MCP
{
  "tool": "cms_list",
  "arguments": {}
}
MCP via agentdb_execute
{
  "tool": "agentdb_execute",
  "arguments": {
    "operation": "cms_list",
    "arguments": {}
  }
}
REST
curl -s "https://app.agentdb.link/v1/workspaces/$AGENTDB_WORKSPACE/cms/types" \
  -H "Authorization: Bearer $AGENTDB_TOKEN"

#cms_preview

stable added in 1.0.0-rc.6 read-only

What the delivery API returns for a type (or one slug), without a token.

MCP tool
cms_preview
REST
POST /v1/workspaces/{ws}/cms/preview scope records:read

Arguments

ArgumentTypeRequiredDescription
objectstringyesObject type name, e.g. contact.
slugstringstring, 1–500 characters
localestringstring, 1–35 characters
limitintegerinteger, 1–100, default 20
workspacestringWorkspace id (preferred), slug or exact name. Omit for the default workspace. Resolve names once with workspace_select.

Example

MCP
{
  "tool": "cms_preview",
  "arguments": {
    "object": "cms_post",
    "slug": "hello-world"
  }
}
MCP via agentdb_execute
{
  "tool": "agentdb_execute",
  "arguments": {
    "operation": "cms_preview",
    "arguments": {
      "object": "cms_post",
      "slug": "hello-world"
    }
  }
}
REST
curl -s -X POST "https://app.agentdb.link/v1/workspaces/$AGENTDB_WORKSPACE/cms/preview" \
  -H "Authorization: Bearer $AGENTDB_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"object":"cms_post","slug":"hello-world"}'

#cms_publish

stable added in 1.0.0-rc.6 changes data

Publish an item that is in review (or re-publish a published one with its latest edits): takes the immutable snapshot the delivery API serves. Edits made while published are not delivered until you publish again. An approval policy may require approvals_submit instead.

MCP tool
cms_publish
REST
POST /v1/workspaces/{ws}/records/{record}/publish scope records:write
CLI
agentdb cms publish

Arguments

ArgumentTypeRequiredDescription
versionintegerThe current version of the item. The call fails with VERSION_CONFLICT if it changed.
record_idstringyesRecord id (rec_...)
idempotency_keystringOptional retry key ([A-Za-z0-9._:-], max 255). Repeating a call with the same key and arguments returns the original result without writing again.
workspacestringWorkspace id (preferred), slug or exact name. Omit for the default workspace. Resolve names once with workspace_select.

Example

MCP
{
  "tool": "cms_publish",
  "arguments": {
    "record_id": "rec_example",
    "version": 2
  }
}
MCP via agentdb_execute
{
  "tool": "agentdb_execute",
  "arguments": {
    "operation": "cms_publish",
    "arguments": {
      "record_id": "rec_example",
      "version": 2
    }
  }
}
REST
curl -s -X POST "https://app.agentdb.link/v1/workspaces/$AGENTDB_WORKSPACE/records/rec_example/publish" \
  -H "Authorization: Bearer $AGENTDB_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"version":2}'
CLI
agentdb cms publish [options] <record>

#cms_restore

stable added in 1.0.0-rc.6 changes data

Restore the content of an earlier revision as a new version (needs the current version; the status stays).

MCP tool
cms_restore
REST
POST /v1/workspaces/{ws}/records/{record}/restore-revision scope records:write
CLI
agentdb cms restore

Arguments

ArgumentTypeRequiredDescription
revisionintegeryesRevision to restore.
versionintegeryesThe current version of the item. The call fails with VERSION_CONFLICT if it changed.
record_idstringyesRecord id (rec_...)
idempotency_keystringOptional retry key ([A-Za-z0-9._:-], max 255). Repeating a call with the same key and arguments returns the original result without writing again.
workspacestringWorkspace id (preferred), slug or exact name. Omit for the default workspace. Resolve names once with workspace_select.

Example

version is the record's current version; revision comes from cms_revisions.

MCP
{
  "tool": "cms_restore",
  "arguments": {
    "record_id": "rec_example",
    "revision": 1,
    "version": 3
  }
}
MCP via agentdb_execute
{
  "tool": "agentdb_execute",
  "arguments": {
    "operation": "cms_restore",
    "arguments": {
      "record_id": "rec_example",
      "revision": 1,
      "version": 3
    }
  }
}
REST
curl -s -X POST "https://app.agentdb.link/v1/workspaces/$AGENTDB_WORKSPACE/records/rec_example/restore-revision" \
  -H "Authorization: Bearer $AGENTDB_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"revision":1,"version":3}'
CLI
agentdb cms restore [options] <record> <revision>

#cms_revision_get

stable added in 1.0.0-rc.6 read-only

The full data of one revision.

MCP tool
cms_revision_get
REST
GET /v1/workspaces/{ws}/records/{record}/revisions/{revision} scope records:read

Arguments

ArgumentTypeRequiredDescription
record_idstringyesRecord id (rec_...)
revisionintegeryesVersion number
workspacestringWorkspace id (preferred), slug or exact name. Omit for the default workspace. Resolve names once with workspace_select.

Example

MCP
{
  "tool": "cms_revision_get",
  "arguments": {
    "record_id": "rec_example",
    "revision": 1
  }
}
MCP via agentdb_execute
{
  "tool": "agentdb_execute",
  "arguments": {
    "operation": "cms_revision_get",
    "arguments": {
      "record_id": "rec_example",
      "revision": 1
    }
  }
}
REST
curl -s "https://app.agentdb.link/v1/workspaces/$AGENTDB_WORKSPACE/records/rec_example/revisions/1" \
  -H "Authorization: Bearer $AGENTDB_TOKEN"

#cms_revisions

stable added in 1.0.0-rc.6 read-only

Every version of a CMS item (newest first) with status, author and which one is published; pending_changes says whether edits are unpublished.

MCP tool
cms_revisions
REST
GET /v1/workspaces/{ws}/records/{record}/revisions scope records:read
CLI
agentdb cms revisions

Arguments

ArgumentTypeRequiredDescription
limitintegerinteger, 1–100, default 50
beforeintegerinteger, at least 1
record_idstringyesRecord id (rec_...)
workspacestringWorkspace id (preferred), slug or exact name. Omit for the default workspace. Resolve names once with workspace_select.

Example

MCP
{
  "tool": "cms_revisions",
  "arguments": {
    "record_id": "rec_example",
    "limit": 10
  }
}
MCP via agentdb_execute
{
  "tool": "agentdb_execute",
  "arguments": {
    "operation": "cms_revisions",
    "arguments": {
      "record_id": "rec_example",
      "limit": 10
    }
  }
}
REST
curl -s "https://app.agentdb.link/v1/workspaces/$AGENTDB_WORKSPACE/records/rec_example/revisions" \
  -H "Authorization: Bearer $AGENTDB_TOKEN"
CLI
agentdb cms revisions [options] <record>

#cms_schedule_publish

stable added in 1.0.0-rc.6 changes data

Publish an item at a future time (a one-off scheduler job; owners/admins). The item must then be in a status that may move to published (e.g. in_review).

MCP tool
cms_schedule_publish
REST
POST /v1/workspaces/{ws}/records/{record}/schedule-publish scope records:write

Arguments

ArgumentTypeRequiredDescription
atstringyesWhen to publish (ISO 8601 date-time).
record_idstringyesRecord id (rec_...)
idempotency_keystringOptional retry key ([A-Za-z0-9._:-], max 255). Repeating a call with the same key and arguments returns the original result without writing again.
workspacestringWorkspace id (preferred), slug or exact name. Omit for the default workspace. Resolve names once with workspace_select.

Example

MCP
{
  "tool": "cms_schedule_publish",
  "arguments": {
    "record_id": "rec_example",
    "at": "2026-12-01T08:00:00Z"
  }
}
MCP via agentdb_execute
{
  "tool": "agentdb_execute",
  "arguments": {
    "operation": "cms_schedule_publish",
    "arguments": {
      "record_id": "rec_example",
      "at": "2026-12-01T08:00:00Z"
    }
  }
}
REST
curl -s -X POST "https://app.agentdb.link/v1/workspaces/$AGENTDB_WORKSPACE/records/rec_example/schedule-publish" \
  -H "Authorization: Bearer $AGENTDB_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"at":"2026-12-01T08:00:00Z"}'

#cms_tokens_create

stable added in 1.0.0-rc.6 changes data

Create a read-only delivery token for websites (optionally limited to types, origins, an expiry). Shown once; stored as SHA-256.

MCP tool
cms_tokens_create
REST
POST /v1/workspaces/{ws}/cms/delivery-tokens scope schema:write

Arguments

ArgumentTypeRequiredDescription
labelstringyesA name for this item, shown in lists. (min length 1, max length 100)
typesstring[]string[], up to 50 items
expires_in_daysintegerinteger, 1–3650
allowed_originsstring[]string[], up to 20 items
idempotency_keystringOptional retry key ([A-Za-z0-9._:-], max 255). Repeating a call with the same key and arguments returns the original result without writing again.
workspacestringWorkspace id (preferred), slug or exact name. Omit for the default workspace. Resolve names once with workspace_select.

Example

MCP
{
  "tool": "cms_tokens_create",
  "arguments": {
    "label": "Website",
    "types": [
      "cms_post"
    ],
    "expires_in_days": 90
  }
}
MCP via agentdb_execute
{
  "tool": "agentdb_execute",
  "arguments": {
    "operation": "cms_tokens_create",
    "arguments": {
      "label": "Website",
      "types": [
        "cms_post"
      ],
      "expires_in_days": 90
    }
  }
}
REST
curl -s -X POST "https://app.agentdb.link/v1/workspaces/$AGENTDB_WORKSPACE/cms/delivery-tokens" \
  -H "Authorization: Bearer $AGENTDB_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"label":"Website","types":["cms_post"],"expires_in_days":90}'

#cms_tokens_list

stable added in 1.0.0-rc.6 read-only

Delivery tokens (never the secret) with status and last use.

MCP tool
cms_tokens_list
REST
GET /v1/workspaces/{ws}/cms/delivery-tokens scope schema:read

Arguments

ArgumentTypeRequiredDescription
workspacestringWorkspace id (preferred), slug or exact name. Omit for the default workspace. Resolve names once with workspace_select.

Example

MCP
{
  "tool": "cms_tokens_list",
  "arguments": {}
}
MCP via agentdb_execute
{
  "tool": "agentdb_execute",
  "arguments": {
    "operation": "cms_tokens_list",
    "arguments": {}
  }
}
REST
curl -s "https://app.agentdb.link/v1/workspaces/$AGENTDB_WORKSPACE/cms/delivery-tokens" \
  -H "Authorization: Bearer $AGENTDB_TOKEN"

#cms_tokens_revoke

stable added in 1.0.0-rc.6 changes data destructive

Revoke a delivery token at once.

MCP tool
cms_tokens_revoke
REST
DELETE /v1/workspaces/{ws}/cms/delivery-tokens/{token} scope schema:write

Arguments

ArgumentTypeRequiredDescription
token_idstringyesToken id (dtk_...)
idempotency_keystringOptional retry key ([A-Za-z0-9._:-], max 255). Repeating a call with the same key and arguments returns the original result without writing again.
workspacestringWorkspace id (preferred), slug or exact name. Omit for the default workspace. Resolve names once with workspace_select.

Example

MCP
{
  "tool": "cms_tokens_revoke",
  "arguments": {
    "token_id": "dtk_example"
  }
}
MCP via agentdb_execute
{
  "tool": "agentdb_execute",
  "arguments": {
    "operation": "cms_tokens_revoke",
    "arguments": {
      "token_id": "dtk_example"
    }
  }
}
REST
curl -s -X DELETE "https://app.agentdb.link/v1/workspaces/$AGENTDB_WORKSPACE/cms/delivery-tokens/dtk_example" \
  -H "Authorization: Bearer $AGENTDB_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{}'

#cms_unconfigure

stable added in 1.0.0-rc.6 changes data destructive

Stop treating an object as a content type: nothing of it is delivered any more. Records and revisions stay.

MCP tool
cms_unconfigure
REST
DELETE /v1/workspaces/{ws}/cms/types/{object} scope schema:write
CLI
agentdb cms unconfigure

Arguments

ArgumentTypeRequiredDescription
objectstringyesObject name
idempotency_keystringOptional retry key ([A-Za-z0-9._:-], max 255). Repeating a call with the same key and arguments returns the original result without writing again.
workspacestringWorkspace id (preferred), slug or exact name. Omit for the default workspace. Resolve names once with workspace_select.

Example

MCP
{
  "tool": "cms_unconfigure",
  "arguments": {
    "object": "cms_post"
  }
}
MCP via agentdb_execute
{
  "tool": "agentdb_execute",
  "arguments": {
    "operation": "cms_unconfigure",
    "arguments": {
      "object": "cms_post"
    }
  }
}
REST
curl -s -X DELETE "https://app.agentdb.link/v1/workspaces/$AGENTDB_WORKSPACE/cms/types/cms_post" \
  -H "Authorization: Bearer $AGENTDB_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{}'
CLI
agentdb cms unconfigure [options] <object>

#cms_unpublish

stable added in 1.0.0-rc.6 changes data

Take an item offline by moving it to another status (default archived); the snapshot is removed at once.

MCP tool
cms_unpublish
REST
POST /v1/workspaces/{ws}/records/{record}/unpublish scope records:write
CLI
agentdb cms unpublish

Arguments

ArgumentTypeRequiredDescription
versionintegerThe current version of the item. The call fails with VERSION_CONFLICT if it changed.
statusstringstring, 1–64 characters, default "archived"
record_idstringyesRecord id (rec_...)
idempotency_keystringOptional retry key ([A-Za-z0-9._:-], max 255). Repeating a call with the same key and arguments returns the original result without writing again.
workspacestringWorkspace id (preferred), slug or exact name. Omit for the default workspace. Resolve names once with workspace_select.

Example

MCP
{
  "tool": "cms_unpublish",
  "arguments": {
    "record_id": "rec_example"
  }
}
MCP via agentdb_execute
{
  "tool": "agentdb_execute",
  "arguments": {
    "operation": "cms_unpublish",
    "arguments": {
      "record_id": "rec_example"
    }
  }
}
REST
curl -s -X POST "https://app.agentdb.link/v1/workspaces/$AGENTDB_WORKSPACE/records/rec_example/unpublish" \
  -H "Authorization: Bearer $AGENTDB_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{}'
CLI
agentdb cms unpublish [options] <record>

#content_dispatch

experimental added in 1.0.0-rc.6 changes data

Hand a content post to the operator's outbound publisher. Off by default (FEATURE_DISABLED): AgentDB never posts to social networks itself. Experimental: may change before 2.0.

Experimental: may change before 2.0. Outbound content adapters are off by default and none is approved yet.

MCP tool
content_dispatch
REST
POST /v1/workspaces/{ws}/records/{record}/dispatch scope records:write
CLI
agentdb content dispatch

Arguments

ArgumentTypeRequiredDescription
channel_fieldstringstring, up to 64 characters, default "channel"
record_idstringyesRecord id (rec_...)
idempotency_keystringOptional retry key ([A-Za-z0-9._:-], max 255). Repeating a call with the same key and arguments returns the original result without writing again.
workspacestringWorkspace id (preferred), slug or exact name. Omit for the default workspace. Resolve names once with workspace_select.

Example

MCP
{
  "tool": "content_dispatch",
  "arguments": {
    "record_id": "rec_example"
  }
}
MCP via agentdb_execute
{
  "tool": "agentdb_execute",
  "arguments": {
    "operation": "content_dispatch",
    "arguments": {
      "record_id": "rec_example"
    }
  }
}
REST
curl -s -X POST "https://app.agentdb.link/v1/workspaces/$AGENTDB_WORKSPACE/records/rec_example/dispatch" \
  -H "Authorization: Bearer $AGENTDB_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{}'
CLI
agentdb content dispatch [options] <record>

#delivery.asset

stable

An asset of a published item (re-checked on every download)

REST
GET /v1/delivery-assets/{ws}/{file} no authentication
ParameterInTypeRequiredDescription
wspathstringyesstring
filepathstringyesstring

Example

REST
curl -s "https://app.agentdb.link/v1/delivery-assets/$AGENTDB_WORKSPACE/<file>"

#delivery.get

stable

One published item by slug (?locale=)

REST
GET /v1/delivery/{ws}/{type}/{slug} no authentication
ParameterInTypeRequiredDescription
wspathstringyesstring
typepathstringyesstring
slugpathstringyesstring

Example

REST
curl -s "https://app.agentdb.link/v1/delivery/$AGENTDB_WORKSPACE/<type>/<slug>"

#delivery.list

stable

Published items of a CMS content type (delivery token or public type; ETag, CORS)

REST
GET /v1/delivery/{ws}/{type} no authentication
ParameterInTypeRequiredDescription
wspathstringyesstring
typepathstringyesstring

Example

REST
curl -s "https://app.agentdb.link/v1/delivery/$AGENTDB_WORKSPACE/<type>"

#forms.public.get

stable

A public form's inputs and a single-use ticket

REST
GET /v1/forms/{ws}/{token} no authentication
ParameterInTypeRequiredDescription
wspathstringyesstring
tokenpathstringyesstring

Example

REST
curl -s "https://app.agentdb.link/v1/forms/$AGENTDB_WORKSPACE/<token>"

#forms.public.submit

stable

Submit a public form (application/json; ticket, honeypot, rate limits)

REST
POST /v1/forms/{ws}/{token} no authentication
ParameterInTypeRequiredDescription
wspathstringyesstring
tokenpathstringyesstring

Example

REST
curl -s -X POST "https://app.agentdb.link/v1/forms/$AGENTDB_WORKSPACE/<token>"

#forms_create

stable added in 1.0.0-rc.6 changes data

Create a public form that creates records of one object: inputs mapped to fields (validated by the field types), fixed values, honeypot, minimum fill time, optional proof of work, size and rate limits, allowed origins, spam quarantine, inbox notifications. Returns the form token once (the public URL is /v1/forms/<workspace>/<token>). Install {template: "forms"} for a ready inquiry object.

MCP tool
forms_create
REST
POST /v1/workspaces/{ws}/forms scope schema:write
CLI
agentdb forms create

Arguments

ArgumentTypeRequiredDescription
namestringyesForm name: lowercase letters, digits and _.
objectstringyesObject type the form creates records in.
status"active" | "closed"string, one of: active, closed, default "active"
titlestringyesTitle shown to people. (min length 1, max length 200)
descriptionstringstring, up to 2000 characters
fieldsobject[]yesThe form's fields, in order. (max 50 items)
filesobject[]object[], up to 5 items, default []
fixed_valuesobjectobject, default {}
honeypotstringstring, default "website"
min_fill_secondsintegerinteger, 0–3600, default 3
challenge"none" | "proof_of_work"string, one of: none, proof_of_work, default "none"
pow_difficultyintegerinteger, 8–24, default 16
max_bytesintegerinteger, 512–65536, default 16384
allowed_originsstring[] | nullstring[] | null, default null
rate_limitsobjectobject, default {}
spamobjectobject, default {}
max_quarantinedintegerinteger, 1–10000, default 500
notifystring[]string[], up to 10 items, default []
auto_replyobjectobject
success_messagestringstring, up to 500 characters, default "Thank you. We received your message."
idempotency_keystringOptional retry key ([A-Za-z0-9._:-], max 255). Repeating a call with the same key and arguments returns the original result without writing again.
workspacestringWorkspace id (preferred), slug or exact name. Omit for the default workspace. Resolve names once with workspace_select.

Example

MCP
{
  "tool": "forms_create",
  "arguments": {
    "name": "contact_us",
    "object": "lead",
    "title": "Contact us",
    "fields": [
      {
        "name": "email",
        "field": "email",
        "label": "Email",
        "required": true
      },
      {
        "name": "message",
        "field": "message",
        "label": "Message",
        "max_length": 2000
      }
    ]
  }
}
MCP via agentdb_execute
{
  "tool": "agentdb_execute",
  "arguments": {
    "operation": "forms_create",
    "arguments": {
      "name": "contact_us",
      "object": "lead",
      "title": "Contact us",
      "fields": [
        {
          "name": "email",
          "field": "email",
          "label": "Email",
          "required": true
        },
        {
          "name": "message",
          "field": "message",
          "label": "Message",
          "max_length": 2000
        }
      ]
    }
  }
}
REST
curl -s -X POST "https://app.agentdb.link/v1/workspaces/$AGENTDB_WORKSPACE/forms" \
  -H "Authorization: Bearer $AGENTDB_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"name":"contact_us","object":"lead","title":"Contact us","fields":[{"name":"email","field":"email","label":"Email","required":true},{"name":"message","field":"message","label":"Message","max_length":2000}]}'
CLI
agentdb forms create [options]

#forms_delete

stable added in 1.0.0-rc.6 changes data destructive

Delete a form and its submission log; records it created stay.

MCP tool
forms_delete
REST
DELETE /v1/workspaces/{ws}/forms/{form} scope schema:write
CLI
agentdb forms delete

Arguments

ArgumentTypeRequiredDescription
formstringyesForm id (frm_...) or name
idempotency_keystringOptional retry key ([A-Za-z0-9._:-], max 255). Repeating a call with the same key and arguments returns the original result without writing again.
workspacestringWorkspace id (preferred), slug or exact name. Omit for the default workspace. Resolve names once with workspace_select.

Example

MCP
{
  "tool": "forms_delete",
  "arguments": {
    "form": "contact_us"
  }
}
MCP via agentdb_execute
{
  "tool": "agentdb_execute",
  "arguments": {
    "operation": "forms_delete",
    "arguments": {
      "form": "contact_us"
    }
  }
}
REST
curl -s -X DELETE "https://app.agentdb.link/v1/workspaces/$AGENTDB_WORKSPACE/forms/contact_us" \
  -H "Authorization: Bearer $AGENTDB_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{}'
CLI
agentdb forms delete [options] <form>

#forms_get

stable added in 1.0.0-rc.6 read-only

One form and its versions.

MCP tool
forms_get
REST
GET /v1/workspaces/{ws}/forms/{form} scope schema:read
CLI
agentdb forms get

Arguments

ArgumentTypeRequiredDescription
formstringyesForm id (frm_...) or name
workspacestringWorkspace id (preferred), slug or exact name. Omit for the default workspace. Resolve names once with workspace_select.

Example

MCP
{
  "tool": "forms_get",
  "arguments": {
    "form": "contact_us"
  }
}
MCP via agentdb_execute
{
  "tool": "agentdb_execute",
  "arguments": {
    "operation": "forms_get",
    "arguments": {
      "form": "contact_us"
    }
  }
}
REST
curl -s "https://app.agentdb.link/v1/workspaces/$AGENTDB_WORKSPACE/forms/contact_us" \
  -H "Authorization: Bearer $AGENTDB_TOKEN"
CLI
agentdb forms get [options] <form>

#forms_list

stable added in 1.0.0-rc.6 read-only

Forms with their definitions and submission counts (never the token).

MCP tool
forms_list
REST
GET /v1/workspaces/{ws}/forms scope schema:read
CLI
agentdb forms list

Arguments

ArgumentTypeRequiredDescription
workspacestringWorkspace id (preferred), slug or exact name. Omit for the default workspace. Resolve names once with workspace_select.

Example

MCP
{
  "tool": "forms_list",
  "arguments": {}
}
MCP via agentdb_execute
{
  "tool": "agentdb_execute",
  "arguments": {
    "operation": "forms_list",
    "arguments": {}
  }
}
REST
curl -s "https://app.agentdb.link/v1/workspaces/$AGENTDB_WORKSPACE/forms" \
  -H "Authorization: Bearer $AGENTDB_TOKEN"
CLI
agentdb forms list [options]

#forms_review

stable added in 1.0.0-rc.6 changes data

Release a quarantined submission (creates its record) or discard it (erases its data).

MCP tool
forms_review
REST
POST /v1/workspaces/{ws}/form-submissions/{submission}/review scope records:write

Arguments

ArgumentTypeRequiredDescription
decision"release" | "discard"yesrelease keeps the submission; discard removes it.
commentstringstring, up to 2000 characters
submission_idstringyesSubmission id (fsb_...)
idempotency_keystringOptional retry key ([A-Za-z0-9._:-], max 255). Repeating a call with the same key and arguments returns the original result without writing again.
workspacestringWorkspace id (preferred), slug or exact name. Omit for the default workspace. Resolve names once with workspace_select.

Example

submission_id comes from forms_submissions.

MCP
{
  "tool": "forms_review",
  "arguments": {
    "submission_id": "fsb_example",
    "decision": "release",
    "comment": "Not spam."
  }
}
MCP via agentdb_execute
{
  "tool": "agentdb_execute",
  "arguments": {
    "operation": "forms_review",
    "arguments": {
      "submission_id": "fsb_example",
      "decision": "release",
      "comment": "Not spam."
    }
  }
}
REST
curl -s -X POST "https://app.agentdb.link/v1/workspaces/$AGENTDB_WORKSPACE/form-submissions/fsb_example/review" \
  -H "Authorization: Bearer $AGENTDB_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"decision":"release","comment":"Not spam."}'

#forms_rotate_token

stable added in 1.0.0-rc.6 changes data

Give a form a new public token; the old link stops working at once.

MCP tool
forms_rotate_token
REST
POST /v1/workspaces/{ws}/forms/{form}/rotate-token scope schema:write
CLI
agentdb forms rotate-token

Arguments

ArgumentTypeRequiredDescription
formstringyesForm id (frm_...) or name
idempotency_keystringOptional retry key ([A-Za-z0-9._:-], max 255). Repeating a call with the same key and arguments returns the original result without writing again.
workspacestringWorkspace id (preferred), slug or exact name. Omit for the default workspace. Resolve names once with workspace_select.

Example

MCP
{
  "tool": "forms_rotate_token",
  "arguments": {
    "form": "contact_us"
  }
}
MCP via agentdb_execute
{
  "tool": "agentdb_execute",
  "arguments": {
    "operation": "forms_rotate_token",
    "arguments": {
      "form": "contact_us"
    }
  }
}
REST
curl -s -X POST "https://app.agentdb.link/v1/workspaces/$AGENTDB_WORKSPACE/forms/contact_us/rotate-token" \
  -H "Authorization: Bearer $AGENTDB_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{}'
CLI
agentdb forms rotate-token [options] <form>

#forms_submissions

stable added in 1.0.0-rc.6 read-only

Submission log (newest first): accepted (with record_id), quarantined (with the untrusted data to review), released, discarded.

MCP tool
forms_submissions
REST
GET /v1/workspaces/{ws}/form-submissions scope records:read
CLI
agentdb forms submissions

Arguments

ArgumentTypeRequiredDescription
formstringstring, up to 100 characters
status"accepted" | "quarantined" | "released" | "discarded"string, one of: accepted, quarantined, released, discarded
limitintegerinteger, 1–200, default 50
afterstringstring, up to 64 characters
workspacestringWorkspace id (preferred), slug or exact name. Omit for the default workspace. Resolve names once with workspace_select.

Example

MCP
{
  "tool": "forms_submissions",
  "arguments": {
    "form": "contact_us",
    "status": "quarantined",
    "limit": 20
  }
}
MCP via agentdb_execute
{
  "tool": "agentdb_execute",
  "arguments": {
    "operation": "forms_submissions",
    "arguments": {
      "form": "contact_us",
      "status": "quarantined",
      "limit": 20
    }
  }
}
REST
curl -s "https://app.agentdb.link/v1/workspaces/$AGENTDB_WORKSPACE/form-submissions" \
  -H "Authorization: Bearer $AGENTDB_TOKEN"
CLI
agentdb forms submissions [options]

#forms_update

stable added in 1.0.0-rc.6 changes data

Change parts of a form's definition or close it (status: closed). Needs the current version; each change is a new version.

MCP tool
forms_update
REST
PATCH /v1/workspaces/{ws}/forms/{form} scope schema:write
CLI
agentdb forms update

Arguments

ArgumentTypeRequiredDescription
versionintegeryesThe current version of the item. The call fails with VERSION_CONFLICT if it changed.
status"active" | "closed"string, one of: active, closed
formstringyesForm id (frm_...) or name
idempotency_keystringOptional retry key ([A-Za-z0-9._:-], max 255). Repeating a call with the same key and arguments returns the original result without writing again.
workspacestringWorkspace id (preferred), slug or exact name. Omit for the default workspace. Resolve names once with workspace_select.

Example

MCP
{
  "tool": "forms_update",
  "arguments": {
    "form": "contact_us",
    "version": 1,
    "status": "closed"
  }
}
MCP via agentdb_execute
{
  "tool": "agentdb_execute",
  "arguments": {
    "operation": "forms_update",
    "arguments": {
      "form": "contact_us",
      "version": 1,
      "status": "closed"
    }
  }
}
REST
curl -s -X PATCH "https://app.agentdb.link/v1/workspaces/$AGENTDB_WORKSPACE/forms/contact_us" \
  -H "Authorization: Bearer $AGENTDB_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"version":1,"status":"closed"}'
CLI
agentdb forms update [options] <form>