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

# Readiness Score

> 7-component compliance score (0–120) measuring EU AI Act readiness

The MeshAI readiness score measures your organization's EU AI Act compliance posture across 7 components. The maximum score is **120 points**.

## Score Components

| # | Component                  | Article    | Max Points | What It Checks                                                                                                                       |
| - | -------------------------- | ---------- | ---------- | ------------------------------------------------------------------------------------------------------------------------------------ |
| 1 | **Audit Trail Active**     | Article 12 | 20         | At least one audit event has been recorded for the tenant                                                                            |
| 2 | **Risk Classification**    | Article 6  | 25         | Proportion of registered agents that have a risk classification on record                                                            |
| 3 | **Human Oversight (HITL)** | Article 14 | 20         | High-risk/unacceptable-risk agents are covered by an enabled `require_approval` policy                                               |
| 4 | **Documentation**          | Article 11 | 15         | Proportion of agent metadata fields (name, description, framework, model provider, model name) that are filled in, across all agents |
| 5 | **Data Retention**         | Article 12 | 20         | Days of audit history retained, scored against the 180-day (6-month) minimum                                                         |
| 6 | **FRIA Completion**        | Article 27 | 10         | Proportion of high-risk/unacceptable-risk agents with a submitted FRIA                                                               |
| 7 | **Incident Response**      | Article 73 | 10         | No incidents currently past their Article 73 notification deadline                                                                   |

## Get Your Readiness Score

<CodeGroup>
  ```bash curl theme={null}
  curl https://api.meshai.dev/api/v1/compliance/readiness \
    -H "Authorization: Bearer msh_YOUR_API_KEY"
  ```

  ```python SDK theme={null}
  from meshai import MeshAI

  client = MeshAI(api_key="msh_...")
  score = client.get_readiness_score()
  ```
</CodeGroup>

<ResponseExample>
  ```json Response theme={null}
  {
    "success": true,
    "data": {
      "score": 85,
      "max_score": 120,
      "components": [
        {
          "name": "Audit Trail Active",
          "article": "Article 12",
          "max_score": 20,
          "score": 20,
          "detail": "234 events recorded",
          "status": "pass"
        },
        {
          "name": "Risk Classification",
          "article": "Article 6",
          "max_score": 25,
          "score": 21,
          "detail": "10/12 agents classified",
          "status": "partial"
        },
        {
          "name": "Human Oversight (HITL)",
          "article": "Article 14",
          "max_score": 20,
          "score": 20,
          "detail": "2 approval policies cover 3 high-risk agents",
          "status": "pass"
        },
        {
          "name": "Documentation",
          "article": "Article 11",
          "max_score": 15,
          "score": 13,
          "detail": "13/15 metadata completeness",
          "status": "pass"
        },
        {
          "name": "Data Retention",
          "article": "Article 12",
          "max_score": 20,
          "score": 20,
          "detail": "212 days retained",
          "status": "pass"
        },
        {
          "name": "FRIA Completion",
          "article": "Article 27",
          "max_score": 10,
          "score": 3,
          "detail": "1/3 FRIAs submitted",
          "status": "partial"
        },
        {
          "name": "Incident Response",
          "article": "Article 73",
          "max_score": 10,
          "score": 10,
          "detail": "No overdue incident notifications",
          "status": "pass"
        }
      ],
      "assessed_at": "2026-03-17T10:00:00Z"
    }
  }
  ```
</ResponseExample>

Each component reports its own `status` - `pass`, `partial`, or `fail` - instead of a single overall rating; there is no separate `total_score`, `rating`, or `recommendations` field. Use `score` / `max_score` at the top level for the overall figure, and inspect each component's `status`/`detail` to see what to fix.

## Improving Your Score

<Steps>
  <Step title="Keep the audit trail active (20 pts)">
    Any governance action (agent registration, kill switch, risk classification, policy changes) writes an audit event. As long as at least one event exists, this component is full.
  </Step>

  <Step title="Classify all agents (25 pts)">
    Assign a [risk level](/governance/risk-classification) to every registered agent. Use the AI-assisted suggestion endpoint if unsure.
  </Step>

  <Step title="Cover high-risk agents with approval policies (20 pts)">
    Create an enabled `require_approval` [policy](/governance/policies) scoped (via `conditions.risk_levels`) to your high-risk and unacceptable-risk agents.
  </Step>

  <Step title="Fill in agent metadata (15 pts)">
    Ensure every agent has a name, description, framework, model provider, and model name via `PATCH /agents/{id}`.
  </Step>

  <Step title="Maintain 180 days of audit history (20 pts)">
    This component scores against your oldest retained audit event. It rises automatically as your account accumulates history, up to the 6-month (180-day) minimum.
  </Step>

  <Step title="Submit FRIAs (10 pts)">
    Complete and submit a [FRIA](/governance/fria) for every high-risk or unacceptable-risk agent.
  </Step>

  <Step title="Stay ahead of incident deadlines (10 pts)">
    Resolve or notify authorities before the Article 73 deadline on any open [incident](/governance/incidents) - this component fails if any incident is currently overdue.
  </Step>
</Steps>
