This document defines the tool contract and onboarding flow for connecting external services (PIM, DAM, search, etc.) to the AI planner. See How It Works for how tools fit into the editing pipeline.Documentation Index
Fetch the complete documentation index at: https://avocadostudioai.mintlify.app/llms.txt
Use this file to discover all available pages before exploring further.
Scope
- Provider path: Anthropic tool use today. The runtime is provider-neutral internally so OpenAI Responses tools can be added later.
- Built-in tools shipped today:
unsplash.search— licensed photo search (see schema below).image.generate— AI image generation via OpenAI (gpt-image-1) or Google Gemini (gemini-2.5-flash-image, nicknamed “nano-banana”). Full reference: Asset Manager & AI Images.
Internal Tool Contract
Every tool is registered with aToolManifest:
name: unique id (for exampleunsplash.search,pim.getProduct)description: natural-language purposeinputSchema: JSON Schema for tool inputoutputSchema: JSON Schema for tool outputcapability:readorwritetimeoutMs: per-call timeoutretryPolicy:{ maxAttempts, backoffMs? }idempotent: whether identical calls can be replayed safely
siteIdsessionIduserId(optional)traceIdplannerProvider
okdata(on success)error{ code, message, retryable }(on failure)latencyMsattempts
Default Governance Policy
- Read tools auto-run.
- Write tools require approval (runtime blocks direct auto execution).
Anthropic Adapter Behavior
Planner exposes tools as Anthropictools[] with input_schema.
The planner loop supports:
- model requests tool call (
tool_use) - orchestrator executes tool server-side
- orchestrator returns
tool_result - model continues until
submit_edit_plan
submit_edit_plan is still validated by existing normalizer + editPlanSchema.
Unsplash Tool
unsplash.search input:
unsplash.search output:
unsplash.search are covered by the
Unsplash License. author and sourceUrl
are returned so adopters can render photographer + Unsplash attribution
alongside each used image. See
Asset Manager & AI Images → Unsplash: licensing & attribution
for the full rules (attribution, prohibited uses, download tracking).
Adopter Onboarding
Option A: Runtime registration endpoint
Status: Future roadmap — not yet implemented. The
GET /tools and
POST /tools/register endpoints described below are not wired up in the
orchestrator today. Use Option B (bootstrap config file via
ORCHESTRATOR_TOOL_MANIFEST_PATH) for now.GET /toolsto view enabled toolsPOST /tools/registerto register a remote tool
Option B: Bootstrap config file
SetORCHESTRATOR_TOOL_MANIFEST_PATH to a JSON file:
Remote Tool HTTP Contract
Orchestrator calls remote endpoints with:PIM Skeleton Example
- Tool name:
pim.getProduct - Input schema:
{ sku: string } - Output schema:
{ sku: string, title: string, description?: string, imageUrl?: string, price?: string } - Capability:
read
DAM Skeleton Example
- Tool name:
dam.searchAssets - Input schema:
{ query: string, limit?: integer } - Output schema:
{ items: [{ id: string, url: string, alt?: string, mimeType?: string }] } - Capability:
read