Skip to content
AdCrunch
Esc
↑↓navigate↵open⌘Jpreview
On this page

asset_register

Register an Asset into the provider library of one advertiser, so that an ad of that advertiser can use it. The call returns at once, and asset_get gives the state.

Ask to register a file with one advertiser, so that an ad of that advertiser can use it. The Registration runs in the background.

“Put the spring sale video in the Acme Meta account.”

The agent finds the advertiser with list_advertisers, and then calls this tool. The call returns at once, and the Registration runs. The agent then reads the Asset with asset_get until the Registration settles. You see the result: the file is ready, with the id that the provider gave it, or the Registration failed, with the reason.

While a Registration of a file with an advertiser runs, or after it succeeds, AdCrunch refuses a second one, so a retry makes no copy. After a failed Registration, the agent can register the file again. What each provider supports states which providers take a Registration.

This tool is part of the job Bring your own creative.

Reference

Available on: Meta TikTok

Place an Asset in one advertiser’s provider-side library, so ads in that account can use it.

Registration targets an advertiser, not a provider — an organization usually has several ad accounts. Use list_advertisers to find the right id.

Returns immediately; poll asset_get to see when the Registration becomes ready. Video can stay running for several minutes while the provider processes it, which is normal and not a failure. Registering the same Asset to the same advertiser twice is refused rather than duplicated, so a retry is safe.

Input

Argument Type Required Description
advertiser_id string yes The advertiser (ad account) id — acc_….
asset_id string yes The Asset id (ast_…).

Output

A successful call returns this object in structuredContent.

Field Type Always present Description
registration object yes The Registration, at running, with no providerIdentifier yet. Poll asset_get until the Registration is ready or failed.
registration.advertiserId string yes The advertiser whose provider library gets the Asset.
registration.assetId string yes The Asset that the Registration places.
registration.createdAt number yes Milliseconds since the Unix epoch, UTC.
registration.deletedAt number or null yes Always null here. When a retry replaces a failed Registration, AdCrunch sets this time on the old one and answers it no more.
registration.failureReason string or null yes Why the Registration failed, as a sentence: the words of the provider, or the words of AdCrunch. null unless status is failed.
registration.id string yes The id of the Registration, reg_….
registration.organizationId string yes The organization that owns the Asset.
registration.provider one of meta, gads, tiktok, x, openai, snapchat, dv360 yes The provider that owns the advertiser.
registration.providerIdentifier string or null yes The id that the provider gave the file: a Meta image hash, or the id of the image or the video at the provider. null until the provider gives it, and null on a failed Registration. An image gets its id when the Registration becomes ready. A video gets its id earlier, while the Registration is running, because the provider gives the id before it has processed the file. Build a creative from a ready Registration only.
registration.status one of running, ready, failed yes Video can stay running for several minutes while the provider processes it. That is normal, and not a failure.
registration.updatedAt number or null yes When the Registration last changed, in milliseconds since the Unix epoch, UTC. null until its first change.
registration.uploadSessionId string or null yes An in-flight provider upload session, where the protocol has one. null for every image.
registration.workflowId string yes The durable execution that runs the Registration.

Failure codes

A failed call has isError set, and structuredContent.error holds one of these codes. Errors describes the shape of a failed call.

  • not_found
  • already_registered
  • forbidden
  • invalid_request
  • internal_error

Scope

The token must hold asset:write. Auth & scopes lists each scope.

Annotations

A client reads these hints. A hint that the tool does not declare has the default value of the MCP specification.

  • Writes. The tool can change data.
  • Not destructive. The tool makes only additive changes.
  • Idempotent. A second call with the same arguments changes nothing more.
  • Open world. The tool reaches a system outside AdCrunch, such as an ad platform.

Example

The arguments:

{
  "advertiser_id": "acc_1203456789012345",
  "asset_id": "ast_7c1e9a"
}

The result, in structuredContent:

{
  "registration": {
    "advertiserId": "acc_1203456789012345",
    "assetId": "ast_7c1e9a",
    "createdAt": 1790000121000,
    "deletedAt": null,
    "failureReason": null,
    "id": "reg_4b81d2",
    "organizationId": "org_3a7f10",
    "provider": "meta",
    "providerIdentifier": null,
    "status": "running",
    "updatedAt": null,
    "uploadSessionId": null,
    "workflowId": "reg_4b81d2"
  }
}

Was this page helpful?