> ## Documentation Index
> Fetch the complete documentation index at: https://code.dcycle.io/llms.txt
> Use this file to discover all available pages before exploring further.

# EcoVadis

> Check documents, manage the questionnaire, previous assessments and answers of an EcoVadis project

<Note>
  **Early Access** - The Dcycle CLI is currently available for enterprise customers.
  [Contact us](/docs/support) to learn more about access.
</Note>

## Overview

`dcy ecovadis` operates the EcoVadis module: it checks whether each document of an EcoVadis project would be accepted, manages the project's questionnaire and the organization's past assessments.

The organization needs the **EcoVadis plan** (ask a Dcycle admin to enable it). Without it every command answers `403 ECOVADIS_NOT_ENABLED`, which the CLI reports as "EcoVadis is not enabled for this organization".

<Warning>
  Commands marked **cost** run the EcoVadis agent / an LLM over the project's documents and consume tokens. They show a warning and ask for confirmation; pass `--yes` to skip it (required in scripts, where there is no terminal). Prefer a dev environment for tests.
</Warning>

All commands take `--org <id>` to override the active organization and respect `--format json`. The MCP server exposes the read-only subset as the `get_ecovadis_*` and `list_ecovadis_*` tools.

### Available Commands

| Command | Cost | Description |
| - | - | - |
| `dcy ecovadis checks list <project-id>` | — | Every document with its verdict and failing requirements (`--status`, `--detail` for evidence pages) |
| `dcy ecovadis checks recompute <project-id>` | cost | Recompute the checks (`--force` for unchanged documents) |
| `dcy ecovadis checks excluded <project-id>` | — | Files taken out of the analysis |
| `dcy ecovadis checks exclude <project-id> <file-id>...` | `--yes` | Take files out of the analysis (drops their citations from suggested answers) |
| `dcy ecovadis checks include <project-id> <file-id>...` | — | Bring files back |
| `dcy ecovadis checks full-read-preview <project-id>` | — | Dry run: which documents a full read would read |
| `dcy ecovadis checks full-read <project-id>` | cost | Read the unreviewed documents in full with the agent |
| `dcy ecovadis checks rerun-filter <project-id> <file-id>...` | cost | Run filter 1 (classification + checks) again, max 50 files |
| `dcy ecovadis checks set-type <project-id> <file-id>... --type <code\|none>` | cost | Give files an EcoVadis document type, max 50 files |
| `dcy ecovadis checks override <project-id> <check-id> <code> --outcome ...` | — | Override a requirement outcome |
| `dcy ecovadis questionnaire sources <project-id>` | — | Questionnaire in use and the sources a draft can come from |
| `dcy ecovadis questionnaire preview <project-id>` | — | Catalog questions a generate would seed the draft with |
| `dcy ecovadis questionnaire questions <project-id>` | — | Questions grouped per theme |
| `dcy ecovadis questionnaire generate <project-id>` | cost | Generate the draft (custom) questionnaire |
| `dcy ecovadis questionnaire reset-standard <project-id>` | `--yes` with `--mode replace` | Go back to the standard questionnaire |
| `dcy ecovadis previous-assessment list\|show\|create\|edit\|delete\|link-file\|unlink-file\|reread\|context` | — | Past assessments of the organization |
| `dcy ecovadis answers list <project-id>` | — | Saved answers of the questionnaire |

***

## Document Checks

```bash theme={"theme":{"light":"github-light","dark":"github-dark"}}
dcy ecovadis checks list <project-id> --status at_risk --detail
```

```
3f0c...  | policy.pdf | policy | at_risk | read done | R05_SCOPE_COVERAGE:fail
    R05_SCOPE_COVERAGE p. 3: "This policy applies to the headquarters only..."
```

Statuses are `accepted`, `at_risk`, `rejected`, `pending` and `not_applicable` (`--status` is case-insensitive and anything else is an error). `--json` also returns the `ecovadis_types` you can pass to `set-type`.

```bash theme={"theme":{"light":"github-light","dark":"github-dark"}}
dcy ecovadis checks recompute <project-id> --yes            # unchanged documents are skipped
dcy ecovadis checks full-read-preview <project-id>          # free: what would be read
dcy ecovadis checks full-read <project-id> --yes            # queued, runs in the background
dcy ecovadis checks set-type <project-id> <file-id> --type policy --yes
dcy ecovadis checks override <project-id> <check-id> R05_SCOPE_COVERAGE \
  --outcome pass --reason "Covered in annex 2"              # --outcome clear removes it
```

`--reason` is required to set an outcome. `exclude` keeps the files in the project but removes them from the checks and from the suggested answers that cite them; `include` does not restore the dropped citations. If none of the file IDs changed state (not in the project, or already excluded/included) the command prints the result and exits with an error; if only some did, it warns on stderr.

## Questionnaire

```bash theme={"theme":{"light":"github-light","dark":"github-dark"}}
dcy ecovadis questionnaire sources <project-id>
dcy ecovadis questionnaire generate <project-id> --source previous_assessment --assessment-id <id> --yes
dcy ecovadis questionnaire reset-standard <project-id> --mode replace --yes
```

`--mode create` (default) answers 409 when there is something to lose (a custom questionnaire already exists, or the standard one has answers); `--mode replace` overwrites it and discards the answers. The `--mode create` 409 messages tell you to use `--mode replace`. `--language` (`questionnaire preview` and `generate`) is optional: unset, the API uses English texts (`en`). The questionnaire commands and `answers list` fail with a clear error if the ID is not an EcoVadis project. `--source` is `auto` (latest parsed questionnaire, else the catalog), `previous_assessment` or `catalog`.

## Previous Assessments

They belong to the organization, not to a project.

```bash theme={"theme":{"light":"github-light","dark":"github-dark"}}
dcy ecovadis previous-assessment create --year 2024 --file-id <scorecard-file> --file-id <questionnaire-file>
dcy ecovadis previous-assessment show <assessment-id>      # poll until the statuses leave pending
dcy ecovadis previous-assessment reread <assessment-id> --target scorecard
dcy ecovadis previous-assessment context ENV101
```

## Answers

```bash theme={"theme":{"light":"github-light","dark":"github-dark"}}
dcy ecovadis answers list <project-id> --has-response true --category environment
```

With `--json`, `answers list` returns `{items, total, page, size}`. Themes for `--category` are lowercase: `general`, `environment`, `labor_human_rights`, `ethics`, `sustainable_procurement`.

***

## Demo Flow

Create the organization, enable the EcoVadis plan on it and add the members from the app (the CLI does not do that). Then, with the organization active (`dcy org set <org-id>`), run it from the terminal. This runs the LLM over the uploaded files, so use a dev environment:

```bash theme={"theme":{"light":"github-light","dark":"github-dark"}}
# 1. Project and documents
dcy project create --name "EcoVadis 2026" --type ecovadis --start 2026-01-01 --end 2026-12-31 --due 2026-12-31
dcy file upload ./policy.pdf --project-id <project-id>
# 2. Wait until `checks list` shows the document type of every file (classification finished);
#    recomputing earlier leaves them not_applicable
dcy ecovadis checks list <project-id>
# 3. Checks
dcy ecovadis checks recompute <project-id> --yes
dcy ecovadis checks list <project-id>
```

## Releasing the CLI

`dcy` is built from `dc-go/` with GoReleaser. A release is a `dc-go/vX.Y.Z` tag on a commit already in `main`; binaries are published to `Dcycle-by-WUM/dcy-releases` and installed with Homebrew (`brew upgrade dcy`). New commands reach users only after that release.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.