Overview
A Databricks-hosted agent in Omnigent running grounded web search through Nimble
Pick
web_search to ground an answer, nimble_extract when you have a template for a known site shape, and nimble_research when the question needs many sources and an auditable answer.
Prerequisites
Omnigent 0.9.0 or later
Omnigent 0.9.0 or later
The
nimble_extract and nimble_research builtins first shipped in 0.9.0. Earlier releases carry only the web_search provider.A Nimble API key
A Nimble API key
The only credential any of the three capabilities needs. Get one from the dashboard. Every request Omnigent sends carries
X-Client-Source: omnigent.The nimble extra, for nimble_research only
The nimble extra, for nimble_research only
nimble_research calls Nimble through the nimble-python client, which ships in the optional nimble extra. nimble_extract and web_search call the API over HTTP and need no extra.Install
pip install omnigent[nimble] fails before pip runs.
pip needs --pre. Omnigent depends on opentelemetry-instrumentation-fastapi, which publishes only pre-release versions. pip skips pre-releases by default, finds nothing that satisfies the requirement, and gives up with ResolutionImpossible. --pre allows them. uv accepts a pre-release automatically when it is the only thing published, so it needs no flag.
Installing without the extra still succeeds. The Nimble client is imported lazily, so a base install fails on the first
nimble_research call rather than at install time. nimble_extract and web_search keep working.Web search
Nimble is a first-classweb_search provider. Set search_provider: nimble in any agent spec and the agent gets grounded, live web results from Nimble’s Search API. No fork, no plugin.
Omnigent lets you run any model and swap harnesses with a one-line change. Nimble brings that same flexibility to web search: one model-agnostic backend with anti-bot handling, JS rendering, and geo-targeting underneath. Databricks-hosted models get grounded web search out of the box.
1
Export your API key
2
Enable the provider
A custom agent lives in its own directory with a
config.yaml at the root. Create research-agent/config.yaml:research-agent/config.yaml
3
Run the agent
Web search configuration
search_provider
search_provider
Required. Set to
nimble to route web search through Nimble.api_key
api_key
Required. Your Nimble API key. Use
${NIMBLE_API_KEY} to read it from the environment instead of hardcoding it in the spec.max_results
max_results
Optional. Number of results to return, from
1 to 100. Defaults to 5. Values outside the range are clamped.search_depth
search_depth
Optional. Controls the speed-versus-richness tradeoff. Defaults to
lite.lite: titles, URLs, and snippets. Lowest latency, best for broad discovery.deep: full real-time page extraction for each result. Higher latency, richer content.
Extract Template
nimble_extract runs one of your account’s Extract Templates with a single synchronous call to POST /v2/extract/templates/run, and returns the template’s structured, parsed results as JSON.
Templates are account-scoped. Each one declares its own input schema, and the model supplies a matching params object on every call.
research-agent/config.yaml
{"query": "nimbleway"}.
Find your templates
List the templates your account can reach. The response is paginated, withtotal, limit, and offset alongside items:
params it accepts. The input schema sits at published_version.input_schema:
required and properties of that schema to see what the model must supply in params.
Extract configuration
api_key
api_key
Required. Your Nimble API key.
template
template
Required. The name of one of your account’s extract templates.
timeout_seconds
timeout_seconds
Optional. Read timeout for the template run. Defaults to
120, clamped to 10 to 600.This is the migration target for the deprecated
/v1/agent site-scraping path. The former nimble_agent tool name is retired rather than aliased, so it cannot silently resolve to a different API. See Extract Template.Deep research
nimble_research runs a research task on a Web Search Agent through Agent API V2. The builtin starts a run, polls it to a terminal status, then fetches the cited result. One call can take minutes.
research-agent/config.yaml
Which agent a run uses
agent_id selects the create route.
- Omitted:
POST /v2/agents/runs. Nimble provisions an agent for the run and returns its ID. No agent has to exist first. - Provided:
POST /v2/agents/{agent_id}/runs, against an agent you own.
web_search_agent_id. Every later status and result request is addressed to the returned web_search_agent_id, never to the configured agent_id, because on the generic route the returned ID is the only one that exists. If the two are both present and disagree, the call fails rather than guessing which agent to address. The run was still created and billed, so the error carries the run ID for you to reconcile against.
Per-call arguments
The spec configures credentials and timing. The model supplies the rest per call.task
task
Required. The research task or question.
effort
effort
Optional. One of
low, medium, high, or x-high. Omit it to use the agent or template default. The product default is high, and template defaults vary.use_case
use_case
Optional run mode. Exactly one of
research, enrichment, or dataset_building.input_data
input_data
Optional records to enrich: a JSON object, or an array of JSON objects, passed to the agent as input.
output_schema
output_schema
Optional JSON schema requesting structured output instead of prose.
sources
sources
Optional source guidance:
prioritize, avoid, and allow or block groups of { title, domains, order? }.skill / agent_name
skill / agent_name
Optional hints forwarded to the run.
skill names a skill identifier, agent_name names the run’s agent.max appears in the tool schema but is a coming-soon custom-budget capability, not a selectable tier. Supplying it stops the call before the run is created, with product-team contact guidance. It is never silently substituted for another effort level.Spec configuration
api_key
api_key
Required. Your Nimble API key.
agent_id
agent_id
Optional. A Web Search Agent you own, in the form
wsa_.... Omit it to have Nimble provision one per run.timeout_seconds
timeout_seconds
Optional overall deadline. Defaults to
300, clamped to 10 to 3600. Raise it: the default is shorter than a typical run.poll_interval_seconds
poll_interval_seconds
Optional interval between status polls. Defaults to
10, clamped to 0.5 to 30.Run an agent
nimble_research, the builtin drives the run to completion, and the agent answers from a source-grounded result.
What the tool returns
A bounded JSON envelope:output.type is text for prose or json when you passed an output_schema. Run IDs have the form task_run_<uuid>.
Run statuses are queued and running while work continues, and completed, failed, or cancelled once terminal.
The envelope is capped so a large result cannot exhaust the model’s context: 50,000 characters of content, 10 sources, 10 claims, and 3 citations per claim. Truncation is reported rather than hidden.
Billing and retries
Run creation is billable and not idempotent, and the API exposes no idempotency key. The builtin therefore issues the create call exactly once and never retries it, on any outcome. Retries are confined to the read-only calls: polling retries transport errors, 408, 429, and 5xx, and the result call re-checks only the documented 409. That splits create failures into two classes.
Once creation succeeds the run exists and is billed, so every later failure carries the same do-not-resubmit guidance, keyed to the run ID.
Event streaming and interaction chaining are not exposed by this builtin. Use the Agent API directly if you need them.
Additional Resources
Omnigent on GitHub
The open-source agent framework and meta-harness.
Omnigent Custom Agents
Define and run a custom agent: directory layout,
config.yaml, and the run command.Nimble Search API
The Search endpoint behind the
web_search provider.Extract Template
Browse, run, and generate templates for popular websites.
Web Search Agent
The deep-research capability behind
nimble_research.Nimble on Databricks
The full Databricks integration: Marketplace MCP, Genie, and SQL-native enrichment.