Skip to content

Research Agents ​

Research Agents are the specialists. Each owns a focused domain (dining, hotels, visas, local transit, etc.) and is an independent service with its own tools, model, and scaling characteristics.

Contract ​

From the Orchestrator's perspective, every Research Agent is opaque. The Orchestrator knows:

  • The agent's name
  • Its expected input shape (the job payload)
  • Its expected output shape (the result format)

Anything else is an implementation detail.

Internal Anatomy ​

Each agent typically has:

  • A worker process pool pulling jobs from its queue
  • Its own LLM configuration (model, temperature, system prompt)
  • Its own tools (dining reservation APIs, hotel booking APIs, visa rules DBs, etc.)
  • Its own scaling characteristics

Example: The Dining Agent ​

  • Tools: OpenTable, SevenRooms, Resy, direct restaurant APIs, review aggregators
  • Typical input: A scoped brief with cuisines, neighborhoods, budget, party size, dietary restrictions, and a curated shortlist
  • Typical output: An array of RestaurantOption objects with availability windows, price estimates, and notes
  • Latency budget: 5–15 seconds

What Workers Don't Have ​

  • Member profile data
  • Trip context
  • Other workers
  • The Orchestrator's tool cascade

A worker that needs to ask a clarifying question cannot. It must return a structured result (success, partial, or failed) and let the Orchestrator handle the conversation.

Worker Process Lifecycle ​

  1. Pull job from Redis (blocking pop with timeout)
  2. Execute the research task using its tools and LLM
  3. Write result back to result:{job_id}
  4. Notify the Orchestrator (pub/sub event or HTTP callback)
  5. Ack the job

The "Abstracted Server" Framing ​

The Orchestrator doesn't care if the Dining agent is a Python service using Claude with tool use, while the Hotels agent is a Node service calling a fine-tuned small model. They all look the same to the queue. This lets us evolve each specialist independently (swap models, change tools, rewrite in a different language) without touching the rest of the system.

Marchay Platform Documentation