ReqRes
Server Details
Hosted backend for AI agents: create projects with persistent collections and keys, no signup.
- Status
- Healthy
- Uptime
- 100.0% over 22 days
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
- ChatGPT
- –
- Claude
- –
TDQS
Scored across 7 tools
Most tools are clearly distinct: records have create/list/update/delete and collections have create/list. The main potential confusion is create_project vs create_collection, since creating a project also provisions a starter collection, but the descriptions explicitly differentiate 'a real hosted backend' from 'a new resource within a project'.
Every tool follows a strict verb_noun snake_case pattern (create_collection, create_project, create_record, delete_record, list_collections, list_records, update_record), with consistent pluralization for the list verbs.
Seven tools is well-scoped for a hosted-backend service, covering the project, collection, and record lifecycle without padding or obvious redundancy.
Records have full CRUD, but collections only support create and list (no delete_collection or update_collection), and there is no get/delete_project or way to inspect project state beyond the create response. These gaps are notable though partially workable around via the manage key.
Available Tools
7 toolscreate_collectionCreate a collectionAInspect
Create a collection: a new resource (like a table) with its own REST endpoint at /api/collections/{slug}/records. Use one per kind of thing the app stores (tasks, users, orders). Free projects allow 3.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Human-readable name, e.g. "Tasks"; the slug is derived from it | |
| api_key | Yes | Project manage key (pro_...) returned by create_project. Public keys (pub_...) are read-only. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly=false, idempotent=false, destructive=false, openWorld=false, so the safety profile is covered. The description adds a genuine constraint not present in structured fields — the free-tier quota of 3 collections — which affects the decision to call. It stops short of disclosing failure modes such as slug collisions or what happens at quota.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, each earning its place: identity/what-it-is, usage rule, and quota limit, with the definition front-loaded. No padding or restatement of the title.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a create tool with no output schema and full schema coverage, the description supplies the conceptual model, the resulting endpoint, and a quota caveat. The remaining gap is the return value (e.g., whether the created slug/id comes back) and any collision behavior, which an agent would benefit from knowing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and both parameters (name, api_key) are documented in the schema, including the slug derivation and the manage-vs-public key distinction. The description adds no parameter-level meaning beyond that, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('Create a collection') and immediately grounds it with a concrete mental model ('a new resource (like a table)') plus the REST endpoint it produces at /api/collections/{slug}/records. This clearly separates it from sibling write tools like create_project or create_record.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives a real usage rule: 'Use one per kind of thing the app stores (tasks, users, orders)', which tells the agent the intended granularity. It does not name alternatives (e.g., list_collections for reading back existing ones) or state when not to create a collection, so it falls short of explicit routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_projectCreate a ReqRes projectAInspect
Create a real hosted backend (a REST API with a persistent database) in one call, with no account or API key. Use it when the user needs to store data, persist an app or prototype, or give a frontend a live API. Returns a manage key, a read-only public key, a starter "products" collection, the base URL and a claim_url. Show the user the claim_url: signing in through it keeps the project; otherwise it is deleted after 72 hours. Free limits: 250 requests a day, 3 collections, 100 records.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only say write, non-idempotent, non-destructive. The description goes far beyond: it enumerates the returned credentials (manage key, read-only public key), the seeded products collection, base URL and claim_url, warns that the project is deleted after 72 hours unless claimed, and states concrete quotas (250 req/day, 3 collections, 100 records). No account or API key is required. This is exactly the extra context annotations cannot supply.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core capability, then usage, then return values/side effects. Every sentence is functional, though the return-value list, the claim_url instruction, and the quota list are three packed concerns in one paragraph that could be slightly tighter.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no input or output schema, the description carries the full explanatory load and does so: what is created, what comes back, the critical claim_url action, the 72-hour expiry risk, and usage limits. An agent can invoke this correctly and relay the necessary follow-up step to the user.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Zero parameters, so the baseline of 4 applies. There is no parameter surface for the description to clarify or for the schema to leave undocumented.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource with scope: 'Create a real hosted backend (a REST API with a persistent database) in one call.' It is unmistakably distinct from the sibling tools, which all operate on an already-existing project (create_collection, create_record, list_records), making this the top-level provisioning step.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit when-to-use: 'when the user needs to store data, persist an app or prototype, or give a frontend a live API.' It also implicitly serves as the prerequisite for every sibling tool. No explicit when-not or named alternative is given (e.g., reusing an existing project instead of provisioning another), so it falls short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_recordCreate a recordBInspect
Save a record (a JSON object) in a collection so it persists. Pass the fields as data; the API returns it with an id.
| Name | Required | Description | Default |
|---|---|---|---|
| data | Yes | Record fields, e.g. {"title": "Write tests", "done": false} | |
| api_key | Yes | Project manage key (pro_...) returned by create_project. Public keys (pub_...) are read-only. | |
| collection | Yes | Collection slug, e.g. "products" |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, idempotentHint=false, and destructiveHint=false, so the write/idempotency profile is covered. The description adds a useful behavioral fact: the created object is returned with an id. It does not address duplicate handling, permission requirements, or failure modes, so it adds modest value beyond structured data.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, front-loaded with the persistence semantics and immediately followed by the argument and return behavior. No filler or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, and the description partially compensates by stating that the record is returned with an id. However, for a non-idempotent write tool with a nested data object, nothing is said about duplicate creation, validation errors, or required key type at call time.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with each of data, api_key, and collection documented in the schema, so the baseline is 3. The description's 'Pass the fields as data' only restates the data parameter without adding syntax, constraints, or edge-case guidance.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource: save a record (JSON object) in a collection so it persists. That distinguishes it from create_collection/create_project by name and scope. It stops short of explicitly contrasting with update_record or delete_record, so it is clear but not sibling-differentiated.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use guidance, no when-not-to-use, and no mention of the alternative update_record for existing records. The description never states prerequisites such as needing a manage key, even though the schema does.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_recordDelete a recordCDestructiveIdempotentInspect
Delete a record from a collection.
| Name | Required | Description | Default |
|---|---|---|---|
| api_key | Yes | Project manage key (pro_...) returned by create_project. Public keys (pub_...) are read-only. | |
| record_id | Yes | ||
| collection | Yes | Collection slug, e.g. "products" |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true, idempotentHint=true, and readOnlyHint=false, so the safety profile is covered structurally. The description adds nothing beyond that - it doesn't say whether deletion is permanent/irreversible, what happens if the record doesn't exist, or what permissions the api_key must carry, leaving the extra behavioral burden unaddressed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single short sentence that is front-loaded and wastes no words. It is efficient, though its brevity contributes to the gaps elsewhere.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a destructive, irreversible mutation with no output schema and partial parameter documentation, the description is too thin - it omits irreversibility, failure behavior on missing records, and any auth context, relying almost entirely on annotations.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 67% (record_id has no schema description), and the phrase 'from a collection' only loosely gestures at the collection parameter. The description adds no syntax, format, or meaning beyond what the schema already provides for api_key and collection.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb (Delete) and resource (record from a collection), so the operation is unambiguous. It does not, however, distinguish this tool from siblings like update_record or create_record beyond the obvious verb difference, so it stops short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no statement of when to use this tool versus alternatives (e.g., update_record for modification), nor any prerequisites or exclusions. The usage is only implied by the verb 'Delete'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_collectionsList collectionsCRead-onlyInspect
List the collections in the project.
| Name | Required | Description | Default |
|---|---|---|---|
| api_key | Yes | Project manage key (pro_...) returned by create_project. Public keys (pub_...) are read-only. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=false, so the safety profile is covered, but the description adds nothing beyond that. It does not mention pagination, result ordering, what happens with a read-only public key, or any return shape, despite having no output schema to fall back on.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One short sentence with the resource front-loaded and zero filler. It is efficient, though its brevity borders on under-specification rather than tight communication.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter read tool with full annotation coverage, the essentials are present, but with no output schema the description should at least hint at what a "collection" is or what the call returns. The auth nuance lives only in the schema, leaving the description minimally adequate.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the single api_key parameter is fully documented in the schema, including the manage-key vs public-key distinction. The description contributes no additional parameter meaning, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource ("List the collections") and scopes it to "the project," which is enough to separate it from create_collection and list_records by resource alone. It stops short of explicitly naming a sibling it supersedes or disambiguating list_collections from list_records.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to call this versus create_collection or list_records, and no stated preconditions. The only usable context (it lists within a project) is implied by the phrase "in the project" rather than explained.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_recordsList recordsBRead-onlyInspect
Read the records stored in a collection (paginated).
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | ||
| api_key | Yes | Project manage key (pro_...) returned by create_project. Public keys (pub_...) are read-only. | |
| collection | Yes | Collection slug, e.g. "products" |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds the specific behavioral detail '(paginated),' which is crucial mechanical context not provided by the annotations or schema. Since annotations cover the safety profile (readOnlyHint), the description fulfills its role by detailing core operation mechanics.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
It is highly concise, using a single sentence to communicate the core function and a key constraint (pagination). There is no waste in the phrasing.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Since no output schema exists, the description could benefit from hinting at the expected structure or attributes of the records being returned. As is, it only defines the action, not the outcome details.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description mentions 'a collection,' which relates directly to the collection parameter. Since schema coverage is moderate (67%), the description adds marginal value by summarizing the resource type, but does not compensate for the gaps in documentation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Read') and the resource ('records stored in a collection'). It distinguishes itself from mutation tools like create_record or update_record by focusing on retrieval.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description does not provide explicit guidance on when this tool should be used versus other siblings. It offers no prerequisites or exclusionary conditions for agent selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_recordUpdate a recordCDestructiveIdempotentInspect
Replace a record's fields.
| Name | Required | Description | Default |
|---|---|---|---|
| data | Yes | ||
| api_key | Yes | Project manage key (pro_...) returned by create_project. Public keys (pub_...) are read-only. | |
| record_id | Yes | ||
| collection | Yes | Collection slug, e.g. "products" |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true, idempotentHint=true, and readOnlyHint=false, so the safety profile is covered. The word 'Replace' adds a useful hint that this is a full overwrite rather than a merge, but it never states whether omitted fields are dropped, nor does it mention auth constraints (left to the api_key schema description).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four words with zero waste and the verb is front-loaded, but for a destructive four-parameter mutation the brevity crosses from concise into under-specified. It is not bloated, but it also does not earn its place as sufficient guidance.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
A destructive, idempotent mutation with a nested free-form payload, no output schema, and half the parameters undocumented needs far more than one sentence. Nothing tells the agent what the response looks like, what permissions are needed, or how the data object is interpreted.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 50%: api_key and collection are documented in the schema, but record_id and especially the nested, free-form `data` object have no description anywhere. The description does not compensate by explaining the shape or expectations of the replacement payload, which is the most important parameter here.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Replace a record's fields'), and the replace framing implicitly separates it from create_record and delete_record. It does not explicitly name or contrast any sibling, so it falls short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this versus create_record or delete_record, no prerequisites, and no note about needing an existing record_id. The agent must infer all usage conditions from the name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
7 tool updates
- First observed
create_collection - First observed
create_project - First observed
create_record - First observed
delete_record - First observed
list_collections - First observed
list_records - First observed
update_record
Related MCP Connectors
Persistent memory and vector search for AI agents. Hosted, OAuth-protected via Google sign-in.
Hosted persistent memory with semantic search, importance and TTL for AI agents.
Supabase-compatible Postgres for agents: projects, branches, SQL, auth, storage, email.
Persistent cloud memory for AI agents. Store and search key-value memories across sessions.
Related MCP Servers
- AlicenseNot gradedqualityFmaintenancePersistent memory and identity infrastructure for AI agents. Cross-session wake protocol, drift detection, immutable snapshots, and shared memory spaces — free hosted API11MIT
- AlicenseNot gradedqualityBmaintenanceSelf-hosted memory service that gives AI agents persistent, searchable memory across sessions, machines, and projects.1MIT
- AlicenseNot gradedqualityNot gradedmaintenanceA lightning-fast, self-hosted knowledge store and memory layer for AI agents-
- AlicenseNot gradedqualityBmaintenancePersistent memory layer for AI agents with entity resolution, PII detection, AES-256-GCM encryption at rest, and hybrid search. Self-hosted. 100% on LoCoMo benchmark.787 PyPI16MIT
Glama MCP Gateway
Add one secure layer between your agents and this server.