Published 2026-09-21 · Tested 2026-08-20

Zep

B-

Zep received 10 PASS votes and passed 4 of five agent surface checks. The clearest finding came from the find the exact limits task.

Panel: GPT 5.6 Sol, Opus 5, DeepSeek v4F Battery: v1 Read as markdown (opens in a new tab)

Three AI models, GPT 5.6 Sol, Claude Opus 5, and DeepSeek v4 Flash, each read Zep’s public documentation independently and attempted five first-hour developer jobs: add the first agent memory, find the exact limits, recover from a 429, verify an episode webhook, use the Python SDK.

No accounts, API calls, or code execution were used. Every verdict came from public pages and every published quotation passed a live verification check.

Freshness

How rechecks work
Tested
Quotes verified
Surface rechecked

No change since the test.

4 of 5 quoted passages still appear on the live pages. The quoted page changed for Add the first agent memory.

Zep Fern · published
B-

81.2% · 65/80 · AI Agent Readiness Score · reading 30 pts · surface 50 pts

llms.txt PASS
llms-full.txt FAIL
markdown mirror PASS
MCP server PASS
docs AI PASS
Task GPT 5.6 SolOpus 5DeepSeek v4F Consensus
Add the first agent memory PASSPASSPASS PASS
Find the exact limits PARTIALPARTIALPASS PARTIAL
Recover from a 429 PARTIALPASSPARTIAL PARTIAL
Verify an episode webhook PASSPASSPASS PASS
Use the Python SDK PARTIALPASSPASS PASS

docs platform: Fern (unscored) · verified 2026-08-20

What to fix first

These 3 fixes could add up to 14 points to the AI Agent Readiness Score. The list ranks each fix by the points it would add. How the ranking works

  1. 1
    +10 points llms-full.txt check failed

    Found: HTTP 301 redirects to llms.txt, so no separate full corpus exists.

    Fix: Publish llms-full.txt at the docs root with the full text of every docs page in one plain-text file.

    Evidence: help.getzep.com/llms-full.txt (opens in a new tab)

  2. 2
    +2 points Find the exact limits PARTIAL

    Found: The pricing page says Free and Flex rate limits may be lowered depending on service usage. Opus 5 also found no RPM values on the Rate Limits page.

    Fix: List each plan's base RPM, including Free, on the Rate Limits page, and state when limits can be lowered.

    Evidence: www.getzep.com/pricing (opens in a new tab)

  3. 3
    +2 points Recover from a 429 PARTIAL

    Found: The Rate Limits page recommends backoff with jitter in prose only, with no base delay, cap, or retry limit.

    Fix: Add exponential backoff and jitter to the 429 code example, and state the base delay, cap, and retry limit.

    Evidence: help.getzep.com/rate-limits (opens in a new tab)

What the docs get right

  • Add the first agent memory: 3 PASS votes. The quickstart shows installation, authentication, user and thread creation, message insertion, and user_context.context retrieval in one sequence.
  • Verify an episode webhook: 3 PASS votes. The page covers subscription, payload fields, POST handling, raw-body Svix verification, and a five-minute timestamp check.
  • 4 of 5 agent surface checks. Present: llms.txt, markdown mirrors, an MCP server, docs AI. Missing: llms-full.txt.

Add the first agent memory

PASS

PASS consensus from 3 PASS.

The quickstart shows installation, authentication, user and thread creation, message insertion, and user_context.context retrieval in one sequence. One linear Quickstart carries a single Python path from pip install zep-cloud through Zep(api_key=API_KEY), client.user.add, client.thread.create, client.thread.add_messages, and client.thread.get_user_context, with a sample Context Block shown at the end. Quickstart provides a single-page end-to-end walkthrough from pip install through client init, user creation, thread creation, message ingestion, and context block retrieval, with working Python code at every step.

Find the exact limits

PARTIAL

PARTIAL consensus from 1 PASS, 2 PARTIAL.

The account window is one minute; Flex lists 600 RPM and Flex Plus 1,000, while Free, Flex under load, and Enterprise vary. The window (one minute) and scope (per account) are stated, but no RPM number appears anywhere in the docs; the page defers to the marketing pricing page, which gives 600 RPM for Flex and 1,000 RPM for Flex Plus, leaves Free as "Variable rate limits, depending on service-wide load", and then qualifies that Flex numbers may be lowered. Rate limits are expressed as requests-per-minute per account with exact values for paid plans (Flex 600 RPM, Flex Plus 1000 RPM, Enterprise custom) and window/reset headers documented; Free plan is disclosed as variable.

Recover from a 429

PARTIAL

PARTIAL consensus from 1 PASS, 2 PARTIAL.

The page documents Retry-After parsing and sleeping, but leaves the retry loop, backoff schedule, and jitter implementation unspecified. The read-wait-retry loop is fully coded in Python, TypeScript, and Go against the typed 429 error, and the header table names Retry-After as set only on 429 responses, though backoff and jitter are instructed in prose with no base delay, cap, or retry ceiling given. The basic catch-read-wait-retry loop has a code example, but combining Retry-After with exponential backoff and jitter is only mentioned as a recommendation without an implementation code example.

Verify an episode webhook

PASS

PASS consensus from 3 PASS.

The page covers subscription, payload fields, POST handling, raw-body Svix verification, and a five-minute timestamp check. A single page covers dashboard endpoint creation, the episode.processed field table, a Svix library verification handler, a manual HMAC-SHA256 path with the {svix-id}.{svix-timestamp}.{raw-body} signing string, the five-minute replay rejection window, and svix-id deduplication. Complete documentation covers dashboard webhook creation, endpoint configuration, the full Svix library verification flow in Python with raw body handling, plus manual HMAC-SHA256 verification steps.

Use the Python SDK

PASS

PASS consensus from 2 PASS, 1 PARTIAL.

The methods match the live reference, but /sdk-reference/thread/add-messages and /sdk-reference/thread/create returned 404 while operation-ID routes loaded. The Quickstart Python calls match the SDK reference exactly on method names, argument names, and the Message role and content fields; the reference stub imports Zep from the zep_cloud root while the Quickstart imports from zep_cloud.client, and the reference stub omits the API key entirely. Quickstart examples for install, client init, message ingestion, and context retrieval match the SDK reference parameters (threadId path param, messages list, response includes context).

The receipt

Each plan tier has a base rate limit, with Free being the lowest. Free and Flex Plan customers may see rate limits lowered depending on service usage. Enterprise plans have committed, guaranteed rate limits.

The account window is one minute; Flex lists 600 RPM and Flex Plus 1,000, while Free, Flex under load, and Enterprise vary.

Agent surface notes

Initialize returned a valid MCP response with Fern Docs server information.

The live docs expose a public Ask AI control.

Show the score

AI Agent Readiness Score 81.2%, grade B-

Paste this into a readme:

[![AI Agent Readiness Score 81.2%](https://docsforagents.com/badge/zep.svg)](https://docsforagents.com/reports/zep-docs-ai-agent-readiness/)

Method note

This is a reading test of public documentation, not an execution test. No accounts were created and no API calls were run. The AI Agent Readiness Score counts fifteen reading votes at PASS 2, PARTIAL 1, and FAIL 0, for 30 possible points. Five agent surface checks add 10 points each. The total is 80. Consensus chips show each row majority and do not affect scoring. The panel split on 3 of five tasks. Quotes shown here were re-fetched and confirmed verbatim on 2026-08-20.

Read the full methodology

Put another docs site through the battery.

Nominate a docs site