Find any resource in Clueso by type, optionally filtered by name or exact id. One tool for listing and searching across the workspace.
type:
• projects | folders | clueprints | workspaces
• backgrounds | voices | fonts | image_gen_style_packs | element_components | animations | avatars
(voices carry `gender`, `tags`, `accent`, `engine` and a `description` of tone, age, accent and use (the catalog's own, else ElevenLabs' labels: "calm, middle aged, american, male — good for narration"; a voice with neither has none), which is the field actually worth choosing on. `tags` is a small closed vocabulary, so it groups voices rather than telling them apart. Choose deliberately: voiceover is the film's clock, and regenerating speech later rescales the clip and every element time and keyframe with it.)
• images | videos | music | sfx — media; each result carries a `source` ('org' = your saved-media library, 'stock' = a stock/curated provider). Scope with `source`, pick the library with `provider` (see below). Stock results are a short described shortlist — pick the best fit and use its `src`. Stock video results also carry `safe_src` and a `video_files` tier list with one entry marked `recommended` — use `safe_src` (or the recommended tier) in add_elements; tiers above 1080p can exceed its ~200MB source cap and fail. For a Freesound music/sfx result, `src` is an OPAQUE handle (not a playable URL) — pass it straight to add_audio and the original is fetched + hosted by Clueso server-side; `detail:'full'` adds a `preview_url` so you can tell what it sounds like.
(fonts = the typefaces THIS WORKSPACE has uploaded as brand fonts (add one with upload_file purpose: 'font'), each with `id` and `name`. Pass a returned `name` as a text element's `font_setting.font` — that is the whole contract; you never pass the url. This list is the ONLY way to know which non-Google families actually exist here: a font_setting naming a family in neither this list nor Google Fonts silently renders Inter, with no error and a confident-looking `layout.text_width_px` measured against the wrong face. Check here before building a layout on a brand typeface.)
(animations = reusable animations: this workspace's (tier 'org'), Clueso's official ones and the community library, ranked by usage with featured first. By default each row is compact: `ref`, `title`, `entries` (the names of its placeable entries), `scope`, `tier`, `rev` (latest revision), plus `project_id`, `featured` and `dependency_update_available` when they apply. `detail:'full'` returns every field instead: entry titles and parts, `latest_rev`, `live_rev`, `uses` and `dependency_updates` [{animation, pinned_rev, latest_rev}] (re-pin with animation.update_dependents('<that animation>') in run_script). Place one with add_elements(element_type='animation', type_data: {animation: ref, entry}); read its code with read_animation. Filter with `tier`. New animations are saved to their video's project: pass `project_id` to include that project's, and a `query` also searches every other project's (each such row carries its `project_id`), so another film's kit can be found and imported by its ref.)
(image_gen_style_packs = generation style presets for generate_media kind='image' style_id; element_components = saved components (e.g. animations) from THIS WORKSPACE only — there is no community library for components (unlike clueprints); each reports param_keys. Insert one AS-IS with add_elements(component_id=...), or generate a variant from it with base_component_id.)
(avatars = AI presenter looks for add_elements element_type='avatar' — pass the id as type_data.avatarId. No query lists one default look per character; a query matches character and look names and returns every matching look. Each carries `styles`, `engine`, `credits_per_minute` and a `preview_image`.)
Filters (all optional):
• query — for stock media it's the search phrase (real semantic search for provider='clueso'; provider keyword search otherwise). For clueprints a query runs a relevance-ranked search across your workspace + the global community library (search_summary, relevance_reason, tags, is_community, fork_count). For everything else it's a case-insensitive name substring.
• provider — which stock library to search (ONE call, no merging). Choose by strength:
images → 'pexels' (default; realistic photography) or 'pixabay' (illustrations, vectors, icons, clip-art — set image_type)
videos → 'pexels' (default; real-world footage) or 'pixabay' (motion graphics — set video_type='animation')
music → 'clueso' (default; our curated, brand-safe library with the best descriptions/search — try this FIRST) or 'freesound' (niche/genre tracks)
sfx → 'freesound' (default; vast sound-effect library) or 'clueso' (curated sfx)
• image_type — images + provider='pixabay': 'photo' | 'illustration' | 'vector'
• video_type — videos + provider='pixabay': 'film' | 'animation'
• id — exact id; returns just that one record (any type; for music/sfx a stock result's id or src, looked up directly)
• source — media only: 'org' | 'stock' | 'all' (default = org + stock). Under 'all', stock is appended only when a query is given. sfx is stock only.
• folder_id — projects + saved media (images/videos/music): restrict to a folder
• engine / language — voices only
• creator_id / mine_only — clueprints only
• orientation — stock images/videos: 'landscape' | 'portrait' | 'square'
• color — stock images: a color name/hex, e.g. 'blue'
• size — stock videos: 'large' | 'medium' | 'small'
• min_duration / max_duration — stock videos + freesound audio: length bounds in seconds
• page / limit — paging for large sets (projects, components, clueprints, animations — a clueprint list is sliced to the limit with no marker when more exist, so page through rather than assuming the first page is everything). `limit` caps every type, stock media included (a stock shortlist has no further pages); a capped reply says how many it left out.
• detail — animations, voices, music, sfx, fonts: 'compact' (default; the essentials, 8 rows unless you pass limit; fonts list them all) or 'full' (every field: preview urls, thumbnails, attribution, rhythm detail, full descriptions)
Returns { type, count, items: [{ id, name, type, ... }] }. Feed the returned id straight into the consuming tool (set_voice, update_clips background, generate_media style_id, add_audio src, use_clueprint, etc.). Any `duration` on a returned item is in SECONDS — pass it straight to add_audio's source_duration.