Ibraheem Abdul-Malik
← Back to blog

Building a Research Toolkit for AI Agents

AI coding agents are good at writing code. But ask one to make an informed decision that requires real-world data and it falls apart. It hallucinates numbers, invents sources, and confidently delivers analysis based on nothing.

I needed agents that could reason about actual market conditions. Not from training data, but from live feeds. So I built a research toolkit as a plugin for an open-source agent orchestration platform. Here is what the dashboard looks like when everything is running:

That dashboard is not a static mockup. It represents five distinct data tools, a scheduled news ingestion pipeline, and an AI-powered research brief generator, all running as a single plugin that any agent in the system can invoke.

The Problem: Agents Need Grounded Data

When I started building multi-agent workflows, I quickly realized that the hardest part was not getting agents to write code or create PRs. It was getting them to make decisions based on facts. An agent tasked with analyzing a portfolio needs current prices. An agent generating a research brief needs to know what the Fed said this morning.

The standard approach is to give agents web search tools and hope for the best. This works poorly. Web search results are noisy, inconsistent, and often paywalled. The agent spends more time parsing HTML than doing analysis.

I needed structured, reliable data sources that agents could query with simple tool calls and get clean, typed responses back.

Five Core Research Tools

The research plugin exposes five tools that agents can call directly. Each one wraps a clean data source and returns structured JSON:

  • research-equity-quote fetches current price data for any ticker through an in-house market data service. The tracked universe covers factor ETFs, rates proxies, and single names across sectors, but any ticker in the repository works.
  • research-equity-history returns daily OHLCV bars with configurable date ranges and intervals (daily, weekly, monthly). Defaults to a 30-day lookback.
  • research-fred-series pulls macroeconomic data from the Federal Reserve FRED database. Treasury yields, CPI, unemployment rate, fed funds rate, all available as clean time series.
  • research-sec-filings queries SEC EDGAR for corporate filings by ticker or CIK number. Filter by form type (10-K, 10-Q, 8-K) to find exactly what you need.
  • research-news-search searches a locally cached article database ingested from curated RSS feeds. No external API dependency at query time.

Each tool follows the same pattern: accept a simple query, return structured data. No HTML parsing, no authentication dance, no rate limit juggling. The agent callsresearch-fred-series id=DGS10 or research-equity-quote ticker=VRT and gets back a clean, typed response.

Scheduled News Ingestion

The news tool is different from the others because it does not query an external API at search time. Instead, a scheduled job runs every 10 minutes, fetching articles from curated RSS feeds (Reuters, CNBC, WSJ, MarketWatch, Yahoo Finance, Financial Times), deduplicating them, and storing them in the plugin state.

When an agent searches for news, it is searching a local cache. This means instant results, no rate limits, and no dependency on external services being available at query time. The ingestion pipeline also runs immediately on plugin startup so there is no 10-minute cold start gap.

The pipeline tracks metrics per run: feeds fetched, feeds failed, articles parsed, articles added, and images enriched. This makes it easy to detect when a source goes down or changes its feed format.

The Plugin Architecture

Everything is built as a plugin for an open-source agent orchestration platform. The plugin registers its capabilities declaratively:

  • Agent tools (the 5 research tools above) that any agent can invoke
  • UI pages (research dashboard and news feed) for human operators
  • Sidebar navigation so the research tools are always accessible
  • Scheduled jobs (the news ingestion cron) that run automatically
  • Instance settings for API keys and configuration
  • Actions (14 action keys) for batch operations and synthesis

This plugin architecture means the research toolkit is completely modular. You can install it on any instance of the platform, configure your API keys, and every agent in that instance immediately gains access to all five research tools. No code changes, no redeployment.

Research Brief Generation

The most powerful feature is the research-brief action. When an agent (or a human) triggers it, the system fetches data in parallel from multiple sources: the active investment universe, current watchlist, account positions, and latest news. It then synthesizes everything into a structured brief.

The brief generator supports multiple backends: any frontier LLM provider or a rule-based fallback that requires no LLM at all. This is important because research briefs should work even when your AI provider is down or when you want deterministic output.

Cross-Plugin Communication

The research plugin does not operate in isolation. It communicates with a separate market data plugin via HTTP (localhost:3100) to fetch watchlist data, account status, and universe information. This cross-plugin communication pattern means each plugin stays focused on its domain while the system as a whole can compose complex workflows.

Module-scope client caching ensures that connections to FRED, SEC EDGAR, and the market data service are initialized once and reused. In-flight promise tracking prevents duplicate initialization, which matters when multiple agents hit the research tools concurrently.

Why This Matters

The gap between "AI that writes code" and "AI that makes informed decisions" is entirely about data access. An agent with access to clean, structured, real-time data is fundamentally more useful than one that has to scrape the web and hope for the best.

Building this as a plugin means it composes with everything else in the platform. The same CEO agent that delegates coding tasks can also request a research brief before deciding what to prioritize. The same engineer agent that writes code can check whether a market data endpoint is returning expected values.

Agents are only as good as the information they can access. This toolkit makes sure the information is always there, always fresh, and always structured.