Skip to main content
Glama
hermoso-ai

Hermoso

Official

Turn Spark-Ads authorization on or off for the brand’s own post

set_tiktok_post_ad_authorization

Enable or disable TikTok Ad authorization on your post to generate a Spark Ads code; requires confirmation when enabling and fails to disable if an active Spark Ad uses the post.

Instructions

Turn TikTok's 'Ad authorization' setting ON or OFF for a post the authorized account owns — THIS IS WHERE A SPARK ADS AUTHORIZATION CODE COMES FROM. Until now the only way to get one was a human opening the TikTok app and copying a string; that is still true for somebody ELSE's post, and no longer true for the brand's own. Turning it on mints the code, which you then hand to authorize_tiktok_ads_spark_post so an ad account may promote the post. IT IS CONFIRM-GATED ON THE WAY ON, and not because it spends: TikTok changes the post's privacy to 'Available for Ads', sends it to their ad review team, says the post 'may also appear as an ad on third party platforms', and treats the call as accepting their Advertising Content Terms on the owner's behalf. Turning it OFF needs no confirm — but TikTok REFUSES to turn it off while an active Spark Ad is using the post, so pause those campaigns first. authorizationDays must be one of 7, 30, 60, 180, 365. THE ANSWER IS THE READ-BACK: the reply carries the post's real authorization status and its code, because TikTok's own response body is empty. NEEDS THE TIKTOK ACCOUNT AUTHORIZATION (see tiktok_account_status).

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
itemIdYesthe TikTok post id
confirmNoREQUIRED true when enabling — it makes the post publicly promotable and accepts TikTok’s advertising terms on the owner’s behalf
enabledYestrue turns Ad authorization ON (and mints the Spark Ads code); false turns it off
authorizationDaysNo7 | 30 | 60 | 180 | 365 — TikTok publishes exactly those five; default 30
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations only say readOnlyHint=false and destructiveHint=false, so the description carries the burden of explaining side effects. It does this exceptionally: confirms the ON path is confirm-gated and lists real consequences (privacy change to 'Available for Ads', ad review submission, possible third-party ad appearance, acceptance of Advertising Content Terms). It also warns that OFF is refused while an active Spark Ad exists and that the response is a read-back because TikTok returns an empty body. This is rich, accurate behavioral disclosure.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is long but every sentence conveys a distinct, necessary fact (code source, confirmation gating, side effects, refusal condition, parameter constraint, read-back answer, auth requirement). It is heavily front-loaded with the most critical insight (where the code comes from). It could be tightened slightly but remains efficient for the complexity involved.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With four parameters, no output schema, and a complex domain, the description covers all essential operational knowledge: prerequisites (TikTok account authorization), the exact parameter constraint, the side effects, the return behavior (read-back of status and code), and how it connects to the larger Spark Ads authorization flow. Nothing an agent needs to call it correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3. The description adds meaning beyond the schema by explaining the purpose of the confirm flag (makes the post publicly promotable and accepts terms on the owner's behalf) and by restating the allowed authorizationDays values as an enforcement note. It also clarifies what the enabled flag does in terms of minting the code. This adds value over the raw schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb ('turn ON or OFF') and the specific resource (TikTok's 'Ad authorization' setting for a post the authorized account owns), and immediately distinguishes it from the sibling tools for getting, extending, and deleting the same setting. It also names the downstream consumer (authorize_tiktok_ads_spark_post), so an agent can place it precisely in the workflow.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly explains when to use this tool (to mint a Spark Ads code for the brand's own post) and when not to (for somebody else's post, you still need a human to copy the string). It names the alternative flow and the downstream tool. It also gives preconditions for turning off (pause active Spark Ad campaigns first) and why the confirm gate exists, leaving no ambiguity about the right context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Install Server

Other Tools

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/hermoso-ai/hermoso'

If you have feedback or need assistance with the MCP directory API, please join our Discord server