Versely

    How agent tools route to six sub-agents

    A flat list of 139 tools serves an agent worse than six domain specialists. Name the job so the router sends the turn to the right one first.

    Versely Team9 min read

    Versely's agent is not holding 139 tools in one undifferentiated fist. The catalog is 139 definitions. The runtime groups them into six domain sub-agents: generation, slideshow, social, workflow, video_studio, and web_editor. An orchestrator picks a domain and calls one meta-tool (run_generation_agent, run_slideshow_agent, run_social_agent, run_workflow_agent, run_video_studio_agent, run_web_editor_agent) with a self-contained task string. That specialist sees the tools for its job. The others stay out of the way.

    A vague prompt can feel almost right and still do the wrong work. The router filled in a domain from the words you used, and those words pointed at a neighbour of the job you meant. You do not have to name the meta-tools. You have to name the job in language that belongs to one domain.

    Why a routed surface beats a flat one

    A model asked to choose among 139 tools will overweight names that sound like the prompt. "Edit this" collides with image editing, slideshow editing, a one-file trim, a server-side EDL render, and the timeline currently open in the visual editor. "Make a video" collides with a single generated clip, a multi-scene workflow, a visual-only movie, a slideshow-to-video export, and stitching files you already have.

    Routing shrinks the choice. The generation specialist does not post to Instagram. The social specialist does not open an EDL. The slideshow specialist does not run text-to-video models. Failures still happen, but they happen at the domain boundary, which you can see and correct, instead of as a silent wrong tool inside a 139-wide pile.

    Two extra rules sit on top of the six names, and they are load-bearing:

    • The sub-agent cannot see the chat history. The orchestrator has to paste ids and URLs into the task. If your prompt is "caption that," and "that" lives three turns back, the specialist gets an empty hand.
    • Independent domains on one compound request can run in the same turn. "Make a product video and schedule Friday's posts" is video work plus social, not one muddled specialist.

    The agent is where this routing happens in product. MCP and skills wrap the same catalog.

    What each domain actually owns

    generation creates or edits a single asset. Text-to-image, image-to-image, text-to-video, image-to-video, lipsync, speech, music, sound effects, upscales, background removal, prompt enhancement, extending or remaking a previous generation, custom/cloned voices, transcription, colorize. The routing rubric is specific about length: a single short clip, roughly 15 seconds or under, with no recurring subject, no narration arc, and no reuse. Generate a video from text lives here. "Make a 6-second shot of the bottle" belongs here. "Make a 30-second ad" does not.

    slideshow is slide-based work only. Create from a prompt or from uploaded photos, edit slides, overlay text on slides, convert a slideshow to video, schedule a slideshow series. Generate a slideshow from a prompt is the canonical ask. "Carousel," "slides," and "slideshow" are the nouns that select it.

    social publishes and measures. Connect an account, post or schedule a finished file, list and cancel scheduled posts, analytics, trend research. Post or schedule is this domain. It does not generate the video. It takes a URL (or a slideshow id) and puts it on a platform.

    workflow is the default home for outcome asks, including ones that never say "workflow." Product and brand ads, recurring daily or weekly content, a consistent character or presenter across scenes, narrated multi-scene videos, 30-second-and-up duration, "make a video like this one" with your subject swapped in, named templates, and a complete script turned into a video. Save and reuse a video workflow and turn a script into a finished video are the surfaces. Single-clip models top out around 10–20 seconds; a 30-second piece is multi-scene work, and this domain is the default path for it whenever there is narration, a product or character that must match across scenes, a brand kit, reuse, or a music bed.

    video_studio assembles and edits video files on the server: multi-scene AI movies, UGC / picture-in-picture overlays, cutting, merging, stitching, attaching audio, captions (including a short style preview on your own footage), edit_video (the full EDL render), cloud editor drafts, extracting frames, isolating audio, dubbing. Movies here are one-off, visual-only, no narration and no recurring subject to lock. Build a video from clips, music, and captions and create a multi-scene AI movie both sit in this specialist. "Stitch these clips I already have" belongs here. "Make an ad for my product" does not; that is workflow.

    web_editor is conditional. The meta-tool is only present when the visual editor is open and a timeline snapshot came with the turn. Then every question about that project (what is on the timeline, trim, reorder, overlays, in-editor generation, export of that project) goes here, because only this specialist can land a result on the timeline the user is looking at. It is not the same as video_studio. Video studio renders new files server-side. Web editor is the open project. If the editor is not open, this domain is absent; do not try to summon it by saying "web editor."

    Lookups the orchestrator keeps for itself: credits, generation history and status, projects, Pinterest and B-roll search. You rarely need to think about those unless you are asking "what will this cost" or "find that clip."

    How the map changes the way you ask

    The router is reading nouns, duration, and whether a subject has to recur. Put those in the first sentence.

    You mean Weak phrasing Phrasing that selects the domain
    One new clip "Make a video about the bottle" "Generate a 6s 9:16 clip of the bottle, no voiceover, no series"
    A carousel "Make a video from these photos" "Make an 8-slide slideshow from these photos"
    A publish "Put this up" "Post this finished video to Instagram and TikTok at 6pm. Do not generate anything."
    A product ad / series "Make me an ad" "Build a reusable workflow: 30s product ad, same bottle in every scene, voiceover, then we will schedule it"
    Files you already have "Edit these clips" "Stitch these four HTTPS clips, attach this VO, burn captions. Server-side render, not the open editor."
    A visual-only film "Make a 40-second cinematic piece" "One-off visual movie, no narration, no recurring character, per-scene model variety"
    The timeline on screen "Fix this" (editor open) "On the open timeline, trim clip 2 and export after I confirm"

    A prompt that already contains a domain:

    Generate a 6-second vertical clip of a ceramic mug on a windowsill, morning light, locked-off camera. Single shot, no voiceover.

    That is generation.

    Create a slideshow, 7 slides, cozy fall recipes, overlay titles on each slide.

    That is slideshow.

    Post the last video I generated to TikTok, caption: "Wednesday drop." Do not generate anything new.

    That is social.

    30-second explainer of our onboarding flow, same presenter in every scene, voiceover from this script, save it so we can rerun weekly.

    That is workflow. Duration over a single clip, narration, recurring subject, reuse: all four of the workflow-first tests.

    Assemble these four HTTPS clips, crossfade, this music mixed under, captions, 9:16. Preview at 480p (the free preview carries a short per-user cooldown), export only when I say so.

    That is video_studio running edit_video. The files already exist.

    What routing does not do

    It does not pick the model inside generation. Model choice is a different decision: you name a model, or the planner fills models from the catalog.

    It does not skip credits. Every generation spends credits. The editor's 480p preview on edit_video is the unpaid exception, and it carries a short per-user cooldown. Routing cannot send you to an unpaid generation specialist.

    It does not magically span domains from one vague sentence. Sequence the jobs, or ask for a workflow that is allowed to span them. "Make me content" is how a single domain gets chosen at random.

    It does not let web_editor steal a chat that is not in the visual editor. If that meta-tool is absent, "my timeline" is just English.

    FAQ

    Do I have to name the sub-agent in the prompt?

    No. Name the job: generate one short clip, slideshow, post this file, reusable multi-scene with voiceover, stitch files I already have, or (only if it is open) change the project on screen. The router maps that to the specialist. If a turn went to the wrong place, the next message should name the domain more loudly, not repeat the original sentence.

    Is this the same as picking a model?

    No. Domain routing chooses which kind of work happens. Model routing chooses which generator runs inside generation (or per scene inside a movie/workflow). You can get the domain right and the model wrong, or the other way around.

    Why did my 30-second ask become a 6-second clip?

    It was sent to generation, which owns single short clips. Anything past a single clip's ceiling is multi-scene work. If it needs narration, a locked product or face, or reuse, say that and it should go to workflow. If it is a one-off visual sequence with no voice, say "movie" and it should go to video_studio.

    Can one request use more than one domain?

    Yes. Independent jobs can be delegated in the same turn ("make this video and schedule Friday's posts"). Dependent jobs sequence: capture the URL or id from the first specialist, pass it to the next. A saved workflow is the durable version of a sequence you will run again.

    Write the domain into the first sentence. The specialist list is short on purpose.