Query notices say what they mean for the answer
The messages in
POST /memories/query errors now describe the outcome and what
you can do. SourceResultsOutranked says how to see the source’s results (search
it alone, or raise max_results) and no longer gives a candidate count. An
unknown name in sources now reads as an unknown source name rather than
“not supported yet”. NoValidSources, AnswerGenerationFailed and
AnswerTruncated are reworded the same way.Every error code is unchanged, and a source you name in sources still gets
NoResultsForSource or SourceResultsOutranked when it is missing from the
results. A source that already has another entry in errors, such as
ConnectionNotFound, no longer also gets NoResultsForSource. The MCP ask and
search tools no longer return a “no results” entry for each connected source
when you name no sources.A failed live source no longer fails the query
When a live source such as Google Calendar fails during
POST /memories/query,
the request now returns HTTP 200 with every other source’s results instead of a
401, 429, or 500. The failed source gets an entry in errors, with its name in
a source key and one of two codes:IntegrationAuthError: the connection must be reconnected.SourceUnavailable: the source could not be searched this time. When the provider rate-limited the call and said how long to wait, the message says roughly when to try again.
NoResultsForSource. For a short time these
entries also used more specific codes, such as ReactiveRateLimited,
ProviderUpstreamError, ProviderEnvironmentMismatch, and IntegrationError.
Those are now all reported as SourceUnavailable.A 401 from this endpoint now only means that your own Hyperspell credential was
rejected. The response schema is unchanged; source is an extra key in an
existing errors entry. /live requests keep their current status codes.One entity field in query provenance
With
provenance: true at medium effort and above, provenance.entities now
lists entities. Usually these are the entities in the returned documents; if that
lookup can’t finish quickly, entities is omitted rather than empty. When
entity-assisted search suggests possible identity matches, each item also has the
name the search looked up (reference), a reason, supporting evidence, and
searched, which says whether a search was restricted to that entity.steps, sources, failed_sources, entity_resolutions, entity_searches,
the iteration fields, the tool-call explanation, and the top-level query and
score of a query result are deprecated and will be removed in a future release.
The REST API still returns them; MCP ask and search omit them. See
Query provenance for what to use
instead.Rate an answer with a comment
POST /evaluate/query/{query_id} accepts an optional comment (up to 2,000
characters, trimmed) alongside the score, so a rating can say what was wrong.
Highlight ratings (POST /evaluate/highlight/{highlight_id}) share the same
comment bound. Agents can rate an ask or search result over MCP with the new
rate_answer tool (hyperspell-mcp 0.25.0), passing the result’s query_id.Connection links go straight to the provider
The hosted Connect page (
connect.hyperspell.com) is retired. Links from
GET /integrations/{integration_id}/connect now open the provider’s sign-in
directly and return the user to your redirect_url, with the same response
shape and 10-minute lifetime. If you sent users to the Connect page with a
one-time code, create a link per integration with this endpoint instead.Bounded previews in document listings
GET /memories/list?include_body=true and MCP list_memories with full=true
now apply the same 32 KiB record limit and profile page budget to every provider.
Small documents can include stored previews; larger or restricted bodies are
omitted with a notice. Optional bodies do not displace required records.Use get_memory or GET /memories/get/{source}/{resource_id} for larger bounded
previews or channel pages. Slack/Teams history and File previews remain excluded
from listings. Stored documents and permissions are unchanged.Bounded single-document previews
Non-channel
GET /memories/get/{source}/{resource_id} responses will use a
1 MiB API limit and a 256 KiB MCP limit, including optional chunk summaries.
This changes existing API and SDK read behavior: larger documents return
bounded previews with body_status and explicit notices.File reads preserve their stored readable preview when it fits. Restricted
chunks prevent a stored-body fallback; a limited or unavailable body is visible
in the API response and dashboard. Non-channel previews do not offer continuation
or an original-file download in this release. Slack and Teams keep their existing
32 KiB paginated read contract.MCP queries indexed sources directly
Generated-summary tools (
brain_status, list_context, read_context, and
grep_context) and local context resources are being disabled. Use ask,
search, and get_memory for indexed source content. Stored summaries, REST,
ordinary CLI commands, and daemon sync are unchanged. Local MCP clients need
the updated CLI release; a hosted server deployment does not update them.MCP administrative discovery tools disabled
MCP no longer exposes
get_brain_config or list_integrations, including for
administrators. Use list_connections to inspect your connected accounts.
Existing REST, dashboard, and ordinary CLI administration remain unchanged.Bounded saved-search evidence
GET /evaluate/query/{query_id} will return bounded highlights and document
envelopes, with body_status, instead of document bodies. Linked chunks are
checked against current access permissions, so removed or restricted evidence
can disappear from an older result. Content reductions are reported in the
existing errors array as ResponseContentLimited on HTTP 200.The stored answer remains a historical snapshot under the existing query access
rules; it is not regenerated from the currently available evidence.Bounded channel listings
GET /memories/list?include_body=true will return bounded envelopes for Slack
and Teams channels, with body_status=omitted and a limitation notice. This
also applies to MCP list_memories with full=true; the option no longer
expands a listing entry into full channel history.Use get_memory or GET /memories/get/{source}/{resource_id} to read channel
content, then follow that response’s next_cursor for more. A listing’s own
next_cursor continues the list of records. Other providers retain their
existing explicit-body behavior, and File previews remain excluded from listings.MCP administration changes
Brain rebuilds, configuration changes, and connection revocation are being disabled in the hosted MCP
connector and updated local MCP clients. Agents will no longer discover or call
those administrative tools, including through a cached tool list. Authorized
dashboard and CLI administration remains available; asking questions, searching,
reading indexed source documents, and saving memories are unchanged. Local MCP clients need the
updated CLI release for this change to take effect.
Paginated Slack and Teams reads
GET /memories/get/slack/{resource_id} and
GET /memories/get/microsoft_teams/{resource_id} now return bounded pages of
authorized indexed content instead of reconstructed channel history. This
changes the response behavior for existing API and SDK callers.Each response contains at most 16 chunks and 32 KiB of JSON. To continue,
pass the returned next_cursor as the cursor query parameter on the same
endpoint. Follow a cursor even when a page is empty. body_status and
notices describe partial or omitted content, including skipped oversized or
unreadable chunks. Every page rechecks your permissions; a final page does
not imply that the entire provider history was indexed or returned.Reads from other providers keep their existing behavior. See the
API introduction for the response contract.Faster memory listings
GET /memories/list now returns document envelopes by default — title, source,
status, collection, metadata and the timestamps, plus the document frame under
document with its body (children) omitted. Listing a source whose documents are large
is dramatically faster as a result: a single conversation document can hold an entire
channel’s message history, and a page of those took tens of seconds to return.Pass include_body=true to get the full document tree back, and keep size small when
you do. To read one document in full, use GET /memories/get/{source}/{resource_id},
which is unchanged.Outranked vs. empty source warnings
Query responses now distinguish why a requested source is missing from the results.
A source that matched nothing keeps the existing
NoResultsForSource warning; a source
whose results were merely outranked by other sources now reports a new
SourceResultsOutranked warning instead, including how many candidate results it had.
The errors[] shape is unchanged — this is an additive new error code, so existing
integrations keep working.Claude & ChatGPT web connectors
Connecting Claude and ChatGPT on the web is now first-class. The onboarding “Connect your
agents” step has one-click walkthroughs for both, and the
MCP docs cover the custom-connector OAuth flow for each — point
either client at
https://api.hyperspell.com/mcp and log in with your Hyperspell account,
no API key needed. (ChatGPT’s OAuth connector registration is rolling out.)MCP connector
You can now add Hyperspell to Claude as a custom connector —
point Claude at
https://api.hyperspell.com/mcp and log in with your Hyperspell
dashboard account. No API key needed, and the connection is scoped to you.0.30.1
Hyperspell Connect now supports a
providers parameter to filter which integrations are shown. This lets you show only specific integrations to your users (e.g., ?providers=slack,notion).0.30.0
You can now add multiple memories in a single request using the new
/memories/add/bulk endpoint.0.28
You can now add custom metadata to your memories, and query them in your queries.
0.24
The API now supports evaluating queries and highlights.
0.23
You can now use Webhooks to get notified when new memories are created.
0.22.1
You can now customize Hyperspell Connect page to match your app’s branding.The Web Crawler now lets you specify the maximum depth and number of pages to crawl when you index a website.
0.22.0
The new
/auth/delete endpoint deletes all user data, including all memories and stored connections. This can’t be undone.0.21.0
Improved file upload handling and made sure that memories created from files also have a
title attribute. The /memories/list endpoint now also returns the title of each memory.0.20.0
Added an new endpoint to delete specific memories. Also lets you weight data sources in your queries, so you can influence which documents are used to answer a query.
0.19.0
Consolidated our offerings and API endpoints. The old endpoints under
/documents are now under /memories.Additionally, you can now choose which model to use to answer queries — we default to Llama 3.1 8B for speed and efficiency, but more complex queries can benefit from a different model0.18.2
Added a native integration with AgentStack
0.18.1
The MCP server got an upgrade! You can now use it to query your data from any MCP client. You can now run it directly with
npx or via a client like Claude Desktop.0.18.0
You can now use the
X-As-User header to query data as a specific user while using an API key as your authentication. This saves a round trip to the server to generate a user token.0.17.2
We rolled out our new infrastructure that dramatically reduces the latency of our query endpoint.Most queries against indexed data should now be less than 250ms (plus extra time if you request an answer).
0.6.0
We heard that our web app was a bit slow, so we dramatically improved the performance.We also improved handling of spreadsheets and PDFS.
0.5.5
No more waitlist! You can now sign up and start using Hyperspell.
0.5.3
Our Python and TypeScript SDKs are now available and you can use them in your project. The installation is as easy as:The SDKs are fully typed and come with a comprehensive documentation: