Changelog
Every change across the developer surfaces you build on — the SDK, React components, Partner API, and MCP server — in one place. We ship constantly.
- MCPMCP Server2026-10-05
`list_integrations` now also reports Dalux Box (`provider: "dalux-box"`, import only): its connection status with `customerId`, and with `buildingId` whether the building is linked to a Dalux Box file area plus its last import. Refresh cached tool schemas to filter by the new provider.
list_integrations - MCPMCP Server2026-10-01
`list_integrations` with `customerId` now returns `{ connections, buildings, nextCursor, truncated, accessFiltered }`: credential status for all six integrations (FAMAC, Dalux, Plania, Interaxo, SharePoint, Google Drive) and the buildings you can read that are linked to each, with `import` and `export` document-sync links (`linked`, `not_linked`, `unknown`, `unsupported`); filter with `provider`, page with `limit` and `cursor`. With `buildingId` it returns `{ integrations }`, one row per integration with its last sync and failures, each status `available`, `unsupported`, `unavailable` or `not_linked`. `get_sharepoint_sync_status` now returns `{ import, export, sync, importFailures, accessFiltered }` (import failures are recorded best effort: `bestEffort: true`) and `list_sharepoint_subscriptions` returns `{ import, subscriptions, accessFiltered }` with per-subscription site/library/folder resolution; the old `siteId`, `driveId`, `rootFolderIds` and `errorMessage` fields are gone. A building you cannot read returns `not_found`. Refresh cached tool schemas.
list_integrationsget_sharepoint_sync_statuslist_sharepoint_subscriptions - MCPMCP Server2026-09-30
`ask_findable` now refuses a `threadId` for a conversation you did not start (or one from another customer) with a `forbidden` error, instead of continuing it. Continue only threads returned to you by an earlier `ask_findable` call; omit `threadId` to start a new one.
ask_findable - APIDocuments2026-09-29
Getting a document now returns previewUrl: a signed link to the generated full PDF when one is available, or null otherwise. The existing url still points to the original file. Documents that are already PDFs have no separate generated PDF preview.
- APIAsk for SharePoint2026-09-29
Resolving a building from SharePoint site and drive context now skips live subscription health checks. The endpoint still returns the same resolution result, but avoids waiting on Microsoft Graph health fan-out for a lookup that only needs stored subscription data.
- MCPMCP Server2026-09-28
`search_documents` now runs the same search as the Findable app assistant: `documentType: "drawing"` also matches documents filed in the drawing categories, every hit is checked against your own read access, and the filename-only fallback for queries the index does not match is gone (use `ask_findable` for that). `totalHits` is `null` when the index count could include documents you cannot open. A page may return fewer than `limit` hits while `hasMore` is still true; keep following `nextOffset`. `windowReached: true` means the first 10,000 matches were exhausted; narrow the query or filters. When both `buildingId` and `portfolioId` are given, only `buildingId` is searched. A missing or inaccessible building or portfolio returns `not_found`, and a portfolio with more than 1,000 buildings returns `invalid_input`.
search_documents - MCPMCP Server2026-09-28
`list_folder_children` now shows only the sub-folders you can open or that lead to a folder shared with you, and only documents you can read yourself. A folder you cannot open now returns `not_found`, like a missing one, instead of `forbidden`. A folder you can only pass through with more than 1,000 sub-folders to check returns `invalid_input`; open a sub-folder by id or search instead. A documents page may hold fewer than `documents_limit` entries while `documentsHasMore` is true; keep following `documentsNextCursor`.
list_folder_children - MCPMCP Server2026-09-27
Users whose access is building- or project-scoped (for example Building Collaborators, with no read on the organisation itself) now get their projects and portfolios from `list_projects` and `list_portfolios`, unscoped or with a `customerId` or `customerName` for any customer they hold a grant inside. Every row is still filtered by the user's own read access.
list_projectslist_portfolios - MCPMCP Server2026-09-27
A `customerName` that matches no customer you can read now returns the same error whether or not such a customer exists: `No customer named "<name>" that you can read.` (it used to say "No access to customer" for a customer that exists but is not yours).
list_buildingslist_collections - MCPMCP Server2026-09-27
Users whose access is building-scoped (for example Building Collaborators, with no read on the organisation itself) now get their buildings and collections from `list_buildings` and `list_collections`, and `find_resources` finds their buildings, portfolios, projects and collections without a `customerId`. Both list tools also accept a `customerId` or `customerName` for any customer the user holds a grant inside, instead of returning "No access to customer". Every row is still filtered by the user's own read access.
list_buildingslist_collectionsfind_resources - MCPMCP Server2026-09-24
New: `list_project_documents(projectId, limit, cursor)` lists the documents you can read in a project's folders (the project folder and its subfolders) as `{ documents: [{ id, filename, buildingId, folderId, createdAt, path }], nextCursor, truncated }`. A project you cannot read returns `not_found`, like a missing one. Refresh cached tool schemas.
list_project_documents - MCPMCP Server2026-09-24
`list_projects`, `list_portfolios` and `get_portfolio` are now cursor-paginated: while `truncated` is true, call again with `cursor` = the previous `nextCursor` and the same filters. `list_projects` and `list_portfolios` accept `limit` up to 100 (was 500) and no longer return `total`; a `customerName` that cannot be resolved in one call returns `scope_required` (pass `customerId`). `list_projects` with `buildingId` lists the projects you can read in that building even without building access, and an unknown building returns an empty list instead of `forbidden`. `get_portfolio` returns up to 50 buildings per call, and its `building_count` is null when the count is unknown (a later page, or a roster too large for one call). `get_project` and `get_portfolio` return `not_found` both for missing records and for records you cannot read (no more `forbidden`). Names and addresses longer than 256 characters are shortened with a trailing ellipsis. Refresh cached tool schemas.
list_projectslist_portfoliosget_portfolioget_project - MCPMCP Server2026-09-24
`generate_red_flag` is removed: MCP can no longer start a red flag report generation directly. Where enabled, `prepare_red_flag_generation` proposes one for a building you administrate and returns an `approvalUrl`; the generation starts only after you review and approve it in Findable. It returns `already_in_progress` while a run is underway and `unsupported_country` for countries without a red flag report. `get_red_flag` no longer reports a run that has not progressed for 30 minutes as `in_progress`, because a new generation would take it over. Refresh cached tool schemas.
prepare_red_flag_generationgenerate_red_flagget_red_flag - MCPMCP Server2026-09-23
Red-flag reads now count only documents you can open. Attached documents, `documentCount`, per-item document counts and the in-review status of items without an explicit status ignore documents in folders you cannot read. Item `status` (and the `status` filter) is now the effective status: the stored status, else `in_review` when you can read one of its documents, else `not_delivered`. It is never null, counts use the same statuses as `percentComplete`, and the always-zero `unset` count is gone. A building you cannot read and a missing building now return the same `forbidden` result, and the tools return `forbidden` when an organisation admin has disabled the red flag report module. Refresh cached tool schemas.
get_red_flaglist_red_flag_itemsget_red_flag_item - MCPMCP Server2026-09-23
`prepare_work_item_action` can propose changes to one building checklist: answer a question item (`answer_checklist_item`), set a document date (`set_checklist_item_date`), assign or unassign an item, send the checklist for approval, approve, reject or withdraw. Each still needs human review in Findable. `query_work_items` checklist results now include `itemType`, `selectedAnswerId`, the assigned user, the approver, and one `answer_option` row per answer option. Refresh cached tool schemas.
prepare_work_item_actionquery_work_items - APIAsk2026-09-21
Ask requests now carry a signed, read-only identity for the API key end to end, so the answer engine refuses any request that arrives without one. Answers stay confined to the documents the key can read. Request and response shapes are unchanged; no integrator action is needed.
- MCPMCP Server2026-09-18
`ask_findable` accepts an optional `mode`: `fast`, `balanced` or `deep`. `fast` is roughly 15x cheaper and several times faster than the default, with shallower synthesis across many documents - prefer it for lookups and single-document questions. `balanced` is what you get when `mode` is omitted; `deep` is the most thorough and most expensive. `reasoningEffort` is deprecated in favour of `mode`: `high` behaves like `deep`, and `low` and `medium` both behave like `balanced`. Refresh cached tool schemas.
ask_findable - APIReports2026-09-18
Generating a deficiency report now rejects an invalid body with 400, as the reference always documented. The body was not actually validated: a country other than NO or GB, a missing country, or an unknown version was accepted and started a report, and an unknown country was handled as Norway. Adding a document to a report without a body now also returns 400 rather than 500. Valid requests are unaffected.
- APIAsk2026-09-18
Ask accepts an optional mode: fast, balanced or deep. fast is roughly 15x cheaper and several times faster than the default, with shallower synthesis across many documents. balanced is what you get when mode is omitted; deep is the most thorough and most expensive. reasoning_effort is deprecated in favour of mode: high behaves like deep, and low and medium both behave like balanced, so reasoning_effort=low never made a request cheaper. Omit mode and nothing changes.
- MCPMCP Server2026-09-17
Red-flag tools now treat legacy buildings with no stored country as Norwegian (`NO`) for automation eligibility and generation instead of reporting `unsupported_country`; buildings with an explicit unsupported country still remain unsupported. Refresh cached tool schemas.
get_red_flaggenerate_red_flag - MCPMCP Server2026-09-17
`search_documents` zero-result responses now include machine-readable `zeroReason: "keyword_terms_may_need_cooccurrence"` and `guidance` fields in structured output, so clients that only read JSON still know to try ask_findable before treating a multi-term keyword miss as proof no relevant documents exist. Refresh cached tool schemas.
search_documents - APIBuilding Owners2026-09-17
Building owners created through the Partner API now explicitly use Norway (NO) as their default country, matching the previous implicit behaviour.
- MCPMCP Server2026-09-13
Read tasks, routines, checklists and available assignees with query_work_items. Where enabled, prepare_work_item_action proposes CRUD changes and returns a Findable review link; the user must approve and execute there. ask_findable remains read-only. Refresh cached tool schemas.
query_work_itemsprepare_work_item_actionask_findable - MCPMCP Server2026-09-11
Task reads now support assignee and date-range filters, expanded routine occurrences, and cursor pagination (25 items by default, maximum 100). Both tools return items/nextCursor/truncated instead of the previous task payload; follow cursors with unchanged filters. Task detail includes comments, filenames, tags and activity actions; raw activity field diffs and storage keys are omitted. Task feature access plus building read or operations access is required. Refresh cached tool schemas.
list_tasksget_task - MCPMCP Server2026-09-09
`search_documents` now describes itself as keyword-backed document discovery instead of hybrid semantic search, and empty result pages explicitly tell agents to use `ask_findable` for semantic topical recall before concluding that no relevant documents exist.
search_documents - MCPMCP Server2026-09-03
No change to inputs, response shape, or behaviour. The tool now sends Ask a signed, short-lived delegation assertion for the signed-in user so Ask can offer read-only agent tooling on the MCP lane once that tooling ships; agents need take no action.
ask_findable - MCPMCP Server2026-09-01
Internal refactor only — no change to inputs, response shape, or behaviour. The Lucene-style filter encoding for `category` / `floor` / `fileType` / `asBuilt` moved out of this tool into @findable/shared so AI-assisted document discovery in Extract shares one implementation of what a category filter means. `search-documents.query.ts` now re-exports it. Logged because the changelog rule is machine-enforced on any tool-file change; agents need take no action.
search_documents - MCPMCP Server2026-09-01
Search results for documents in a building root folder now report the folder as `Root folder` instead of leaking the internal root marker.
search_documents - MCPMCP Server2026-08-24
Documents passed in `attachedDocumentIds` are now permission-checked individually. Previously only the building was checked, so an attached document you could not otherwise open — one in a private folder, or in another building — could still be used to answer. Attaching a document you lack read access to now returns a forbidden error naming the offending ids. No change to inputs or response shape; callers attaching documents they can read see no difference.
ask_findable - APISearch2026-08-20
sort_by=filename now orders on the stored filename, so the order matches what you see. It previously ordered on a normalised copy with common words removed, which could differ noticeably - a code like "SER" was dropped when it happened to be a word in the document language. Sorting is case- and accent-sensitive: uppercase precedes lowercase, and Norwegian æ/ø/å sort after z.
- MCPMCP Server2026-08-18
`documentCount` now counts DISTINCT documents instead of document-to-item links, so a document attached to two items (common for fire drawings, which satisfy both a Brann item and a Tegninger item) counts once rather than twice. The number previously overstated how much of a building the report covers — on a real building it read 223 where only 214 distinct documents were attached. Per-item `documentCount` in the render data is unchanged.
get_red_flag - MCPMCP Server2026-08-16
Document counts are now correct for foldered collection workspaces, which previously reported 0 because their documents live in folders rather than in the collection itself. `get_collection` returns the real count. `list_collections` returns null rather than a wrong 0 for those collections — call `get_collection` when you need the number, as computing it for a whole list is expensive.
get_collectionlist_collections - APIAuthentication2026-08-14
API keys can now be scoped to individual buildings rather than whole building owners. A building-scoped key sees only its own buildings on owner-level endpoints: building_owners lists just the owners it can reach, /buildings returns just its buildings, and /status and /search cover just those buildings. Owner-level changes still require access to the whole building owner. Nothing changes for existing keys.
- MCPMCP Server2026-08-13
Documents in a folder are now permission-checked individually whenever the caller cannot read the folder itself, not only inside private subtrees. Callers with full access to a folder see exactly what they saw before; a caller who could merely navigate into a folder no longer sees documents they cannot open. No change to inputs or response shape.
list_folder_children - APISearch2026-08-13
Search max_results now serves the full requested page, up to 1000. It was previously truncated to 100 regardless of what you asked for. A large page costs barely more than a small one, so prefer one big request over many sequential pages - this supersedes the 2026-06-29 note.
- MCPMCP Server2026-08-05
The discipline and documentType filters now actually narrow results. They were accepted and then ignored, so searches using them returned unfiltered results. Searches are also faster and no longer return document text that was never used.
search_documents - MCPMCP Server2026-08-03
Internal billing-field documentation was updated after retiring legacy customer invoice information. No change to inputs, response shape, or behavior visible to callers.
get_customer - MCPMCP Server2026-07-30
Document downloads are now returned as a normal downloadUrl in the tool text and structured output, without an attached MCP resource block, so Copilot Studio can consume the response instead of converting it to "Tool did not respond with success".
get_document - MCPMCP Server2026-07-30
Internal usage-metering wiring only (T-9019) — no change to inputs, response shape, or behavior visible to callers.
ask_findable - MCPMCP Server2026-07-28
All tools now explicitly declare read-only, destructive-action, and open-world annotations for marketplace/connector review scans. No change to inputs or response shape.
whoamifind_resourcesget_customerget_buildingget_portfolioget_projectget_collectionlist_buildingslist_portfoliossearch_documentslist_folder_childrenget_documentask_findableget_document_metadatalist_tasksget_tasklist_collectionslist_projectslist_userslist_integrationslist_sharepoint_documentsget_sharepoint_sync_statuslist_sharepoint_subscriptionsget_red_flaglist_red_flag_itemsget_red_flag_itemgenerate_red_flag - MCPMCP Server2026-07-28
The document download link now saves the file to disk instead of opening it as a preview, so clients that hand it straight to the operating system get a real file. No change to inputs or response shape.
get_document - MCPMCP Server2026-07-27
Downloaded documents now arrive with their real filename and file type. They previously reached some clients named after an internal token and typed as a generic file. No change to inputs or response shape.
get_document - MCPMCP Server2026-07-26
The category filter now cascades: filtering by a three-digit code (e.g. 564) also returns documents filed under its four-digit NS 3451:2022 subcategories (5641, 5643) instead of silently excluding them.
search_documents - MCPMCP Server2026-07-26
Fixed document retrieval for buildings stored in the UK data region — get_document returned an error for every file and folder thumbnails were missing. No change to inputs or response shape.
get_documentlist_folder_children - MCPMCP Server2026-07-24
Red flag generation now records the exact requesting user so completion notifications remain attached to the correct active account.
generate_red_flag - APIAsk2026-07-20
Agentic retrieval is now the only Ask path. Omit use_agentic_rag; an explicit false returns 400.
- APIAsk2026-07-16
Ask requests now default to agentic retrieval when use_agentic_rag is omitted.
- MCPMCP Server2026-07-14
Document search and folder browsing now return compact result lists without attaching every file; select one result and call get_document to receive that single correctly named file. Search pages default to 10 (max 20) and folder document pages to 20 (max 50); reconnect the MCP client to refresh cached tool descriptions.
search_documentslist_folder_childrenget_document - MCPMCP Server2026-07-13
Copilot document links now point to the full original file instead of a page-one thumbnail. Thumbnail URLs remain available only to UI widgets; reconnect the MCP client to refresh cached tool descriptions.
get_documentsearch_documentslist_folder_children - MCPMCP Server2026-07-12
Building photo URLs no longer consume model context in building and portfolio results, preventing large listings from exceeding host token limits; UI cards still receive and display the same photos.
list_buildingsget_portfolioget_building - MCPMCP Server2026-07-12
Document search and folder browsing results now include direct downloadUrl values and MCP resource links with filename + MIME type, so Copilot-style hosts can attach the actual files instead of falling back to preview links.
search_documentslist_folder_children - MCPMCP Server2026-07-09
Document results now include MIME types derived from their filenames. get_document also emits a first-class MCP resource link with the real filename and MIME type so Copilot can recognise the returned file as a document resource.
get_documentget_document_metadatasearch_documentslist_folder_childrenget_red_flag_itemlist_sharepoint_documents - APISearch2026-06-29
Search max_results is capped at 100; paginate with start_index for larger result sets.
- APIAsk for SharePoint2026-05-05
Added building, drive-item, folder, and citation resolution endpoints for SharePoint Ask integrations.
- APICompatibility2026-04-10
Restored backwards-compatible pagination defaults and the established Partner API response shape.
- APIAuthentication2026-03-22
Added scoped session-token exchange for browser SDK and React integrations.