Skip to main content

August 2026

August 5, 2026

API · CLI
  • CLI: Added dcy organization-supplier (list/create/edit/delete) for the org-level supplier directory, and dcy ppwr packaging-unit supplier (list/add/remove) to assign PPWR packaging units to a supplier — one supplier per unit, enforced by the API with a 409 on conflict. See Organization Suppliers CLI.
  • API: Hotel stays custom columns now flow through CSV imports too — map an existing sidecar column to a file header, or declare a new one, completing the read/filter/import surface shipped August 4.
  • API: Facilities inbound-email config gains automatic data-reminder emails — PATCH /v1/facilities/{facility_id}/inbound-email/reminder sets a reminder recipient (a free-form email, an existing org member, or both) and an optional threshold in days; a daily sweep emails facilities with no completed inbound data within that window. Setting a recipient email automatically allowlists it, so a plain reply lands back in the same inbound-email pipeline.
  • API: Added cascading delete for Datadis organization identifiers (NIF/CIF) — GET /v1/datadis/organization-identifiers/{nif}/delete-preview shows what would be removed, and DELETE /v1/datadis/organization-identifiers/{nif} cascades to that identifier’s own-org supply contracts and invoices.
  • Fixed vehicle consumption delete endpoints (single, bulk, and bulk-by-filters) authorizing on the read perimeter instead of the write perimeter — a disabled organization’s consumptions were deletable even though its vehicle could not be updated. Cross-organization deletes authenticated with an API key now correctly return 403 (CROSS_ORG_WRITE_REQUIRES_USER) instead of succeeding.
  • Fixed the electricity Scope 1 & 2 report (POST /v2/download/scope-report) always generating one failed processing job alongside the successful one — the endpoint dispatched an unsupported electricity_lb event that the handler has never supported.
  • Fixed PATCH /v1/emission-factors/hotel_stays/config-update blocking the whole batch when the chosen emission-factor source has no coverage for one stay’s country — uncovered stays now keep their existing config and are reported in the processing job’s failed_records instead of failing the request.
  • Fixed the multidb custom emission-factor pipeline further: the primary category was hardcoded to stationary regardless of invoice type, silently dropping the client-choice config for electricity/recharge/water/process invoices using a custom emission-factor database.
  • Fixed purchases bulk-delete-by-filters returning a persistent 409 filter-hash mismatch whenever the preceding list request included a sort parameter — sort no longer affects the filter hash, matching that it only controls display order.
  • Fixed imports auto-mapping for Spanish waste ledgers: 4-digit MITECO treatment subcodes (e.g. R1201) now resolve to their parent operation code instead of falling through to manual mapping.
  • Fixed invoices and wastes custom-column creation accepting reserved grid keys (edit, select, toc) — declaring a custom column with one of these names silently broke the shared facility-detail grid’s action column; it’s now rejected with 422.
  • Fixed POST /pivot_table/calculate sorting Scope 3 GHG categories lexicographically by label instead of numerically (Category 11 sorted before Category 2) — fixed backend-side so on-screen tables, Excel, and PDF exports are all consistent.
  • Fixed invoice create/update silently skipping the emission-factor config when a linked custom EF record had no available source for the invoice’s primary category — now fails fast with a 422 (MULTIDB_CUSTOM_RECORD_INCOMPATIBLE_CATEGORY) instead of falling back to standard emissions unannounced.
  • Fixed the vehicles sheet in the Scope 1 & 2 report (POST /v2/download/scope-report) shipping empty — a type mismatch on currency_unit_id raised on every row, and the export silently dropped each one rather than failing the job.
  • Fixed LCA transport (A2) impacts calculating as 0 for portfolios whose transport was created via the API or older UI flows as a legacy “copy-piece” — those are now bridged into the current chain/leg model instead of being invisible to the calculation.
  • Raised the facility_consumption import quantity limit from 50M to 10B.
  • Fixed hotel stay emission-factor configs only being created for a stay’s check-in year — a stay spanning a year boundary (e.g. Dec 28 – Jan 3) now gets configs for every year it touches.

August 4, 2026

API · CLI
  • CLI: Added dcy ppwr packaging-unit (list/show/create/edit/delete) and dcy ppwr packaging-unit sku (list/add/edit/delete) subcommands for managing PPWR packaging units and the SKUs they cover directly from the CLI.
  • CLI: dcy file list now shows a linked_packaging_units column — which PPWR packaging unit(s), if any, were created/applied from that file.
  • API: LCA calculation errors now also surface four transport (A2) data problems — missing_transport_destination, missing_transport_origin, missing_transport_data, and missing_transport_emission_factor — mirroring the silent-omission checks already in place for materials (A1).
  • API: Vehicle consumptions gain custom columns support — custom_values is now returned on list, org-wide list, and detail responses, matching the existing purchases/employees/facilities behavior. POST /v2/vehicle_consumptions/migrate now returns 409 instead of silently dropping an org’s custom values on a cross-organization move.
  • API: Hotel stays gain custom columns support — custom_values on responses and custom_column_schemas on the list page, plus column-header filtering (filter_by/filter_match/filter_or_fields) on GET /hotel-stays, matching the filtering already available on purchases.
  • API: Transport routes gain custom columns support — custom_values on list/detail responses, sortable via sort_by, and mappable/declarable through CSV imports.
  • API: employee_commuting imports now support custom columns — map an existing employees_historic sidecar field to a file header, or declare a new one, through the imports API.
  • API: Purchases list now returns custom_column_schemas under group view, matching vehicles/vehicle-consumptions/hotel-stays/business-travels — a subsidiary’s custom column now renders under its own label instead of the holding’s.
  • Fixed cross-tenant authorization gaps on transport (climate) plan endpoints — reading, updating, or deleting another organization’s plan or measure is no longer possible for an authenticated caller outside that organization’s family.
  • Fixed transport routes sort_by accepting any model attribute name (including relationships) and returning a 500 instead of only real, orderable columns.
  • Fixed PPWR packaging unit detail/update/delete endpoints (GET/PATCH/DELETE /v2/ppwr/packaging-units/{id}) to enforce organization scoping, matching the existing SKU and substance-declaration sub-resource behavior.
  • Fixed a malformed x-organization-id header (non-UUID) on API-key authenticated requests returning a 500 instead of a 401.
  • Fixed imports of the facility_consumption electricity/heat/water/recharge sub-templates silently dropping mapped or declared custom columns instead of persisting them.
  • Fixed a 500 error when submitting employee_survey_emails imports through the imports API.
  • Fixed the Scope 1 & 2 electricity/energy report (POST /v2/download/scope-report) undercounting emissions for invoices whose billing period straddles the reporting-window boundary.
  • Fixed the multidb custom emission-factor pipeline: 3-gas (CO2/CH4/N2O) custom factors weren’t converting to CO2e (missing GWP conversion config), and only the primary category was processed for electricity/heat invoices, leaving secondary categories (location-based, generation, T&D) uncalculated. start_date on custom emission-factor versions (POST /v1/emission-factors/custom-databases/{database_id}/versions) is now optional, defaulting to 1970-01-01 like standard conversion factors.
  • Fixed custom-column filtering and sorting under group view (consolidate_group) reading every row’s value from the header organization’s sidecar instead of the row’s own — a subsidiary’s custom-column value could silently drop out of a filtered result or sort as if empty. Affects purchases, vehicles, vehicle consumptions, business travels, facilities, wastes, hotel stays, invoices, employees, suppliers, and own workforce trainings.
  • Fixed dropped custom-column values during CSV imports going unreported — now surfaced via the processing job’s job_metadata.failed_records, the same channel the Activity → Processing Jobs detail view already renders.

July 2026

July 27, 2026

API
  • ⚠️ API: DELETE /v2/elastic-data/datasets/{dataset_id} no longer returns 204 No Content — it now returns 200 with a processing-job reference body, tracking the deletion asynchronously. See Elastic Data.
  • ⚠️ API: Purchases create endpoints drop the multidb query param — all organizations now route through the v2 conversion-factors pipeline unconditionally.
  • API: Elastic Data text→date/datetime column recasting now accepts day-first DD/MM/YYYY (in addition to ISO YYYY-MM-DD), matching what the UI displays, and surfaces the expected format on a bad value. See Elastic Data.
  • Fixed the project task versions endpoint — version_changes (what changed between versions) was never populated, and the most recent version was silently dropped from the list.
  • Fixed dataset visualization widgets rendering empty in project reports and their DOCX/PDF exports — they now resolve through the same query path as POST /datasets/{key}/query.

July 24, 2026

API · MCP
  • MCP: Expanded Elastic Dataset tools — query_dataset gains sort and filters params; added get_dataset_record, list_dataset_groups (dataset folders), and list_project_datasets tools.
  • API: Facilities update and delete now authorize across the whole accepted business family instead of the header org only — subsidiary facility rows are editable/deletable from the holding, mirroring how sold_products already works. Facility creation stays header-org only.
  • API: Logistic hub update/delete get the same family-wide authorization as facilities — subsidiary hub rows are editable/deletable under group view.
  • API: Transport (shipments/deliveries) bulk delete and own workforce bulk delete now follow the group view — family-scoped when consolidate_group is set, instead of only the header org.
  • API: Added Greenview hotel-stay emission factors for 227 additional countries (plus a missing Serbia match), broadening hotel stay CO2e coverage.
  • Fixed LCA dashboard calculation errors listing the same underlying error multiple times per piece; block-scoped error codes are still preserved.
  • Fixed OR-matching in Elastic Dataset record filters returning incorrect results.

July 23, 2026

API
  • API: Vehicle consumption bulk delete (by IDs and by filters) now operates across the whole organization family when consolidate_group is set, instead of only the header org. Default behavior unchanged.

July 22, 2026

API
  • ⚠️ API: GET /v1/logistics/clients no longer accepts project_id (the client list is now organization-wide, not project-scoped) and is now keyset-paginated via new search, last_client_name, and limit params — reads a dedicated lookup table instead of scanning the full logistics-requests history, fixing timeouts for large clients.
  • API: Added Scope 3 Category 13 (downstream leased assets) as a new GHG emission category (downstream_leased) alongside the existing upstream-leased-assets category — accepted as a category value on POST /historical-emissions and in validated_ti_all/get_total_impacts/get_greenhouse_gas_emissions filters.
  • API: Facilities list gains the same opt-in group view as business travels, vehicles, logistic hubs, transport, own workforce, and employees — a consolidate_group param for holding-wide data.
  • API: LCA block responses now include updated_by_name and updated_by_logo_url for the user who last updated a linked custom transport route.
  • API: Purchases list, totals, and count gain the same opt-in consolidate_group group view as the other modules — spans the org + descendants, each row enriched with organization_id/name/logo.
  • API: Own workforce trainings paginated list gains the same opt-in consolidate_group group view as the accidents & absences list.
  • API: Employees GET /v2/employees gains a survey_template_id filter and now returns it in the response.
  • API: The emission-factors detail export now accepts start_date/end_date in addition to year.
  • Fixed the vehicle bulk-upload fuel-type dropdown excluding battery_electric_vehicle and plug_in_hybrid_electric_vehicle, plus a related vehicle-type/fuel compatibility validation bug.
  • Fixed DELETE /v1/projects/{project_id} still failing when the project had import sessions attached — sessions are now cleaned up first instead of only returning a 409.
  • Fixed employee commuting CO2e (Scope 3 Cat. 7) to align with total_impacts values, removing synthetic walking-employee rows that no longer matched the underlying calculation.
  • Fixed purchases bulk imports for v2 organizations — D&B supplier enrichment previously skipped them, leaving purchases unmatched to emission-factor configs and product_name empty.
  • Fixed CSV/XLSX header-row detection for files with sparse columns (filled only in the header row, never in data rows), which could misdetect the header on certain imports.
  • Fixed purchases imports to resolve custom emission-factor groups and units defined on a parent organization — previously only descendant orgs were searched, blocking child-org imports.
  • Fixed license plate matching during multi-org CSV imports to ignore hyphen/space formatting differences (normalizes to alphanumeric-only before comparing).
  • Fixed heat invoice impact calculation falling through with no result when the v2 pipeline had no conversion steps — now falls back to the legacy emission-factor columns.
  • Fixed the LCA scenario materials import template forcing material, supplier, and country into one combined dropdown value — the material_id column is now material_name, and each of the three now maps and validates independently.
  • API: Added a product_name[] filter to the purchases list.
  • API: Purchase suppliers list (GET /v1/purchases/suppliers) gains the same opt-in consolidate_group group view as the other modules.
  • API: Vehicle bulk delete (by IDs and by filters) now operates across the whole organization family when consolidate_group is set, instead of silently dropping subsidiary rows. Default behavior unchanged.
  • Fixed the business travel download export showing an emission factor from a frozen reference table instead of the one the calculation engine actually applied, so the exported factor and CO2e didn’t reconcile — the export now sources the factor and calculation chain from each trip’s own conversion_steps, and adds a conversion_steps_detail column showing the full multi-gas chain.

July 21, 2026

API
  • API: PPWR packaging units gain an explicit ppwr_category field (Regulation (EU) 2025/40 Art. 3.1: sales/grouped/transport/e_commerce) — a user-set classification, never inferred, that now drives the gap and compliance engines instead of the legacy packaging_type. Also importable via a unit_ppwr_category CSV catalog column.
  • API: PPWR gap analysis adds category-conditioned obligations: Art. 24(1) void-space ratio cap for grouped/transport packaging (new void_space_pct field), Art. 25 + Annex V single-use plastic ban for grouped packaging (new is_single_use field), and Art. 29 reuse-target advisories.
  • API: Added POST /v2/ppwr/packaging-units/bulk-delete for organization-scoped batch deletion of packaging units, and a search query param on the packaging units list endpoint for case-insensitive filtering by unit name or SKU reference.
  • API: Own workforce accidents & absences list and employee mobility surveys list (GET /v2/employees) gain the same opt-in group view as business travels, vehicles, logistic hubs, and transport — a consolidate_group param plus organization_id[] filter for holding-wide data.
  • API: Added an opt-in scope_to_project_organizations query param to the extended projects list — when true, projects owned by a parent/ancestor organization are only returned if the caller’s org is a project_organizations member of that project. Defaults to false, unchanged behavior.
  • API: The logistics report export now includes vehicle_license_plate and trailer_license_plate columns.
  • API: Added a bulk emission-factors export endpoint — queues an async export of emission-factor-detail records by organization(s), year, and category, with an export_by_company option to produce a per-company ZIP instead of a combined workbook.
  • API: The business travel download export now includes the passenger_number column (previously computed but omitted from the file).
  • API: Fixed integer fields above 2^53 being silently rounded during dataset ingestion — bare integer strings are now parsed exactly instead of routed through float().
  • API: Imports — custom-dataset column auto-mapping now recognizes a file header that contains every token of the field name plus an extra descriptive suffix (e.g. “Salario bruto oficina central” for field “Salario bruto”), reducing manual remapping. See suggest-mapping.
  • Fixed incorrect PPWR Art. 7 recycled-content targets — the gap engine and the Declaration of Conformity resolver had disagreed with each other and with the regulation; both now read from one constants module.
  • Fixed the PPWR supplier-survey template generator silently dropping questions for previously unmapped gap codes (e.g. HEAVY_METALS_NON_COMPLIANT); its gaps_addressed count now matches the questions actually generated.
  • Fixed employee emissions calculated via the legacy path sometimes showing co2e=0 in GET /v2/employees responses even though the underlying emissions were non-zero.

July 20, 2026

API
  • API: Added the Task Completion AssistantPOST /v2/task-completion/projects/{project_id}/evaluate streams (SSE) an AI-assisted evaluation of which project tasks are ready to be marked complete, combining deterministic data-presence signals with an LLM re-ask for ambiguous cases; POST /v2/task-completion/projects/{project_id}/complete bulk-completes the selected tasks behind a server-side data-quality gate. Both support scoping to a subsidiary via organization_id and localized messages via Accept-Language.
  • API: Logistic hubs list gains the same opt-in group view as business travels and vehicles — a consolidate_group param (org + accepted descendants, each hub carrying its owning organization) and an organization_id[] filter to scope it further.
  • API: Added an optional request_date field (YYYY-MM-DD) to POST /v1/logistics/requests and its bulk variant — distinct from shipment_date, for customers who cross-reference logistics data against their own order-request date.
  • API: Employee survey custom fields support conditional branching — new conditions (show child fields when a given option is selected) and depends_on (link a field to a built-in step’s condition group) on CustomFieldSch.
  • API: Added bulk invoice splittingPOST /v1/invoices/bulk-split-preview, bulk-split (by IDs), and bulk-split-by-filters. See invoices.
  • API: Transport (shipments/deliveries) list gains the same opt-in group view as business travels, vehicles, and logistic hubs — a consolidate_group param with group-aware totals and an organization_id[] filter.
  • Fixed vehicle consumption bulk uploads and CSV imports mishandling plates shared across organizations (fleet movements): auto-routing to the correct subsidiary now falls back correctly instead of rejecting the whole batch, and a plate genuinely ambiguous across multiple active orgs now requires an explicit organization instead of guessing one.
  • Fixed a heat invoice impact miscalculation caused by an untyped UUID from a DB query; added missing standard gross-GJ conversion factors.
  • Fixed DELETE /v1/projects/{project_id} returning a 500 instead of a 409 when the project still has import sessions attached.
  • Fixed ROAD/RAIL logistics requests between separate landmasses (e.g. mainland Spain ↔ Canary Islands, Ibiza ↔ Mallorca) silently returning a near-zero, physically impossible distance instead of routing as maritime.

July 15, 2026

API · CLI
  • API: Custom columns are now supported on eight more categories — employees, wastes, vehicles, business travels, invoices, invoice suppliers, facilities, and waste water treatments — matching the existing purchases behavior, with custom_values now returned on list/detail responses. Employees, wastes, business travels, and invoices also include custom columns in their downloaded exports.
  • API: Business travels and sold products list endpoints gain an opt-in consolidate_group query param for a group-wide view across the header organization and its descendants — responses add organization_name/organization_logo_url. Defaults to false, so existing callers are unaffected.
  • API: Added GET /v1/company-lookup/match, /enrich, and /logo — a two-step Dun & Bradstreet company lookup (cheap name+country match, then a billable data enrich step) plus a Brandfetch logo suggestion, for the freemium onboarding flow. Restricted to accounts still in onboarding.
  • API: GET /purchases/{id}/steps now returns an explicit sources array per calculation period (source id, name, version), making calculation provenance explicit instead of implicit.
  • API: Added non_currency_purchases to the purchases unit-type enum, plus new ecoinvent unit options (kWh, MJ, ha) for custom emission factors.
  • API: Wastes gain a provider_name field (OCR-extracted service-provider name) on create, update, list, and detail.
  • API: Projects gain a status field (active/archived); the extended projects list supports filtering by it.
  • API: LCA imports — direct material-to-process links now create connectable blocks matching the manual canvas; import summary counts (total_inputs/total_output/total_blocks) are fixed from always returning zero; the dashboard now surfaces validation_errors for pieces that can’t compute; incompatible units raise a clear INCOMPATIBLE_UNIT error instead of silently corrupting piece data.
  • API: Imports — category-column value mappings are now remembered per organization/template across sessions; mapping/suggest responses add history_restored_count/stale_history_mapping_count.
  • API: Imports — vehicle bulk-upload fuel-type options now include electric, hybrid, and electric_renewable; large workbooks no longer error on mapping/suggest (embedding requests are chunked under the model’s item limit).
  • API: Facilities creation now accepts address_place_id/address_latitude/address_longitude from a Google Places result, skipping strict address validation that previously rejected valid rural/polígono addresses.
  • CLI: Added dcy lca delete-material and dcy lca bulk-delete-materials (alias rm-materials) subcommands. See LCA CLI.
  • Fixed the v2 supplier-code PATCH endpoint storing the wrong mapping ID for non-SIC (CNAE/NACE) codes, causing the assigned code to disappear on the next GET; also fixed a 404 when assigning CNAE/NACE codes, since lookups only checked the SIC table.
  • Fixed ChangePassword.old_password incorrectly enforcing an 8-character minimum, which raised an unhandled error for accounts with a legacy shorter password.
  • Fixed CustomEmissionFactorDataEnergy.renewable_percentage — posting a custom energy emission factor without it no longer errors.

July 14, 2026

API · CLI
  • API: Added GET /v2/download/scope-report/{combustion,electricity,vehicles,recharge} per-category scope-report endpoints; Excel exports gain total_spend and currency columns.
  • API: Facilities list/detail responses now expose an inbound_email status field for the facility’s inbound-email onboarding state.
  • API: Imports — session creation accepts new routing-context parameters (target_organization_id, measurement_campaign_id, lca_id, target_block_id) and a new anonymous suppliers import category. See imports.
  • API: Elastic Data — datasets can now be organized into folders (groups): new group CRUD endpoints and a group_id field on datasets. See datasets.
  • API: Elastic Data — schema inference (POST /v2/elastic-data/inferences) accepts an optional dataset_id to evolve an existing dataset’s schema instead of replacing it.
  • CLI: Fixed dcy purchase supplier commands — set-code, list, and export had incorrect download-path routing, broken pagination across all matches, and country-matching bugs; CSV parsing and export are also hardened against ragged rows and formula injection.
  • Fixed GET /v2/vehicle_consumptions and the facility wastes list returning a server error on an invalid sort value — both now fall back to the default order; the wastes list also gains previously-ignored sortable columns (description, total_km_to_waste_center, identification_name, updated_at).
  • Fixed PATCH /v1/purchases/{id} (and the vehicle/invoice equivalents) crashing on a valid custom_emission_factor_id due to a UUID/string type mismatch.
  • Fixed a spurious validation error on emission-factor config updates when record_ids contained duplicates.

July 13, 2026

API
  • API: Added a native Category 11 electricity audit export for sold products — a per product × country × period CSV with the emission-factor formula, source, and database used.
  • API: PPWR gap-analysis endpoints (/v2/ppwr/) now localize gap descriptions and required actions via the Accept-Language header (Spanish supported, English default).
  • Fixed a geocoding bug where addresses ending in an ISO alpha-2 country code (e.g. “Barcelona, ES”) could resolve to the wrong country, producing incorrect distances for business travel, logistics, and facility data.
  • Fixed exports for custom emission factors showing “Unknown” instead of the emission-factor group name in the Provider column.
  • Fixed the employees “unique values” endpoint not surfacing telecommuting as a work_model value alongside hybrid.

July 10, 2026

API · MCP
  • MCP: Added create_vehicle, update_vehicle, create_employee, and update_employee write tools for managing vehicles and employees programmatically — supports type, ownership, license plate, country, situation, status, and partial updates.
  • MCP: Added create_invoice and update_invoice write tools for managing invoices programmatically, with type and status validation.
  • MCP: Added create_logistics_request write tool for creating logistics requests programmatically, with category, TOC, load unit, and subcontractor type validation.
  • MCP: Added get_workforce_contracts read tool — exposes employee contract history filtered by own_workforce_id, returning start/end dates for contract period tracking. See workforce.
  • MCP: Added get_workforce_remunerations tool to retrieve salary and compensation records for a given workforce contract, including amount, currency, and period dates. Completes the workforce tool set.
  • MCP: Added list_double_materiality tool — retrieve CSRD Double Materiality assessment topics with optional year, lang, and material filters (docs).
  • MCP: Added list_csrd_iros tool — retrieve CSRD IROs (Impacts, Risks, and Opportunities) for a given year (docs).
  • MCP: Added get_csrd_output_data tool — retrieve ESRS disclosure requirements grouped by code, with optional date range filters (docs).
  • MCP: Added list_measurement_campaigns tool — retrieve measurement campaigns (reporting periods) for an organization (docs).
  • MCP: Added list_csrd_survey_results tool — retrieve CSRD stakeholder survey results with impact and financial materiality scores, filterable by year and lang (docs).
  • MCP: Added 6 PPWR packaging compliance toolslist_packaging_units, get_packaging_unit, get_packaging_compliance, get_project_compliance, get_packaging_gaps, and get_ppwr_dashboard. Evaluate EU packaging regulation compliance at unit and project level, identify gaps, and view dashboard metrics. All use /v2/ppwr/ routes. See PPWR.
  • API: Added optional surface_area (numeric) and surface_area_unit (string) fields to facility create, update, and read schemas (/v2/facilities/). Also available on waste water facility creation. Both fields are version-tracked.
  • MCP: Added list_waste_water_treatments and get_waste_water_treatment tools — query Scope 1 waste water treatment records by facility with date range, status, and CO2e status filters. See waste water.
  • MCP: Added list_sold_products, get_sold_product_periods, and get_sold_product_period_emissions tools — access Scope 3 Category 11 (use of sold products) data including product catalog, reporting periods, and per-period emission breakdowns. See sold products.
  • Fixed POST /v1/employees/csv rejecting multi-column CSVs (e.g. Organization + Email) with a FILE_PARSE_ERROR — the CSV branch now picks the email column the same way the Excel branch does.

July 9, 2026

MCP
  • MCP: Added five new write tools for Scope 3 data entry — create_purchase (purchased goods & services), create_business_travel (employee travel with origin/destination or manual distance), create_hotel_stay (accommodation with nights or check_out_date), create_transport (multi-leg shipments with per-section transport mode), and create_waste (waste generated in operations — Scope 3 Category 5). All include client-side enum validation and async CO2e calculation.
  • MCP: Added update_purchase write tool for partial updates to existing purchases — supports product_name, quantity, unit_id, purchase_date, expense_type, description, recycled, and custom_emission_factor_id fields with client-side expense_type validation.
  • MCP: Added update_business_travel write tool for partial updates to business travel records — supports transport_type, dates, origin/destination, distance_km, vehicle details, and trip metadata with client-side enum validation.
  • MCP: Added update_hotel_stay write tool for partial updates to hotel stay records — supports dates, country, hotel name/address, and room count with automatic CO2e recalculation.
  • MCP: Added update_transport write tool for replacing transport records — accepts a full sections array with per-leg transport mode, validates transport_type, travel_method, and frequency enums.
  • MCP: Added update_waste write tool for partial updates to waste records (Scope 3 Category 5) — supports identification_name, base_quantity, dates, destination, total_km_to_waste_center, and emission factor fields with automatic CO2e recalculation.
  • MCP: All Scope 3 write tools are now complete — 5 create tools and 5 update tools covering purchases, business travels, hotel stays, transports, and wastes.
  • MCP: Added create_decarb_target write tool for creating reduction targets within decarbonization plans — supports scope (1-3), target_type (absolute/intensity), base_year, target_year, base_emissions, and reduction_percentage with client-side validation.
  • MCP: Added create_decarb_action write tool for creating concrete decarbonization initiatives linked to reduction targets — supports title, target_id, estimated_co2e_reduction, estimated_cost, payback_period_months, priority (quick_win/medium_term/long_term), and initiative_type with client-side validation.
  • MCP: Added create_project write tool for creating ESG projects — supports name, responsible_user_id, project_type (17 framework types including carbon_footprint, iso_14064, lca, esrs), methodology, and date fields with client-side validation.
  • MCP: Added create_project_task write tool for creating tasks within projects — supports title, assigned_to, due_date, stage (pending/in_progress/completed), category, tags, and subtask nesting via parent_task_id with client-side stage validation.
  • MCP: Added submit_kpi_response write tool for submitting values to Custom KPI campaigns — supports numeric, text, date, and select-type KPIs with optional facility_id scoping. Each entry requires a kpi_id and the matching value field (value_numeric, value_text, value_date, or option_id).
  • MCP: Added data entry workflow guidance to the server’s _INSTRUCTIONS prompt — LLMs now receive step-by-step chains for each write tool and a reminder to confirm with users before creating records.
  • MCP: Added list_workforce read tool — the first tool covering the ESG social pillar (own workforce / employees). Exposes demographics, employment categories, contract dates, locations, and nationality. See workforce.
  • MCP: Added list_workforce_absenteeisms read tool — exposes workforce absenteeism and workplace accident records. Each record is either an absenteeism (hours lost) or an accident (date + context), covering ESRS health & safety social disclosures. See workforce.
  • MCP: Added list_workforce_trainings read tool — exposes workforce training records (type, hours, dates, description) for ESG social disclosures. See workforce.

July 8, 2026

API · MCP
  • API: Added nights parameter to hotel stay create and update endpoints as an alternative to check_out_date — when nights is provided with check_in_date, the checkout date is derived automatically. Either check_out_date or nights must be supplied on creation.
  • API: Added custom_values response field to purchase list, detail, create, and update endpoints — returns elastic-data custom column values as a key-value dictionary. Purchase list sorting now also supports custom column keys.
  • MCP: Added create_facility and update_facility as the first write tools for the MCP server — AI assistants can now create facilities with all standard fields and update existing ones with partial payloads and client-side status validation.
  • API: Added GET /v2/elastic-data/datasets/{dataset_id}/records/{record_id} endpoint to retrieve individual dataset records by ID.

July 7, 2026

API · CLI · Documentation
  • API: Added consolidated reporting endpointsPOST /v1/total-impacts/purchases/report returns product-level purchase emissions ranked by CO2e, and POST /v1/total-impacts/hotel-stays returns hotel-stay emissions (Scope 3 Category 6) with monthly buckets and weighted totals.
  • API: Added header row auto-detection for tabular imports — the header_row parameter and header_row_candidates response field let API consumers handle files with title rows above the actual column headers.
  • ⚠️ CLI: Resolved flag shorthand collisions — removed -y from --year/--registration-year (now means --yes) and -v from --verbose on vehicle diagnose/upload (now means HTTP debug). Use the long forms --year and --verbose instead.
  • CLI: Extended shell tab-completion to purchase, shipment, widget, import, and file-reading commands — widget supports two-level completion (project ID → widget ID). Also auto-registered --project-id and --file-id flag completions across all commands that accept them.
  • CLI: Routed all human-facing messages (cancellation notices, empty-result warnings, validation errors, verbose output) to stderr--json output on stdout is now reliably parseable via pipes.
  • Documentation: Restructured CLI docs — split large pages into standalone command pages for facilities, vehicles, employees, invoices, purchases, transport, and 10+ more commands.

July 6, 2026

API · CLI · MCP
  • Added land use change (land_use_change) as a new GHG emission category across API, MCP, and historical emissions (Scope 1 — LULUCF). The MCP get_greenhouse_gas_emissions tool now accepts category='land_use_change'.
  • CLI: Added shell tab-completion for positional arguments on facility, vehicle, employee, file, project, hub, transport, and member commands — IDs are suggested with human-readable names or license plates.
  • CLI: Changed invoice list --size default from 100 to 50 to align with all other list commands.
  • MCP: Fixed prompt templates (carbon_footprint_summary, fleet_report, logistics_overview) to default year to the previous calendar year instead of hardcoded 2024.

July 5, 2026

CLI
  • CLI: Added SIGTERM handling for clean shutdown in containers — the CLI now exits gracefully with code 143 when stopped by Docker, Kubernetes, or systemd.
  • Documentation: Expanded CLI docs with exit codes reference, structured JSON error output format, auth status --check for credential validation, automatic retry behavior, --json shorthand, dcy doctor exit codes, and config unset/set validation.

July 4, 2026

MCP · Documentation
  • MCP: Added client-side enum validation to 14 tools — catches invalid status, ownership, situation, transport_type, category, framework, impact_category, and other enum parameters before API calls with clear error messages instead of silent empty results.
  • MCP: Enriched docstrings for 9 tools with GHG scope context and usage hints, improving LLM tool discovery for list_vehicles, list_employees, list_transports, list_files, get_recent_activities, list_logistics_hubs, get_logistics_report, get_custom_kpi, and get_kpi_campaign_values.
  • MCP: Fixed incorrect enum values in vehicles, hotel stays, transports, and business travels tool documentation.
  • MCP: Added Gemini CLI configuration to the MCP quickstart guide.
  • Documentation: API response field accuracy sweep — fixed types, nullability, and missing fields across 20+ endpoint pages. Added cross-links between API, CLI, and MCP documentation.

July 3, 2026

API · MCP · Documentation
  • API: Added async logistics report export endpoint GET /v1/logistics/report/export — queues a background job to generate a detailed row-per-leg export (CSV, Excel, or JSON with optional per-client ZIP) and emails a download link when ready.
  • MCP: Added initial client-side enum validation and enriched tool docstrings for better LLM self-correction and tool selection.
  • MCP: Expanded _INSTRUCTIONS with workflow guidance and best practices for multi-step analysis.
  • Documentation: Removed 56 internal/UI-only endpoint pages from public API docs — the developer center now shows only endpoints useful for external API consumers.
  • Documentation: Fixed API base URLs from /api/v1/ to /v1/ and improved the API introduction with versioning and rate limit information.
  • Documentation: Enriched CLI documentation across all command pages with output examples, flag tables, JSON examples, and missing subcommands.
  • Documentation: Elevated 8+ MCP tool pages with response examples, parameter fixes, and scope guidance.

July 2, 2026

Documentation
  • Documentation: Added Common Errors sections to all API endpoint pages with error codes, descriptions, and resolution guidance.
  • Documentation: Added LCA endpoint pagescreate-from-json, create-from-excel, validate, impacts, export-xlsx, and dashboard.
  • Documentation: Added imports endpoint pages for column-values and error-groups.

July 1, 2026

Documentation

June 2026

June 30, 2026

API · MCP
  • MCP: Expanded toolset from 21 to 45 tools — added 24 new read-only tools across facilities detail, wastes, hotel stays, transports, logistics (clients/hubs/report/summary), files, historical emissions, total impacts, emission factors, projects, dashboards, decarbonization plans, KPI datasets/campaigns/assignments, LCA block/piece impacts + validation, elastic data, and compliance.
  • API: Added Elastic Data field/record CRUD endpoints with type-aware filtering and sorting — new POST/PATCH/DELETE for fields and records with operator grammar for typed queries.
  • API: Added LCA ecoinvent activity linking — three new endpoints for searching ecoinvent 3.11 activities (GET /v1/lca/ecoinvent/activities), resolving locations (GET /v1/lca/ecoinvent/activity-locations), and linking materials to impact sources (POST /v1/lca/materials/{id}/link).

June 29, 2026

API · MCP
  • API: Exposed LCA portfolio and dashboard via public API — GET /lca/portfolio and GET /lca/portfolio/{lca_id}/dashboard now accept API key authentication alongside JWT.
  • MCP: Added LCA toolslist_lcas for querying portfolios and get_lca_dashboard for EN 15804 environmental impact results.

June 15, 2026

API
  • API: Added employees bulk delete endpoints — delete by IDs (POST /v1/employees/bulk-delete) and by filters (POST /v1/employees/bulk-delete-by-filters).

June 8, 2026

API
  • API: Added custom KPI Excel download endpoint (GET /v1/custom-kpi/datasets/{id}/download) for programmatic data export.
  • API: Added GET /v1/invoices/totals endpoint for aggregated invoice metrics.
  • API: Added filter_by parameter to GET /v1/purchases for server-side per-column filtering.

June 1, 2026

MCP
  • MCP: Fixed Clerk SSO token support in the MCP OAuth authentication flow.

May 2026

May 9, 2026

API · Documentation
  • API: Added logistics fuel recharges endpoints — POST /v1/logistics/recharges and POST /v1/logistics/recharges/bulk for recording fleet fuel consumption.
  • Documentation: Added Security & Compliance page covering API key lifecycle, data protection, access control, and incident response.

May 5, 2026

MCP

May 4, 2026

Documentation

April 2026

April 23, 2026

API
  • API: Added POST /v1/invoices/recalculate for async invoice recalculation with email notification.
  • API: Added new filter parameters and filter-options endpoint to invoices.

April 22, 2026

API · MCP
  • API: Exposed total_energy_kwh on vehicle consumption endpoints.
  • API: Added GET /v1/waste-efs endpoint for querying waste emission factors.
  • MCP: Added get_greenhouse_gas_emissions tool to MCP emissions page.

April 17, 2026

API
  • API: Added wastes list, detail, bulk-delete, and unique-values endpoints.

April 16, 2026

CLI · Documentation
  • ⚠️ CLI: Renamed CLI binary from dcycle to dcy — all commands now use the dcy prefix.
  • Documentation: Completed dcy CLI command coverage in developer center docs.
  • Documentation: Added ISO 14001 management systems guide.

April 8, 2026

API · MCP
  • API: Added Imports moduleGET /v2/imports/sessions for listing and filtering import sessions, plus provider-backed options endpoint.
  • MCP: Added remote mode setup for VS Code, ChatGPT, and Copilot Studio to MCP quickstart.

April 7, 2026

Documentation
  • Documentation: Added Imports section to the developer center.

April 6, 2026

MCP
  • MCP: Added Copilot Studio, ChatGPT, and Gemini CLI configuration guides to MCP quickstart.

April 1, 2026

MCP
  • MCP: Launched remote MCP server at mcp.dcycle.io — no local installation required.

March 2026

March 31, 2026

API
  • API: Added autonomous file upload flowPOST /v1/files/upload and POST /v1/files/process for programmatic document upload with AI-powered extraction and retry support.

January 2026

January 30, 2026

CLI · MCP · Documentation

January 12, 2026

Documentation
  • Documentation: Added ISO 14064 documentation structure with category-by-category emission guides.

January 11, 2026

API
  • API: Updated API key authentication to include user attribution on API key requests.

December 2025

December 23, 2025

API

December 11, 2025

API

December 3, 2025

Documentation
  • Documentation: Added GHG Protocol Scope 3 guides — Category 1 through Category 9, covering purchased goods, capital goods, fuel & energy, upstream transport, waste, business travel, employee commuting, and downstream transport.

December 2, 2025

API

November 2025

November 20, 2025

API · Documentation