Skip to content

Surface Exa as the provider during tool calls when OpenHuman Managed search is active #5136

Closed

Description

@Al629176

Summary

Exa powers ~95% of search traffic through the OpenHuman Managed search path, but there is no provider attribution surfaced to the user during or after a tool call. When the agent performs a web search, the user sees a generic search action — not "searched via Exa". This should be made visible.

Current behaviour

  • User selects OpenHuman Managed as their search engine (default)
  • Agent executes a web search tool call
  • Tool call output shows search results with no indication of which provider was used
  • Connections → Search engine panel shows "Routed through the OpenHuman backend: no API key required" — no mention of Exa

Expected behaviour

When Exa is the active provider for a managed search call:

  • Tool call label / agentic insight shows: "Web search via Exa" (or similar)
  • Optionally: a small provider badge in the tool call result card
  • Connections → Search engine → OpenHuman Managed description updated to mention Exa explicitly

Why this matters

  • Transparency for users who want to understand what data sources their agent is using
  • Exa's partnership with TinyHumans means attribution is expected
  • Helps users understand search quality differences between providers
  • Makes it clear the managed path is not a generic/unknown black box

Implementation

The attribution only needs to surface when the managed path resolves to Exa. If the managed backend ever routes to a different provider, the label should reflect that.

Suggested label text: "Searched with Exa" in the tool call insight row — same pattern as how other tool calls label their source.

Acceptance criteria

  • Tool call insight / agentic task row shows "Exa" as the search provider when OpenHuman Managed routes to Exa
  • Connections → Search engine → OpenHuman Managed description mentions Exa as the current underlying provider
  • Attribution is consistent across Chat and any other surface that shows tool call results
  • If managed search routes to a different provider in future, attribution updates accordingly (not hardcoded)

Related

  • Connections → Search engine (v0.61.8 screenshot: "Routed through the OpenHuman backend: no API key required")
  • Backend managed search routing (Exa as default)
  • Exa BYOK issue (companion issue — adding Exa as a user-configurable option)

Implementation Plan

Triage Assessment

  • Relevant: Exa powers ~95% of managed search but is invisible to users. Transparency and partnership-attribution gap.
  • User impact: Low functional impact but meaningful UX trust issue.

Proposed Scope

Implementation Steps

  1. Locate the tool call insight rendering in the frontend (app/src/ search for tool call result cards). Identify where the label/insight row text is constructed.
  2. Add a provider label field to the tool call result data model (Rust side: src/openhuman/ where search results are structured). If the search was routed through the managed backend, propagate the resolved provider name from the backend response.
  3. Surface the provider name in the frontend tool call card. Label pattern: "Searched with Exa" when Exa is the provider.
  4. Update the Connections → Search engine managed description to mention Exa by name.
  5. Make the label dynamic (not hardcoded) so future provider switches reflect automatically.

Verification

  • OpenHuman Managed search: confirm tool call shows "Searched with Exa".
  • Switch to BYOK Parallel/Brave/Querit: confirm label updates to that provider.
  • Frontend tests pass (pnpm test).

Risks and Open Questions

  • Whether the backend response already includes the resolved provider name or needs a new field. If the backend does not surface it, this is a backend-side change first.

Acceptance Criteria

  • Tool call insight shows "Searched with Exa" when managed search routes to Exa
  • Connections → Search engine → OpenHuman Managed description names Exa
  • Attribution is not hardcoded; reflects the actual provider used

Metadata

Metadata

Assignees

Labels

Type

Projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions