HalalGen
Server Details
HalalGen is an AI video studio. Turn a simple prompt into short videos, and make images, logos, YouTube thumbnails and 4K upscales in the same place. No coding and no design skills needed. Image and video prompts are checked against our content rules before generation.
- Status
- Healthy
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
TDQS
Scored across 23 tools
Most tools have clear, distinct purposes (generate_video vs edit_image vs remove_background vs place_product), but several near-duplicates exist: search and search_vault both search past generations by prompt text with only a loose image/general distinction, and fetch, view_image and list_generations all retrieve stored items. The balance/cost cluster (get_balance, estimate_cost, list_models, get_usage_stats) is distinguishable but requires reading carefully.
Names are uniformly snake_case and mostly follow verb_noun (generate_image, delete_vault_item, list_models, toggle_favorite). Minor deviations are the bare verbs 'search' and 'fetch', which are also the least self-describing names in the set.
23 tools is at the heavy end for a single image/video generation service. Most serve real workflows, but a few (search vs search_vault, fetch vs view_image) could be consolidated without loss.
Coverage is broad: generation, editing, upscaling, background removal, product placement, thumbnails, vault listing/fetch/favorite/delete, plus billing, usage, models, competitor ads and plan info. Gaps remain around image-to-video/video editing, upload of new assets, and no update/rename of vault items, but agents can mostly work around these.
Available Tools
23 toolscheck_video_statusCheck Video StatusARead-onlyIdempotentInspect
Check a video job from generate_video. When it's done, returns the MP4 link to share with the user.
| Name | Required | Description | Default |
|---|---|---|---|
| job_id | Yes | job_id returned by generate_video. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is fully covered by structured data. The description adds useful value by disclosing the success return (an MP4 link to share with the user), but it never describes what is returned while the job is pending or failed — the state most likely to be hit on a first poll.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, zero filler, with the action stated first and the payoff (MP4 link) second. Nothing could be removed without losing information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter read tool with rich annotations, the description covers the essential outcome. The only real gap is the pending/failed state behavior, which matters for an async status check since there is no output schema to document the status field.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With one parameter and 100% schema description coverage, the schema already explains that job_id comes from generate_video. The description repeats that origin but adds no format, validity, or reuse details, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (check) and resource (a video job) and ties it explicitly to the generate_video sibling, which is the origin of the job_id. It stops short of distinguishing itself from list_generations, which could also surface video job state, but the purpose is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'a video job from generate_video' implies the usage context (call after generate_video), but there is no explicit when-to-use, no polling guidance, and no statement of what to do instead while the job is still running. Usage is inferable rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_vault_itemDelete Vault ItemADestructiveIdempotentInspect
Permanently delete a generation (image, video or upscale) from the user's Vault. Confirm with the user first.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ID of the item to delete. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true and idempotentHint=true, so the safety profile is covered. The description adds the irreversible nature ('Permanently') and a mandatory confirmation step, which are important behavioral traits beyond the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the core action and permanence, followed by a critical safety instruction. Every sentence carries necessary information with no waste.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter delete tool with annotations covering destructiveness and idempotency, the description supplies the essential supplementary details: permanence, target scope, and confirmation requirement. Nothing needed to use it safely is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the schema documents the 'id' parameter. The description adds meaning by specifying that the ID refers to a generation (image, video, or upscale), clarifying the valid domain beyond what the schema provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Permanently delete') and resource ('a generation (image, video or upscale) from the user's Vault'), making the operation unmistakable. No sibling tool performs deletion, so the scope alone distinguishes it without ambiguity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives a clear usage condition by naming the target ('from the user's Vault') and an explicit interaction requirement ('Confirm with the user first'). It does not list when-not-to-use cases, but no alternative deletion tool exists among the siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
edit_imageEdit ImageAInspect
Change one of the user's own HalalGen pictures with words, like the web Image Editor: 'make the sky a warm sunset', 'put the bottle on a marble table'. Pass the picture as image_id or a HalalGen link (other sites are refused) and the change as prompt. No human faces. Default model WanPro on paid plans, CF_Flux2Dev on the free plan. Priced like one image of that model.
| Name | Required | Description | Default |
|---|---|---|---|
| model | No | Edit model: WanPro (best, paid), Qwen2Pro (fast, paid), Seedream40 (artistic, paid), CF_Flux2Dev (detailed, free plan too), CF_Flux2Klein (fast draft, free plan too). | |
| prompt | Yes | What to change in the picture, in plain words. Avoid faces. | |
| image_id | No | Image or upload ID from list_generations, search_vault or an earlier tool result. | |
| image_url | No | Link to the user's own picture on HalalGen (https://cdn.halalgen.ai/... or https://api.halalgen.ai/image/...), if you don't have the ID. Other links are refused. | |
| is_private | No | Keep the result private in the user's Vault. | |
| aspect_ratio | No | Shape of the result. Defaults to the picture's own shape; shapes a model can't make go to the nearest one. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare the mutation profile (readOnly=false, destructive=false, openWorld=true), so the description is free to add real value: content policy (no faces), source-link restriction, per-plan model defaults, and cost ('priced like one image of that model'). It does not say whether the operation is synchronous or must be polled, which is a notable omission for a mutating generation call.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core action and examples, then inputs, constraints, defaults and pricing in a tight four-sentence block. Slight redundancy with the schema (the 'other sites are refused' rule is stated twice across description and field docs) keeps it short of perfect.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema and only one required parameter, the description covers inputs, model defaults, restrictions and cost well enough to call the tool. The remaining gap is the return contract — what identifier comes back and whether a status check is needed — which matters for a non-idempotent generation call.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, but the description adds meaning the schema does not carry: the default model depends on plan (WanPro paid, CF_Flux2Dev free) and that the image source can be given as an ID or a HalalGen URL. Both are decision-relevant facts absent from the field descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Change') on a specific resource (one of the user's own HalalGen pictures) and illustrates with concrete prompt examples, which cleanly distinguishes it from generate_image. The examples make the transformation semantics obvious without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explains the input paths (image_id or a HalalGen link, other sites refused) and hard constraints (no human faces), which amounts to clear conditions for use. It never explicitly contrasts with generate_image or upscale_image, so an agent must infer that this is for editing existing owned images rather than creating new ones.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
estimate_costEstimate CostARead-onlyIdempotentInspect
Work out how many credits a generation will cost and whether the user's balance covers it.
| Name | Required | Description | Default |
|---|---|---|---|
| type | No | What to price. 'edit' = edit_image. | image |
| model | No | Image, edit or video model ID (see list_models). | |
| quality | No | Image quality. | |
| duration | No | Video length in seconds. | |
| num_images | No | Number of images (also the number of product placement pictures). | |
| resolution | No | Video resolution, e.g. '720p'. | |
| aspect_ratio | No | Image aspect ratio, e.g. '16:9'. | |
| upscale_type | No | Upscale mode. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, non-destructive and closed-world, so the safety profile is covered. The description adds genuinely new behavior beyond them: the call returns both a credit estimate and a verdict on whether the user's balance covers it, which tells the agent this is a non-charging preview rather than a purchase.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with both the estimate and the balance check, and no filler. Every clause carries information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With 8 parameters, zero required, and no output schema, the description should clarify how to combine inputs per type (e.g. video needs duration and resolution, image needs quality/aspect_ratio) and what the response shape looks like. It covers the response concept but leaves input-combination guidance entirely to the schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so every parameter including enums and the model cross-reference to list_models is already documented. The description adds no additional parameter meaning such as which fields matter for which 'type', so the baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific action (work out credit cost) and the exact subject (a generation, with balance-coverage check). It cleanly separates this from the cost-incurring siblings like generate_image or generate_video and from get_balance, which only reports the balance.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied rather than stated: an agent can infer this is a pre-flight dry run before a generation, but the description never says when to call it versus go straight to generate_*, nor whether it's mandatory or optional. No alternatives or exclusions are named.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fetchFetch Vault ItemARead-onlyIdempotentInspect
Get the full prompt and details of one Vault item by the ID returned from search.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Item ID from search. |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | Yes | |
| url | Yes | |
| text | Yes | |
| title | Yes | |
| metadata | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish that this is a read-only, idempotent, non-destructive, closed-world operation. The description adds that it returns the full prompt and details, but it does not cover error behavior, permissions, or rate limits; with rich annotations and an output schema, this is adequate but not expansive.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The definition is a single front-loaded sentence with no wasted words. It communicates the action, scope, and input source efficiently.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple one-parameter read operation, the description plus annotations, schema, and output schema provide enough context to invoke it correctly. The agent knows it fetches one Vault item by a search-returned ID.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, and the single parameter is already documented as the item ID from search. The description reinforces that provenance but adds no additional syntax, format, or validation guidance beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: get the full prompt and details of one Vault item. It also distinguishes this from search by specifying that the item is identified by an ID returned from search.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It clearly indicates the usage context: retrieve a single item after obtaining its ID from search. However, it does not explicitly name the sibling search_vault tool or state when not to use this fetch operation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
generate_imageGenerate ImageAInspect
Create images with HalalGen (no human faces: people appear only as silhouettes, from behind, or not at all). 'Auto' uses GPTImage25Flare on paid plans and CF_Flux2Klein on the free plan. Free plan: CF_Flux2Klein and CF_Flux2Dev only. Returns the image URL; share it with the user. To change one of the user's own pictures, use edit_image instead.
| Name | Required | Description | Default |
|---|---|---|---|
| model | No | Image model. Call list_models for costs. | Auto |
| prompt | Yes | What to create. Describe the scene, lighting, materials and mood. Avoid faces. Looks from HalalGen's templates can be asked for here too, for example one object seen from several camera angles, a faceless cartoon-style character, or exercise steps shown with silhouettes. | |
| quality | No | Used by GPT Image 2.5 only: hd costs ×1.2, ultra ×1.8. Flux Ultra and Flux 2.0 Pro are always ultra; other models are standard. | standard |
| is_private | No | Keep the image private in the user's Vault. | |
| num_images | No | How many images (paid plans: up to 4). | |
| aspect_ratio | No | Image shape. | 16:9 |
| relaxed_mode | No | Queue without spending credits. Iltizam and Ihsan plans only. | |
| movement_type | No | Optional camera framing hint added to the prompt. | |
| cinematic_style | No | Optional style preset added to the prompt. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnlyHint=false, destructiveHint=false, openWorldHint=true, idempotentHint=false), so the bar is lower. The description still adds real value the annotations cannot convey: a hard content restriction on faces, plan-dependent model routing, and the fact that it returns an image URL to share with the user. It does not say whether generation is synchronous or credit-costly beyond what the schema hints.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Five short sentences, front-loaded with purpose and the non-negotiable content rule, then plan routing, then the return value, then the sibling redirect. Dense but every sentence carries distinct information; only the plan/free-tier detail is slightly repetitive in framing.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 9-parameter generation tool with no output schema, the description covers the essentials: content policy, model/plan gating, and the returned image URL. Gaps remain around sync vs. async behavior, credit consumption, and where generated images land by default (the is_private/Vault interaction is only implied).
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3. The description nonetheless adds meaning the schema lacks: what 'Auto' actually resolves to per plan, and which models are reachable on the free tier. The remaining parameters (quality, aspect_ratio, num_images, relaxed_mode) are left to their schema descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Opens with a specific verb+resource ('Create images with HalalGen') and immediately scopes it with a content policy (no human faces). It also names the sibling it is not ('use edit_image instead' for the user's own pictures), so an agent can distinguish it from edit_image, generate_logo, and generate_video without opening a schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives an explicit routing rule to edit_image for modifying the user's own pictures, plus plan-based constraints ('Auto' behavior, free plan limited to CF_Flux2Klein/CF_Flux2Dev). It stops short of stating when to prefer generate_logo or generate_video over this tool, so sibling coverage is partial rather than complete.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
generate_logoGenerate LogoAInspect
Create a minimalist vector-style logo mark for a brand (no faces, people or animals). Returns the image URL.
| Name | Required | Description | Default |
|---|---|---|---|
| colors | No | Preferred colors, e.g. 'emerald green and gold'. | |
| description | Yes | The idea behind the logo, e.g. 'a coffee bean inside a crescent'. | |
| business_name | No | Brand name to show in the logo. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare non-read-only, open-world, non-idempotent, and non-destructive behavior. The description adds useful context with the output URL and content exclusions, but it does not disclose cost, latency, async behavior, or other operational details beyond the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two tight sentences with the core purpose and content constraints front-loaded, followed by the return value. Every sentence earns its place with no redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a three-parameter generation tool with full schema descriptions and safety annotations, the definition supplies the key content restriction and return value needed to invoke it correctly. It could mention cost or async behavior, but those are secondary for this simple tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all parameters are already documented in the schema. The description does not add syntax, format, or meaning beyond what the schema provides, making the baseline score appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: create a minimalist vector-style logo mark for a brand, with content constraints and return format. It is clear what the tool produces, though it does not explicitly differentiate itself from the sibling generate_image tool.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies use for brand logo marks and excludes faces, people, or animals, giving some usage context. However, it does not name alternatives such as generate_image or explain when a general image-generation tool is preferable.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
generate_videoGenerate VideoAInspect
Start a text-to-video render (paid plans, no faces). Returns a job_id right away; rendering takes 1–3 minutes, then call check_video_status. Models and allowed lengths: Seedance25 (4/5/8/10/15/20/30s), Seedance2 (4/5/8/10/15s), Seedance2Fast (4/5/8/10/15s), Seedance2Mini (4/5/8/10/15s), Kling4 (3–30s), Kling3 (3/5/10/15s), Wan30 (5/10/15s), Wan30Prime (5/10/15s), GrokVideo (4/5/8/10/15s), Hailuo23 (6/10s), Hailuo23Fast (6/10s). Other lengths are rounded to the nearest allowed one. Kling4 (Kling 4.0, the latest Kling) also makes sound: describe it in the prompt.
| Name | Required | Description | Default |
|---|---|---|---|
| prompt | Yes | Describe the motion, camera move, lighting and setting. | |
| duration | No | Length in seconds. Defaults to 5 (10 for Kling4, or the model's shortest length). | |
| provider | No | Video model. | Seedance25 |
| resolution | No | Defaults to 720p (768p for Hailuo). Unsupported values fall back to the default. | |
| aspect_ratio | No | Video shape. | 16:9 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark this as a non-readonly, open-world, non-idempotent operation. The description adds substantial behavior: it returns a job_id immediately, rendering takes 1–3 minutes, paid-plan and no-face constraints apply, and certain models round unsupported durations. This is rich operational context beyond the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The core behavior and follow-up are front-loaded, and the long model-duration list is useful because that information is not carried elsewhere in the structured data. It is dense but not padded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For an asynchronous generative tool with no output schema, the description gives the agent what it needs: what is produced, the immediate return value, the wait time, the follow-up tool, access constraints, and model-specific duration behavior.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
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 meaningful parameter semantics beyond the schema by listing allowed durations per model, explaining that unsupported lengths are rounded, and noting that Kling4 sound should be described in the prompt.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The first sentence states a specific verb and resource: starting a text-to-video render. It distinguishes itself from sibling image tools by naming video and by pointing to check_video_status for follow-up.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives clear usage context: paid plans, no faces, and the need to call check_video_status after the asynchronous job. It does not explicitly name when to choose this over generate_image, but the video-specific purpose makes the alternative clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
generate_youtube_thumbnailGenerate YouTube ThumbnailAInspect
Create a bold, high-contrast 16:9 YouTube thumbnail (no faces), made with Gemini 3 Pro Image (GPT Image 2.5 if Google fails). It can borrow the layout and colours of up to 3 inspiration thumbnails (style_references), e.g. from list_viral_youtube_videos. Returns the image URL.
| Name | Required | Description | Default |
|---|---|---|---|
| prompt | Yes | Video topic, scene and any short headline text. | |
| aspect_ratio | No | Always 16:9, the shape of a YouTube video thumbnail (9:16 Shorts covers are not made yet). | 16:9 |
| style_references | No | Optional: up to 3 thumbnail links to use as inspiration (only the layout and colours are borrowed). YouTube thumbnail links (i.ytimg.com, e.g. from list_viral_youtube_videos) or HalalGen links (cdn.halalgen.ai). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already flag it as a non-idempotent, open-world write, so the description's added value is the model and fallback chain (Gemini 3 Pro Image, GPT Image 2.5 on Google failure), which signals non-deterministic output. It also discloses that only layout and colour are borrowed from references and that the result is a URL, though it says nothing about cost or generation time despite estimate_cost existing as a sibling.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the core action and constraints, with the model fallback and reference mechanic packed in without waste. Nothing is repeated verbatim from the schema.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description correctly states the return value (image URL) and covers the hard constraints, reference limits and model behaviour. It omits cost and latency expectations, which matter for an open-world generation call, but the essential calling information is present.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so prompt, aspect_ratio and style_references are already fully documented, including the 3-item cap and accepted URL domains. The description largely restates the schema's own wording about borrowing layout and colours; its only addition is the pointer to list_viral_youtube_videos as a reference source, which keeps it at baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource (create a 16:9 YouTube thumbnail) plus the distinguishing constraints: no faces, model used, and a URL return. It is clearly separable from siblings like generate_image or generate_logo because the output format and styling rules are named.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives concrete usage context: pass up to 3 inspiration thumbnails, e.g. sourced from list_viral_youtube_videos, and implies the aspect_ratio choice is fixed for YouTube. It never explicitly says when to prefer this over generate_image or edit_image, so the routing is implied rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_balanceGet Credit BalanceARead-onlyIdempotentInspect
Show the user's current credit balance and plan.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false and openWorldHint=false, so the safety profile is fully covered. The description adds only that the response includes the plan alongside the balance; it says nothing about auth requirements, currency/units, or freshness of the balance.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no filler. Every word (current, credit balance, plan) carries information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter, fully annotated read tool this is largely sufficient; the description tells the agent both outputs (balance and plan). With no output schema, minor gaps remain around units/currency and what 'plan' contains, but nothing blocks correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, which is the baseline-4 case; there is nothing for the description to disambiguate. The empty schema is consistent with the description's implication that the balance is scoped to 'the user' implicitly.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Show') and resource ('current credit balance and plan'), which is unambiguous on its own. It does not explicitly separate itself from nearby siblings like get_usage_stats or estimate_cost, so an agent must infer the boundary.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to call this versus get_usage_stats (usage history) or estimate_cost (pre-spend projection). Usage is only implied by the purpose statement; no conditions or exclusions are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_usage_statsGet Usage StatsARead-onlyIdempotentInspect
Show how many images and videos the user has made and how much of this API key's daily limit is left.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-destructive, and closed-world, so the safety profile is covered. The description adds value beyond them by disclosing the scope of the readings: media counts attributed to the user and quota scoped to 'this API key's daily limit', which is important context an agent would otherwise have to guess at.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single sentence that front-loads what is returned and spends no words on restating the title. Nothing is wasted and nothing essential is buried.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description must convey the return shape, and it does — two counts plus remaining daily quota. The one residual ambiguity is the time window for 'has made' (lifetime vs. billing period), which an agent cannot resolve from the text alone.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so there is nothing to document and the baseline of 4 applies. The description introduces no parameter-like concepts that could mislead.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb and resource (show image/video generation counts plus remaining daily API-key quota), which is concrete enough to distinguish it from the sibling get_balance (credit balance) and list_generations (enumerating items). It never explicitly states the contrast with those siblings, but the two metrics it returns are unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied: an agent can infer this is the tool to call when it needs counts or quota headroom, but the description gives no explicit when-to-use trigger, no exclusions, and does not point at get_balance or list_generations as alternatives for related questions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_generationsList Recent GenerationsARead-onlyIdempotentInspect
List the user's most recent images, videos and upscales with links and IDs.
| Name | Required | Description | Default |
|---|---|---|---|
| type | No | Filter by type. | all |
| limit | No | How many items. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, non-destructive and closed-world, so safety is covered. The description adds useful output context ('with links and IDs') and recency ordering, but says nothing about pagination behavior or how many results come back by default.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with zero filler — 'most recent' and the result contents are stated up front. Brevity is appropriate for a two-parameter read tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-only list tool with no output schema, annotations covering safety and a schema covering both parameters, the description supplies the one missing piece: what the results contain (links and IDs). Only the default page size and ordering semantics are left implicit.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so both the type enum and the limit bounds are fully documented by the schema. The description only hints at the recency ordering; it adds no syntax or defaulting detail beyond what the schema provides, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (List) and resource (the user's recent images, videos and upscales), and enumerates the item types covered. It does not differentiate against siblings like view_image or get_usage_stats, but the scope is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied — an agent can infer this is how you discover recent assets before fetching one with view_image or edit_image, but the description never says when to use it or when to prefer an alternative.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_modelsList Models and PricesARead-onlyIdempotentInspect
List the available image and video models with their credit costs. Works without signing in.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint=false, so the safety profile is covered. The description adds genuinely new behavioral context — that the call requires no authentication — which is exactly the kind of auth prerequisite annotations cannot express.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, zero waste, with the core capability front-loaded and the auth caveat appended second. Nothing is redundant with the title or schema.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter, read-only lister with no output schema, the description covers purpose, payload content and auth requirement. It could go slightly further by describing what a returned model entry looks like (identifier vs display name), which matters since there is no output schema to consult.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so per the baseline this dimension starts at 4. Nothing in the description conflicts with the empty schema, and the mention of credit costs clarifies the payload content rather than parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('List the available image and video models') plus what is included ('with their credit costs'). It is clearly distinguishable from siblings like list_generations and estimate_cost, though it never names an alternative explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit when-to-use or when-not-to-use guidance versus siblings such as estimate_cost. The phrase 'Works without signing in' implies a pre-auth discovery use case, which is suggestive but leaves the routing inference to the agent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_viral_youtube_videosFind Viral YouTube VideosARead-onlyIdempotentInspect
Find YouTube videos that got many more views than their channel usually gets, from channels HalalGen checked and the user's rivals. Free: no credits or YouTube searches used. For a thumbnail inspired by them, pass up to 3 of their thumbnail links to generate_youtube_thumbnail as style_references.
| Name | Required | Description | Default |
|---|---|---|---|
| days | No | Only videos uploaded in the last 7, 30 or 90 days. | |
| type | No | 'long' for normal videos, 'shorts' for Shorts. | long |
| limit | No | How many videos to show. | |
| topic | No | Optional topic, from the list a previous call showed. Leave empty for all topics. | |
| max_subscribers | No | Only channels under 100,000 or 1,000,000 subscribers. 0 means any size. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnly, idempotent, non-destructive), so the bar is lower; the description's real contribution is the cost statement (no credits, no quota-consuming YouTube searches) and the data provenance (HalalGen-checked channels plus the user's rivals). It says nothing about result freshness, ranking method, or pagination.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, zero filler. The core definition comes first and the workflow hint and cost note follow, which is the right ordering for an agent scanning for selection criteria.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, so the description carries the burden of explaining what comes back, and it only obliquely implies results include thumbnail links and a topic list ('from the list a previous call showed'). An agent still doesn't know whether view counts, outlier multiples, or channel metadata are returned, which matters for deciding between this and sibling search tools.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so all five parameters are already documented with enums and defaults. The description adds only the chaining hint about passing up to 3 thumbnail links to generate_youtube_thumbnail, which cursorily implies the results carry thumbnails but gives no parameter-level detail beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (find) and a precisely-scoped resource: YouTube videos that overperformed relative to their own channel's baseline, drawn from two named sources (HalalGen-checked channels and the user's rivals). That 'outlier vs. channel average' framing clearly separates it from sibling discovery tools like search or search_competitor_ads.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The 'Free: no credits or YouTube searches used' line gives the agent a concrete reason to prefer this discovery path over paid search tools, and the final sentence routes it to generate_youtube_thumbnail as a follow-up. It stops short of naming an exclusion or an explicit alternative for video discovery (e.g., when to use search_competitor_ads instead).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
place_productPlace Product in a SceneAInspect
Put the user's own product photo into a real-looking scene, keeping the product as it is (no people, faces or added text). Paid plans only. The photo must already be uploaded to HalalGen: pass its link as product_image_url, or call without it to list the user's uploads. Scenes: marble counter, desert dunes, boutique shelf, kitchen table, Ramadan lantern table, colour backdrop, or one they describe. 1–4 pictures, charged per picture (see list_models or estimate_cost).
| Name | Required | Description | Default |
|---|---|---|---|
| size | No | How big the product is in the frame. | medium |
| count | No | How many pictures (each one is charged). | |
| light | No | morning = soft bright light, golden = warm sunset light, night = dark with warm lamps. | morning |
| scene | No | marble = white marble kitchen counter, dunes = desert sand dunes, shelf = boutique shop shelf, kitchen = rustic kitchen table, lantern = Ramadan table with brass lanterns and dates, studio = plain colour backdrop, custom = describe it in custom_scene. | studio |
| position | No | Where the product sits in the picture. | center |
| aspect_ratio | No | Picture shape: 1:1 square, 4:5 feed post, 9:16 story, 16:9 banner. | 1:1 |
| custom_scene | No | Only for scene 'custom': where the product stands, e.g. 'on a stone step beside a small fountain in a tiled courtyard'. No people. | |
| backdrop_color | No | Only for scene 'studio': the backdrop colour. | sand |
| product_image_url | No | Link to a product photo the user uploaded to HalalGen (https://api.halalgen.ai/image/uploads/... or https://cdn.halalgen.ai/uploads/...). Other links are refused. Leave empty to list the user's uploads. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare non-readonly, openWorld and non-idempotent, and the description adds genuinely new behavior: paid-plan gating, upload-domain validation, per-picture billing for 1–4 images, the fact that a no-URL call returns an upload listing instead of generating, and hard content restrictions. That is exactly the extra context annotations cannot convey.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single dense paragraph, front-loaded with the core action and immediately followed by the hard prerequisites and cost note. Efficient overall, though the scene enumeration and billing aside are packed into the same run-on sentence rather than separated.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Nine optional params, no output schema, and the description covers prerequisites, billing, URL validation and the fallback listing behavior. The main remaining gap is that it never says what a successful call returns (image URL? generation ID? is polling needed?), which matters for a paid, non-idempotent generation tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
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 still earns above that by spelling out the scene palette in plain language and clarifying that count drives per-picture charges. It does not add guidance on size, position, or aspect_ratio beyond the enum docs, so it does not fully cover the parameter space.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Specific verb + resource: 'Put the user's own product photo into a real-looking scene, keeping the product as it is.' A constraint clause ('no people, faces or added text') further narrows the outcome, implicitly separating it from generate_image and edit_image. It stops short of naming a sibling explicitly, so sibling differentiation relies on inference.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Strong prerequisites ('Paid plans only', photo must already be uploaded to HalalGen, other links refused) and an explicit conditional behavior: call without product_image_url to list the user's uploads. It also routes to estimate_cost / list_models for pricing. What it lacks is an explicit when-to-use-this-instead-of-generate_image rule.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
remove_backgroundRemove BackgroundAInspect
Cut the main subject out of one of the user's own HalalGen pictures onto a see-through background and return the PNG link. Pass image_id (from list_generations or search_vault) or a link to a picture they made or uploaded on HalalGen; links to other sites are refused. Call without a picture to list their latest ones. Costs credits (see list_models or estimate_cost).
| Name | Required | Description | Default |
|---|---|---|---|
| image_id | No | Image or upload ID from list_generations, search_vault or an earlier tool result. | |
| image_url | No | Link to the user's own picture on HalalGen (https://cdn.halalgen.ai/... or https://api.halalgen.ai/image/...), if you don't have the ID. Other links are refused. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations, it discloses credit consumption, input validation behavior (links to other sites refused), and the empty-argument listing behavior, plus the output format. It doesn't explicitly say the original picture is left intact, which matters for a non-idempotent mutation, but the safety picture is otherwise well filled in.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three tight sentences: the action and result first, then accepted inputs and the refusal rule, then the no-argument fallback and cost. Nothing is redundant and no sentence could be dropped without losing information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description carries the return-value burden and does so ('return the PNG link'). Combined with cost pointers, input sourcing, and the empty-call behavior, an agent has everything needed to invoke it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the schema already documents both parameters, including valid URL shapes and the source tools. The description restates the either/or choice and the 'user's own HalalGen' ownership constraint without adding new syntax or format detail, so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a concrete verb and resource ('cut the main subject out of ... HalalGen pictures onto a see-through background') and names the return artifact (PNG link). It is clearly distinguishable from neighbors like upscale_image, edit_image, and view_image.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives explicit selection rules: pass image_id or a HalalGen URL, external links are refused, and calling with no picture lists the user's latest images. It also flags that the call costs credits and points to list_models/estimate_cost for pricing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
searchSearch VaultARead-onlyIdempotentInspect
Search the user's past HalalGen generations by prompt text. Returns IDs to pass to fetch.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | Words from the prompt, e.g. 'mosque' or 'geometric pattern'. |
Output Schema
| Name | Required | Description |
|---|---|---|
| results | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and non-destructive behavior, so the safety profile is covered. The description adds genuine value beyond them by disclosing the return shape ('returns IDs') and the intended chaining to fetch, which the annotations do not convey.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, no filler. The core action is front-loaded and the follow-up workflow detail comes second where it belongs.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be explained, and the description still flags the key next step (fetch). The only meaningful omission is disambiguating from search_vault, which matters given the near-duplicate sibling.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the sole parameter is documented with concrete examples ('mosque', 'geometric pattern'). The description's 'by prompt text' merely confirms the schema, so the baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb ('search'), a specific resource ('past HalalGen generations'), and the matching field ('prompt text'), so the operation is unambiguous. It stops short of distinguishing itself from the sibling search_vault, which shares nearly identical naming and is the main confusion risk.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'Returns IDs to pass to fetch' gives a clear forward workflow, implying when to call it and what comes next. It does not state when to prefer search_vault or list_generations instead, nor any exclusion, so usage is only partially guided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_competitor_adsSearch Competitor AdsARead-onlyIdempotentInspect
Ad Spy: find ads other brands are running for a keyword on Meta (Facebook and Instagram), Google or Pinterest, with the advertiser, headline, text and a link. Amanah, Iltizam and Ihsan plans only. No credits used. Good for ad ideas before making pictures with place_product or generate_image.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | How many ads to show. | |
| country | No | Two-letter country code where the ads ran, e.g. US, GB or AE. | US |
| keyword | Yes | Brand, product or topic to search, e.g. 'modest fashion' or 'dates'. | |
| platform | No | meta = Facebook and Instagram (Meta Ad Library), google = Google ads, pinterest = Pinterest ads. | meta |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already declare readOnly, openWorld, idempotent, and non-destructive behavior, but the description adds important context beyond them: eligible plans, no credit usage, platform coverage, and the returned fields. It still does not discuss rate limits or error behavior, so it is strong but not complete.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and front-loads the main purpose immediately with 'Ad Spy: find ads...'. The remaining details are useful, though the opening is somewhat dense and could be easier to scan.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only, open-world search tool with full parameter descriptions and no output schema, the description covers purpose, eligibility, cost, platform scope, and return fields. An agent has enough context to decide when and how to call it.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the parameters are already fully documented in the schema. The description reinforces that searches run by keyword and across Meta, Google, or Pinterest, but it adds no syntax, constraints, or meaning beyond what the schema already provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: find ads other brands are running for a keyword on Meta, Google, or Pinterest. It also lists the returned advertiser/headline/text/link fields, so the agent can distinguish this ad-spy search from sibling tools like search, generate_image, and place_product.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives clear usage context: 'Good for ad ideas before making pictures with place_product or generate_image,' and it names the eligible plan tiers, Amanah/Iltizam/Ihsan. It does not explicitly state when not to use the tool or name a competing search alternative, so it falls short of full explicit routing guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_vaultSearch VaultARead-onlyIdempotentInspect
Search the user's past HalalGen images by prompt text. Returns links and image IDs (usable with upscale_image).
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | Words from the prompt, e.g. 'mosque'. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare read-only, idempotent, closed-world, non-destructive behavior. The description adds useful context beyond annotations by specifying that results include links and image IDs and that those IDs are usable with upscale_image. It does not mention pagination or result limits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences with the core purpose front-loaded and no wasted language. The downstream handoff to upscale_image is compactly included.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple one-parameter read-only search with no output schema, the description adequately explains what is searched and what is returned. It could be stronger by naming when to use this versus list_generations or generic search, but it is otherwise complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and already explains the query parameter with an example. The description only restates that the search is by prompt text, adding little semantic detail beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: search the user's past HalalGen images by prompt text. It distinguishes this from generic search or list_generations by scoping to past generated images and naming the downstream upscale_image workflow.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for finding prior images via prompt words, but it does not explicitly say when to choose this over sibling tools like list_generations or search. No exclusions or alternatives are named.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
toggle_favoriteFavorite ImageBIdempotentInspect
Add an image to (or remove it from) the user's favorites. Accepts an image ID or a generation ID.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Image ID or generation ID. | |
| is_favorite | No | true to favorite, false to remove. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare non-read-only, idempotent, non-destructive behavior, so the safety profile is covered. The description adds the meaningful disclosure that the same call can both add and remove, driven by direction rather than separate tools. It says nothing about failure cases (unknown ID, ownership) or what state is returned after the toggle.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences with no filler; the dual add/remove behavior is front-loaded and the accepted identifier types follow immediately. Every sentence carries information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a two-parameter toggle with full schema coverage and rich annotations (idempotent, non-destructive, closed-world), the description plus structured fields are nearly sufficient. The remaining gap is post-call state and error conditions, which matter little for a low-risk toggle with no output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so both 'id' and 'is_favorite' are already documented in the schema, including the default of true. The description's mention of image ID or generation ID duplicates the schema text rather than adding new meaning, so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a concrete verb and resource ('add an image to or remove it from the user's favorites') and clarifies that both directions are handled by one tool. It also states what identifiers are accepted. It does not explicitly contrast with any sibling, though no sibling in the list deals with favorites, so differentiation is implicit.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus alternatives, no preconditions (e.g. the image must already exist or belong to the user), and no note on how the toggle should be used repeatedly. The only guidance present is about which identifier types are valid, which is parameter-level rather than usage-level.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
upgrade_accountCompare PlansARead-onlyIdempotentInspect
Show HalalGen's plans (prices and monthly credits) with a link to the pricing page. Works without signing in.
| Name | Required | Description | Default |
|---|---|---|---|
| plan | No | Plan to highlight. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-destructive, and openWorld=false, so the bar is lower. The description adds real value beyond them by disclosing the no-auth requirement and previewing the returned content (prices, monthly credits, pricing-page link).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, zero filler, with the core capability front-loaded and the auth caveat second. Every phrase earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With one optional parameter, an output-free schema, and rich annotations, the description is nearly sufficient: it covers what is shown, the no-auth condition, and the external link. The only gap is not clarifying that no actual upgrade occurs, which matters given the tool name.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, and the single 'plan' parameter already carries an enum and a description ('Plan to highlight'). The prose adds nothing about how the highlighted plan changes the output, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: it shows plans with prices, monthly credits, and a pricing-page link, and clarifies it is informational rather than a mutation. It does not address the mismatch with the tool name 'upgrade_account' or distinguish itself from siblings like estimate_cost or get_balance, which leaves some ambiguity about the upgrade framing.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'Works without signing in' gives one useful usage condition (no auth needed). However, it never says when to use this versus estimate_cost or get_balance, nor explicitly that calling it does NOT perform an upgrade — a meaningful exclusion for a tool named 'upgrade_account'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
upscale_imageUpscale Image to 4KAInspect
Upscale one of the user's own pictures (made or uploaded on HalalGen) to 4K. Paid plans. Pass image_id (from list_generations or search_vault) or a link to their picture on HalalGen.
| Name | Required | Description | Default |
|---|---|---|---|
| type | No | 'creative' adds fine detail; 'fast' is a cheaper straight upscale. | creative |
| image_id | No | Image ID from list_generations or search_vault. | |
| image_url | No | HalalGen image URL, if you don't have the ID. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare this is a non-read-only, non-destructive, non-idempotent, open-world operation. The description adds genuinely useful context beyond them: it is a paid operation and it will only accept the user's own HalalGen-hosted images, an ownership constraint the annotations cannot express. It omits credit cost magnitude and whether output lands in the vault, but the core behavioral picture is sound and consistent with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, purpose and output resolution front-loaded, the paid-plan caveat and ID sourcing following in priority order. 'Paid plans.' is a fragment but carries real weight; the final sentence partly restates the schema descriptions of image_id/image_url.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, and the description never says what comes back (a new image ID? a URL? a job to poll via check_video_status?). The zero-required-parameter schema also leaves the mutual exclusivity of image_id/image_url unexplained. Adequate to call the tool, incomplete on results interpretation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3; the description earns an extra point by clarifying that image_id and image_url are alternates and by naming the two tools that produce a valid image_id. It does not address what happens if both (or neither) are supplied, which matters once notice that zero parameters are required.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (upscale), resource (one of the user's own pictures) and the target output (4K), plus a scope restriction to HalalGen-made or uploaded images. That scope narrows it against generate_image, but it never explicitly positions itself against edit_image or remove_background, which also transform existing images.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives a real prerequisite ('Paid plans') and tells the agent where to source the identifier (list_generations or search_vault) and that either an ID or a HalalGen link works. It stops short of stating when to prefer this over edit_image or estimate_cost first.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
view_imageView ImageARead-onlyIdempotentInspect
Show a preview of an image hosted by HalalGen (halalgen.ai or cdn.halalgen.ai) and return its link.
| Name | Required | Description | Default |
|---|---|---|---|
| image_url | Yes | HalalGen image URL, e.g. https://cdn.halalgen.ai/generated/<id>.png |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, non-destructive, and closed-world, so the safety profile is covered. The description adds the return behavior ('return its link'), which is useful given there is no output schema, but says nothing about preview format, size limits, or failure modes for invalid/hotlink-protected URLs.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One sentence, front-loaded with the action and constrained by the host scope, with zero filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter, read-only viewer with full schema coverage and rich annotations, the description tells the agent what it gets back and what inputs are valid. Only error/edge-case behavior is unstated, a minor gap at this complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% for the single image_url parameter, so baseline is 3. The description does reinforce the accepted host scope, but adds no format or validation detail beyond the schema's example URL.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Show a preview of an image') and scopes it to HalalGen-hosted images, which separates it from generate_image, edit_image, and upscale_image. It stops short of naming an alternative sibling such as fetch, so sibling differentiation is only implicit.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The domain restriction ('hosted by halalgen.ai or cdn.halalgen.ai') implies when the tool is valid, but there is no explicit when-to-use versus fetch or list_generations, and no statement of what happens with an external URL.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
23 tool updates
- First observed
check_video_status - First observed
delete_vault_item - First observed
edit_image - First observed
estimate_cost - First observed
fetch - First observed
generate_image - First observed
generate_logo - First observed
generate_video - First observed
generate_youtube_thumbnail - First observed
get_balance - First observed
get_usage_stats - First observed
list_generations - First observed
list_models - First observed
list_viral_youtube_videos - First observed
place_product - First observed
remove_background - First observed
search - First observed
search_competitor_ads - First observed
search_vault - First observed
toggle_favorite - First observed
upgrade_account - First observed
upscale_image - First observed
view_image
Related MCP Connectors
Generate images, video, music, speech, 3D, logos and product shots with 60+ AI models.
- AITOPIAOAuthai.aitopia
Generate and edit images, video and audio: 300+ AI models, video tools, voice cloning, transcripts.
AI images and videos with any model, AI personas, and AI clips from long videos.
- HiroskaOAuthcom.hiroska
AI video studio: generate with 80+ AI models, edit on a timeline and export 4K, from an assistant.
Related MCP Servers
- AlicenseNot gradedqualityCmaintenanceGenerate and refine AI images/audio/video through natural conversation.410Apache 2.0
- AlicenseNot gradedqualityBmaintenanceEnables AI assistants to generate, edit and render finished, ready-to-post videos from a plain-language prompt, including script, visuals, voiceover, captions and music for TikTok, Reels and YouTube. Also supports remaking reference videos, importing your own media, and reviewing or adjusting existing videos before rendering.MIT
- AlicenseAqualityAmaintenanceGenerate video from a prompt, from an image, or from up to thirty reference images, routed across the field of AI video models (Sora, Veo, Kling, Seedance, Hailuo, Wan and more). Quotes the credit cost before spending it and refunds a technical failure automatically.5MIT
- AlicenseAqualityAmaintenanceEnables MCP clients to use Arabic-centric AI for chat, cited Islamic Q&A, Qur'an and hadith quotation checks, deep research, Arabic-English translation, speech-to-text and text-to-speech, image generation, poetry, and safety moderation.12Apache 2.0
Glama MCP Gateway
Add one secure layer between your agents and this server.