Xtract prices search results before your agent fetches them
A new search API called Xtract returns every result with a usefulness score and a price in cents before an agent commits to pulling the full page. The service sits on top of Keenable and uses OpenAI models to score each page. A query for Humane AI Pin executed on 14 October 2026 with no prior history returned ten results. Three were flagged by the system: two covered the November 2023 launch and one was a 2024 review. A later result noted the Pin was shut down on 28 February 2025.
How usefulness and price shape fetch decisions
Each result carries a keenable_rank, a usefulness value from 0 to 1, and a price_cents field. Usefulness reflects how well the page matches the query. Price_cents is the simulated cost to read the full page. The scoring cost for the Humane AI Pin query was 0.006969 USD including cache hits. Results with usefulness below 0.45 are marked skip and reading stops there. The DesignBoom shutdown article scored 0.791 usefulness at 3.2686 cents. The Verge review scored 0.3579 at 1.7527 cents. Mashable scored 0.7282 at 3.0488 cents. Wikipedia scored 0.7134 at 2.997 cents. The wearable.tools review scored 0.6149 at 2.6523 cents. The YouTube launch video scored 0.3249 at 1.637 cents.
Superseded results flag stale coverage
When a later page replaces an earlier one, a superseded_by field points to the new article and its event. The Verge review, the Time article and the YouTube video all have superseded_by pointing to the DesignBoom shutdown article with the event "Humane discontinued AI Pin services effective February 28, 2025." This tells the agent that the older result is the old story and the superseded_by event is the later fact. The agent can then decide whether to fetch the superseded page or jump straight to the newer one.
Sorting by usefulness per cent
The documentation instructs agents to sort results by usefulness divided by price_cents, giving a per-cent figure that balances quality against cost. This lets an agent prioritize high-value pages and stay within a token budget. The usefulness score runs from 0 to 1. Price_cents is the cost to read the full page in cents. The full page is what the price covers, while the snippet defaults to 400 characters and can be extended to 2,000 with the snippet_chars parameter.
Feedback loop sharpens future scores
After the agent answers, it posts to /v1/feedback with the query, the list of fetched URLs and the list of cited URLs. In one example, the agent fetched Mashable and Wikipedia but cited only Mashable. A follow-up search moved Mashable from usefulness 0.73 to 0.90 and dropped Wikipedia from 0.71 to 0.55. The system learns from each agent's citation choices, so future queries for the same topic return better-ranked results.
Query and task parameters
The GET /v1/search endpoint accepts a q parameter up to 300 characters, which is sent to the search engine as typed. An optional task parameter up to 500 characters describes what the agent needs answered, for example "Is the Humane AI Pin still sold?" Scores become sharper with a task because each page is checked against the task, not just the query. The response JSON includes the results array, a scoring_cost_usd field and a prices field marked simulated.
What this means for agentic search pipelines
Xtract introduces a cost-aware layer between a query and the pages an agent fetches. By surfacing usefulness and price before the full fetch, an agent can avoid low-value pages, respect a budget, and still answer the user's question. The superseded_by mechanism ensures that when a story evolves, the system flags the old result so the agent does not waste tokens re-reading it. The feedback loop means the system learns from each agent's choices, sharpening scores for future queries. For security analysts who need to verify multiple sources quickly, this model of scored, priced and feedback-driven search could reduce time spent on stale or low-relevance results.
Technical implementation details
The curl command to search sends a GET request to /v1/search with the q parameter and an Authorization Bearer token. The feedback endpoint accepts a POST to /v1/feedback with JSON containing the query, fetched array and cited array, all authenticated with the Bearer token. Results include url, title, snippet, keenable_rank, usefulness, price_cents, is_new and superseded_by. The superseded_by object contains the later page's url, title, published date and event description. The service is designed for agentic workflows where the LLM decides which pages to fetch, not a human scanning a list. Scores use OpenAI models and may change as those models update.