Function discovery
Multifunctional Search Agent
agents.multifunctional_search
Turns project context into related biological design functions, searches for biological strategies that can satisfy those functions together, and returns a narrative synthesis plus structured groups and candidate strategy records.
When to use it
Good fit
- Design briefs, transcript excerpts, product challenges, site observations, or research questions that contain several needs or constraints.
- Extracting two to six useful biological functions before searching for strategy candidates.
- Exploring multifunctional needs such as protection, sensing, transport, recovery, moisture control, thermal comfort, coordination, or signaling.
- Building classroom tools, research assistants, workshop boards, product discovery copilots, and biomimicry exploration interfaces.
- Rendering both a readable summary and structured fields that can drive cards, lanes, filters, or follow-on calls.
Use something else when
- Proof that a biological strategy is technically, medically, legally, or commercially ready to apply.
- An exhaustive survey of all biology relevant to a function.
- Exact record lookup when you already know the specific item you need.
- Private, regulated, or sensitive user content unless your own application is authorized to process that content through the API.
- Assuming every candidate has complete citation coverage. Some results are useful leads rather than fully cited evidence packets.
Use near the beginning of a larger workflow, before deeper literature review, image selection, evidence gathering, strategy distillation, or workshop synthesis.
Required inputs
- session_id
- Caller-provided run or project identifier. Use a stable value when connecting this result to the rest of your workflow.
- context
- Project context, transcript excerpt, challenge notes, product constraints, workshop notes, or research question.
Optional inputs
- challenge_summary
- Short label for the design challenge.
- focus_area
- A narrower area to emphasize, such as impact recovery, moisture management, signaling, thermal comfort, or coordination.
- configuration.metadata
- Caller-owned metadata for connecting the job to a workflow, review queue, dashboard, or webhook receiver.
What comes back
The completed job result is structured for integration. Preserve citations, warnings, confidence fields, and source context when the agent returns them.
Representative output fields
- job_id
- Identifier used to poll GET /v1/jobs/{job_id}.
- status
- Job state, such as queued, running, completed, or failed.
- agent_id
- The invoked agent, here agents.multifunctional_search.
- poll_url
- Relative polling URL for the job result.
- estimated_cost_usd
- Pre-run estimate for planning. The final billed amount can differ.
- created_at / completed_at
- Job lifecycle timestamps when available.
- result.session_id
- Echoes the caller-provided session_id.
- result.summary
- Narrative synthesis of the extracted functions and biological leads.
- result.functions_searched
- Function phrases the agent used for discovery.
- result.adaptation_count
- Count of candidate adaptations represented in the result.
- result.function_groups
- Structured groups that can become UI lanes, comparison sections, or follow-on workflow inputs.
- result.final_responses
- Shortlisted biological strategy records for downstream review.
- result.charge_usd
- Customer-visible charge for a billable completed job.
Result card fields
- function_groups[].result_ids
- Candidate response IDs associated with the group. Use these to connect columns, cards, filters, or follow-on selections.
- final_responses[].score
- Relevance signal for search fit. It is not a truth score, feasibility score, safety rating, or evidence grade.
- final_responses[].response_names
- Available response labels that can help users understand why the candidate was included.
- final_responses[].matched_function_groups
- Group IDs that explain where a candidate fits in the extracted function structure.
How output is produced
- Authenticates the API key and confirms permission to invoke agents.
- Checks whether the account can start a billable discovery job before work begins.
- Accepts the request as an asynchronous job and returns job_id, status, agent_id, poll_url, estimated_cost_usd, and created_at.
- Treats the submitted context as source material and looks for stated needs, constraints, failure modes, operating conditions, and tradeoffs.
- Identifies a small set of biological design functions that the project appears to need together.
- Searches for biological strategies that connect more than one extracted function instead of only matching a single keyword.
- Adds strategy, organism, relevance, and source context when useful details are available.
- Returns a narrative summary plus structured function groups and candidate response records for downstream interfaces.
Trust and caution
- This endpoint is a discovery aid. It helps find promising biological analogies, but it does not prove feasibility.
- Treat function_groups as useful framing for exploration. They may need editing for your domain vocabulary.
- Treat final_responses as leads for deeper review, not final engineering recommendations.
- Treat functions_searched as an explanation of the discovery path, not a guarantee that every possible function was searched.
- Citation coverage depends on the available source context for each candidate.
- Vague or overly broad context can produce broad function groups. More concrete constraints usually produce more useful results.
- Use expert review for engineering, medical, safety, legal, financial, conservation, or other high-impact decisions.
Runtime
Treat this endpoint as asynchronous. The invoke call returns quickly, but completion can take longer because the agent may extract functions, run several discovery passes, gather supporting detail, and synthesize a response. Show queued, running, completed, and failed states in your UI.
Cost behavior
Use estimated_cost_usd from the queued response for pre-run display and charge_usd from the completed result for final customer-visible accounting. Budget for variable completion time and cost based on context length and the number of useful biological leads found.
Billing notes
- The queued response includes estimated_cost_usd as a pre-run estimate.
- Completed billable jobs include charge_usd in result. Treat charge_usd as the customer-visible final charge.
- Organization credits are deducted for billable completed work according to the account's public API pricing.
- The final charge can be lower or higher than the pre-run estimate depending on context length, extracted functions, and candidate evidence gathered.
{
"inputs": {
"session_id": "run_packaging_001",
"context": "Reusable containers need to protect glass components during repeated shipping cycles, avoid moisture buildup, recover after drops, and make damage easy to spot before reuse.",
"challenge_summary": "Protect fragile goods in reusable shipping containers",
"focus_area": "impact recovery and inspection"
},
"configuration": {
"metadata": {
"external_run_id": "packaging-001",
"workflow_step": "function_discovery"
}
}
}{
"job_id": "job_7f3a2b1c",
"status": "queued",
"agent_id": "agents.multifunctional_search",
"poll_url": "/v1/jobs/job_7f3a2b1c",
"estimated_cost_usd": 0.12,
"created_at": "2026-05-27T18:30:00Z"
}{
"job_id": "job_7f3a2b1c",
"agent_id": "agents.multifunctional_search",
"status": "completed",
"created_at": "2026-05-27T18:30:00Z",
"completed_at": "2026-05-27T18:32:41Z",
"result": {
"session_id": "run_packaging_001",
"summary": "The context points to linked functions: absorb impact, recover after deformation, manage moisture, and reveal damage before reuse. Biological leads suggest layered structures that redirect cracks, reversible deformation strategies, surfaces that move moisture away from sensitive zones, and visible cues that indicate structural change. Treat these as research leads for deeper source review and prototype translation.",
"functions_searched": [
"absorb sudden mechanical energy",
"restore shape after deformation",
"move moisture away from protected contents",
"signal damage before reuse"
],
"adaptation_count": 3,
"function_groups": [
{
"id": "fg_impact_recovery",
"group_id": "fg_impact_recovery",
"name": "absorb and recover from impact",
"functions": [
"absorb sudden mechanical energy",
"restore protective geometry after deformation"
],
"result_ids": [
"resp_layered_deflection"
]
}
],
"final_responses": [
{
"id": "resp_layered_deflection",
"name": "Layered crack deflection",
"title": "Layered crack deflection",
"summary": "Layered interfaces can redirect cracks and preserve overall structure, making them useful leads for reusable protective packaging.",
"score": 0.87,
"response_names": [
"crack deflection through layered interfaces"
],
"response_instance_count": 2,
"matched_function_groups": [
"fg_impact_recovery"
]
}
],
"charge_usd": 0.146
}
}Errors and retries
Common failures
- 401: the API key is missing or invalid.
- 403: the key does not have agents:invoke scope or the agent is not available to the caller.
- 402: the account does not have enough credits to start the job.
- 400: webhook_url is not HTTPS in production.
- 429: the client exceeded the allowed request rate.
- 503: the platform could not accept or complete the discovery job at that time.
- failed: the accepted job could not complete, often because required input was missing, the context was unusable, a long search timed out, or billing could not be completed.
- 404: the job ID is wrong, expired, or not owned by the caller.
Retry guidance
- After a job_id is returned, poll GET /v1/jobs/{job_id} with bounded exponential backoff.
- Honor Retry-After on 429 responses.
- Use the returned poll_url rather than resubmitting the same request immediately.
- Retry transient 503 responses only when no job_id was returned, and use caller-side safeguards to prevent duplicate submissions.
- Use a stable session_id and your own metadata when you need idempotent workflow behavior.
- If the result feels generic, ask the user for more concrete constraints instead of repeating the same request.
Composition ideas
Search-to-research pipeline
Call this endpoint first, let users select a function group or final response, then send the selected lead into a deeper research or evidence review step.
Workshop board
Map function_groups to columns and final_responses to cards. Add voting, notes, and manual edits before deeper analysis.
Education workflow
Ask students to compare the returned functions with their own framing, then verify one candidate against primary sources.
Product discovery copilot
Use the result as planning state for a larger assistant. The assistant can ask follow-up questions when context is vague or when scores are close.
Batch portfolio review
Run briefs one at a time, then compare functions_searched across jobs to identify recurring opportunity areas.
Application fit
- Design education studio assistants that turn student briefs into function groups and biological leads.
- Early product discovery tools that convert messy constraints and failure modes into research directions.
- Workshop facilitation boards that cluster breakout notes into functions participants can vote on.
- Curriculum generators that compare how organisms solve protection, sensing, transport, repair, and coordination.
- Regenerative design exploration tools for places, buildings, landscapes, and organizations.
- Knowledge browsing interfaces that connect function groups to deeper biological records and article views.
- AI copilots that call this endpoint early, then pass selected candidates to research, image, or strategy agents.
- Innovation portfolio scanners that compare recurring function families across product or program briefs.