---
title: "Collection counts and freshness probe"
method: GET
path: "/api/v1/agents/meta"
tags: ["Agents"]
---

# Collection counts and freshness probe

`GET /api/v1/agents/meta`

## Request

- Base URL: `https://aicoolies.com`
- URL: `https://aicoolies.com/api/v1/agents/meta`
- Auth: none required

Cheap freshness document for agents. The ETag matches /api/agents/context so a client can skip the full payload. Supports conditional GET via If-None-Match. CORS is * for GET and OPTIONS. Responses carry RateLimit headers so a client can self-throttle. Version-pinned alias of /api/agents/meta; both paths run the same handler. Versioning and deprecation policy: https://aicoolies.com/developers#versioning.

## Response `200`

Counts and latest-updated timestamps

- AgentMeta
  - `schema_version` integer, required
  - `generated_at` string, date-time, required
  - `counts` CatalogCounts, required: Record count per collection.
    - `tools` integer
    - `comparisons` integer
    - `reviews` integer
    - `stacks` integer: Editorial stacks were retired; this field is kept for v1 compatibility and is always empty.
    - `use_cases` integer
    - `categories` integer
    - `tags` integer
  - `latest_updated` LatestUpdated, required: Newest updatedAt per collection, or null when the collection is empty.
    - `tools` string, date-time, nullable
    - `comparisons` string, date-time, nullable
    - `reviews` string, date-time, nullable
    - `stacks` string, date-time, nullable: Editorial stacks were retired; this field is kept for v1 compatibility and is always empty.
    - `use_cases` string, date-time, nullable
    - `categories` string, date-time, nullable
    - `tags` string, date-time, nullable
  - `verification_coverage` VerificationCoverage, required: Record-wide editorial verification coverage. Tags are omitted because their schema has no verification field.
    - `tools` VerificationCoverageRow
      - `total_count` integer, required
      - `verified_count` integer, required
      - `missing_verification_count` integer, required
      - `coverage_ratio` number, required: Verified records divided by total records.
      - `oldest_verified_at` string, date-time, nullable, required
      - `latest_verified_at` string, date-time, nullable, required
    - `comparisons` VerificationCoverageRow
      - `total_count` integer, required
      - `verified_count` integer, required
      - `missing_verification_count` integer, required
      - `coverage_ratio` number, required: Verified records divided by total records.
      - `oldest_verified_at` string, date-time, nullable, required
      - `latest_verified_at` string, date-time, nullable, required
    - `reviews` VerificationCoverageRow
      - `total_count` integer, required
      - `verified_count` integer, required
      - `missing_verification_count` integer, required
      - `coverage_ratio` number, required: Verified records divided by total records.
      - `oldest_verified_at` string, date-time, nullable, required
      - `latest_verified_at` string, date-time, nullable, required
    - `stacks` VerificationCoverageRow
      - `total_count` integer, required
      - `verified_count` integer, required
      - `missing_verification_count` integer, required
      - `coverage_ratio` number, required: Verified records divided by total records.
      - `oldest_verified_at` string, date-time, nullable, required
      - `latest_verified_at` string, date-time, nullable, required
    - `use_cases` VerificationCoverageRow
      - `total_count` integer, required
      - `verified_count` integer, required
      - `missing_verification_count` integer, required
      - `coverage_ratio` number, required: Verified records divided by total records.
      - `oldest_verified_at` string, date-time, nullable, required
      - `latest_verified_at` string, date-time, nullable, required
    - `categories` VerificationCoverageRow
      - `total_count` integer, required
      - `verified_count` integer, required
      - `missing_verification_count` integer, required
      - `coverage_ratio` number, required: Verified records divided by total records.
      - `oldest_verified_at` string, date-time, nullable, required
      - `latest_verified_at` string, date-time, nullable, required
  - `payload_etag` string, required

## Other responses

- `304`: Not modified — the ETag sent in If-None-Match still matches.
- `429`: Rate limit exceeded. Retry-After carries the wait in seconds.
- `500`: Server error

---

[API](https://skmtc.dev/aicoolies/apis/aicoolies-public-api.md) · [All operations](https://skmtc.dev/aicoolies/apis/aicoolies-public-api/llms.txt) · [OpenAPI document](https://skmtc.dev/aicoolies/apis/aicoolies-public-api/revisions/8d666d0ed7aa?raw)
