# Letta docs: AI Agent Readiness Score 70.0% (C-)

**70.0% · 56/80 · AI Agent Readiness Score · 26/30 reading points · 30/50 agent surface points**

Letta received 12 PASS votes and passed 3 of five agent surface checks. The clearest finding came from the find the exact limits task.

- Tested: 2026-08-20
- Published: 2026-09-21
- Battery: v1
- Scoring: reading 30 pts · surface 50 pts
- Docs: https://docs.letta.com/

Three AI models, GPT 5.6 Sol, Claude Opus 5, and DeepSeek v4 Flash, each read Letta’s public documentation independently and attempted five first-hour developer jobs: run the first stateful agent, find the exact limits, recover a dropped agent session, authenticate a remote agent connection, use the Agent 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. Preflight substitutions: T3: Dropped Agent SDK session recovery replaces HTTP 429. T4: Remote App Server authentication replaces webhooks.

## Freshness

[How rechecks work](https://docsforagents.com/methodology/#freshness)

- Category: [Agent frameworks & memory](https://docsforagents.com/grades/?category=agent-frameworks)
- Tested: 2026-08-20
- Quotes verified: 2026-08-20
- Surface rechecked: 2026-09-21

No change since the test.

5 of 5 quoted passages still appear on the live pages.

## Agent surface checks · 30/50

| Check | Verdict | Points |
| --- | --- | --- |
| llms.txt | PASS | 10 |
| llms-full.txt | FAIL | 0 |
| Markdown mirror | PASS | 10 |
| MCP server | FAIL | 0 |
| Docs AI | PASS | 10 |

## The Reading Test · 26/30

| Task | GPT 5.6 Sol | Opus 5 | DeepSeek v4F | Consensus |
| --- | --- | --- | --- | --- |
| Run the first stateful agent | PASS | PASS | PASS | PASS |
| Find the exact limits | FAIL | PARTIAL | PARTIAL | PARTIAL |
| Recover a dropped agent session | PASS | PASS | PASS | PASS |
| Authenticate a remote agent connection | PASS | PASS | PASS | PASS |
| Use the Agent SDK | PASS | PASS | PASS | PASS |

Docs platform: Astro Starlight (unscored) · verified 2026-08-20

## What to fix first

These 3 fixes could add up to 24 points to the AI Agent Readiness Score. The list ranks each fix by the points it would add. [How the ranking works](https://docsforagents.com/methodology/#what-to-fix-first)

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

   **Found:** HTTP 308 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:** [docs.letta.com/llms-full.txt](https://docs.letta.com/llms-full.txt)

2. **+10 points · MCP server · check failed**

   **Found:** Candidate endpoints returned HTML errors and no valid MCP response.

   **Fix:** Run a public MCP server for the docs that answers a JSON-RPC initialize call and offers a docs search tool.

   **Evidence:** [docs.letta.com/mcp](https://docs.letta.com/mcp)

3. **+4 points · Find the exact limits · PARTIAL**

   **Found:** The pricing page gives no Letta Auto quota amounts and does not say what happens at the Developer spending limit.

   **Fix:** State each plan's Letta Auto weekly and monthly quota, and what happens when a Developer plan reaches its spending limit.

   **Evidence:** [docs.letta.com/pricing](https://docs.letta.com/pricing)

## What the docs get right

- **Run the first stateful agent: 3 PASS votes.** The CLI tab gives one ordered path with no branching: npm install -g @letta-ai/letta-code on Node.js 22.19+, then /connect for providers, then an auto-created Tutor agent to message, with the provider table at /configuration/models naming every supported provider and its credential type.
- **Recover a dropped agent session: 3 PASS votes.** One page covers the whole recovery path: the closed session cannot be reused, resumeSession(conversationId) continues the thread, listMessages() or bootstrapState() reconciles state because the SDK does not replay missed events, recoverPendingApprovals() handles approvals left on the runtime, and a caller-supplied otid on send() lets the client match its optimistic row against the persisted message rather than re-sending.
- **3 of 5 agent surface checks.** Present: llms.txt, markdown mirrors, docs AI. Missing: llms-full.txt, an MCP server.

## Run the first stateful agent

**PASS**

PASS consensus from 3 PASS.

The CLI path states the Node requirement, install command, automatic local-agent creation, provider connection, and first-message options. The CLI tab gives one ordered path with no branching: npm install -g @letta-ai/letta-code on Node.js 22.19+, then /connect for providers, then an auto-created Tutor agent to message, with the provider table at /configuration/models naming every supported provider and its credential type. The CLI quickstart is one clear path: install, run letta (auto-creates Tutor agent), use /connect for provider setup, then send messages in the interactive shell.

## Find the exact limits

**PARTIAL**

PARTIAL consensus from 2 PARTIAL, 1 FAIL.

Agent caps and API charges are explicit, but Letta Auto amounts and behavior at the developer spending limit are not stated. Agent caps and API-plan charges are exact (Free "limited to 3 stateful agents", Pro "Up to 20 stateful agents", API Plan "$20 /month", "$0.10 / active agent / mo", "$0.00015 / sec tool execution"), but no page anywhere states a numeric Letta Auto quota, the FAQ restates the free cap as an unquantified "limited number of total agents", and spending limits are only referenced as an email notification with no documented place to set one. Agent caps (3 free, 20 pro, unlimited developer) and API-plan rates ($0.10/agent/month, $0.00015/sec) are clear. Letta Auto weekly/monthly quotas are stated to exist but never quantified on the pricing page.

## Recover a dropped agent session

**PASS**

PASS consensus from 3 PASS.

The docs require a fresh resumed session, history reconciliation before retry, and OTID-based transcript deduplication while preserving agent state. One page covers the whole recovery path: the closed session cannot be reused, resumeSession(conversationId) continues the thread, listMessages() or bootstrapState() reconciles state because the SDK does not replay missed events, recoverPendingApprovals() handles approvals left on the runtime, and a caller-supplied otid on send() lets the client match its optimistic row against the persisted message rather than re-sending. The recovery path is explicit: resume via resumeSession(), reconcile with listMessages() or bootstrapState(), and never blindly retry sends. The createTranscriptAccumulator rebase pattern handles mid-stream reconnects.

## Authenticate a remote agent connection

**PASS**

PASS consensus from 3 PASS.

The reference covers online-environment discovery, bearer authentication for REST and WebSockets, dual sockets, runtime startup, replay, and deduplication. Discovery (GET /v1/environments?onlineOnly=true), HTTP bearer auth, the browser-only ?token= query-parameter fallback with its TLS and logging caveat, both relay channel URLs, runtime_start, and post-transport-loss recovery ("runtime_start performs the initial state replay") are all documented on the overview and reference pair. Full path documented: discover hosted environments via REST API with Bearer auth, open two authenticated WebSocket channels, send runtime_start to restore subscription.

## Use the Agent SDK

**PASS**

PASS consensus from 3 PASS.

The quickstart installs the package and uses the same createAgent, createSession, send, and stream methods listed in the reference. The runnable cloud example (createAgent with model/persona/human, createSession, send, for await over stream(), filtering message.type === "assistant") matches the reference table and the TypeScript LettaCodeSession interface exactly, including the same model identifier anthropic/claude-opus-4-8 used on the Creating agents page. The quickstart provides a complete working example with install, agent creation, session creation, message send, and stream response. The code matches the reference behavior documented in the sessions and messages pages exactly.

## The receipt

> The free tier includes a limited number of total agents and LLM requests with rotating free models.

Agent caps and API-plan charges are exact (Free "limited to 3 stateful agents", Pro "Up to 20 stateful agents", API Plan "$20 /month", "$0.10 / active agent / mo", "$0.00015 / sec tool execution"), but no page anywhere states a numeric Letta Auto quota, the FAQ restates the free cap as an unquantified "limited number of total agents", and spending limits are only referenced as an email notification with no documented place to set one.

- [docs.letta.com/pricing](https://docs.letta.com/pricing)

## Agent surface notes

Candidate endpoints returned HTML errors and no valid MCP response.

The live docs expose a public Ask Ezra assistant.

## 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 1 of five tasks. Quotes shown here were re-fetched and confirmed verbatim on 2026-08-20.

Methodology: https://docsforagents.com/methodology/

Canonical URL: https://docsforagents.com/reports/letta-docs-ai-agent-readiness/
