Cleat
Server Details
A real US mobile number that receives verification codes, by text or transcribed call.
- Status
- Healthy
- Uptime
- 100.0% over 21 days
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-06-18
- URL
TDQS
Scored across 4 tools
Each tool has a clearly distinct purpose: listing lines, listing messages, retrieving the latest code, and blocking until a new code arrives. There is no practical ambiguity between them, even though latest_code and wait_for_code both deal with codes, as one is immediate and one is waiting.
Two tools follow the verb_noun pattern (list_lines, list_messages), but latest_code uses adjective_noun and wait_for_code uses verb_preposition_noun. The naming is still readable and understandable, but the lack of a consistent verb_noun style makes it mixed.
With only 4 tools focused on a narrow domain (verification code retrieval via SMS lines), the count is well-scoped. Each tool serves a necessary function and there is no bloat or duplication.
The server covers the core workflow of listing available lines, checking recent codes, and waiting for new codes, plus a message history fallback. A minor gap is lacking a way to clear or mark codes as consumed, but for typical verification code flows these tools are sufficient.
Available Tools
4 toolslatest_codeLatest codeBInspect
The most recent verification code sent to a line, or nothing if none has arrived.
| Name | Required | Description | Default |
|---|---|---|---|
| from | No | Optional. Only consider messages whose sender contains this text, case-insensitively — a short code, say 32665. | |
| lineId | Yes | The line's id, from list_lines. | |
| service | No | Optional. Only consider messages Cleat attributed to this service (its id or name, e.g. facebook), or that carry this label from your workspace's contacts. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden, and it does state the primary behavior and the no-code result. However, it does not disclose whether reading the code consumes it, what permissions are needed, or how a verification code is identified among messages.
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, front-loaded sentence conveys the core operation and the important empty-result case without wasted words or redundant detail.
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 simple retrieval tool with a fully described schema and explicit return behavior, the description is mostly sufficient. The main missing context is sibling-aware usage guidance and a bit more behavioral transparency, but nothing critical is absent.
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 input schema already provides full descriptions for all three parameters, so the baseline is 3. The tool description adds no additional meaning about how lineId, from, or service affect the result beyond what the schema already states.
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 identifies the tool as returning the most recent verification code for a line, including the empty case. It is specific and understandable, though it does not explicitly contrast itself with sibling tools such as wait_for_code or list_messages.
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 explicit guidance is given about when to use this tool versus its siblings. The phrase 'or nothing if none has arrived' implies this is a non-blocking check, but it never tells the agent to prefer latest_code over wait_for_code or to use list_messages for raw message history.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_linesList linesBInspect
The phone numbers in this workspace that can receive texts, newest first.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the disclosure burden alone. It does add one genuine behavioral fact — results are ordered newest first — but says nothing about pagination, result limits, or whether historical/disabled numbers are included.
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 with the resource and ordering front-loaded and no filler. It is appropriately sized for a zero-parameter list tool.
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 output schema and no annotations, the description must carry the full contract, and it only partially does. It states what a line is and the ordering, but omits return-volume expectations and whether the list is exhaustive or paginated.
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 tool takes zero parameters and the schema is 100% covered, so there is nothing for the description to clarify. Baseline 4 applies since no parameter semantics are needed.
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 the resource specifically (phone numbers in this workspace that can receive texts) and resolves the ambiguous term 'lines' from the tool name. It clearly identifies the returned entity and excludes other sibling domains like messages or codes, though it is phrased as a noun fragment rather than an action.
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 alternatives, and no prerequisites or exclusions are stated. With siblings like list_messages and latest_code, a brief 'use this to discover which numbers can receive texts' would have removed ambiguity.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_messagesList messagesBInspect
Texts received by one line, newest first.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | How many to return. Defaults to 20. | |
| lineId | Yes | The line's id, from list_lines. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden, and it does disclose two useful traits: only received (inbound) texts are returned, and results are ordered newest first. It does not cover pagination or the read-only nature, so the coverage is partial rather than rich.
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 tight sentence with no filler, and the scoping constraint plus ordering are front-loaded. It is efficient, though its brevity is close to the point of under-specification rather than maximal helpfulness.
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 simple read-only list tool with fully documented parameters, the definition is adequate. However, with no annotations and no output schema, an agent gets no signal about the return shape or pagination behavior, leaving a modest gap.
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%, so both lineId and limit are already documented in the schema. The description reinforces that the query is scoped to one line but adds no format, range, or default details beyond what the schema states.
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?
"Texts received by one line, newest first" names the resource (messages/texts), the scoping dimension (a single line), and the sort order. It is clearly distinguishable from siblings like latest_code (a single code) and list_lines (the lines themselves), though it never names an alternative explicitly.
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 or when-not-to-use guidance is given. The phrase "by one line" implies the tool is scoped to a single line, but there is no statement of prerequisites or of how this differs from reaching for latest_code or wait_for_code.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
wait_for_codeWait for a codeAInspect
Waits for the next verification code to arrive at a line and returns it. Call this immediately BEFORE triggering the text, so nothing is missed. Returns timedOut: true if none arrives in time.
| Name | Required | Description | Default |
|---|---|---|---|
| from | No | Optional. Only consider messages whose sender contains this text, case-insensitively — a short code, say 32665. | |
| lineId | Yes | The line's id, from list_lines. | |
| service | No | Optional. Only consider messages Cleat attributed to this service (its id or name, e.g. facebook), or that carry this label from your workspace's contacts. | |
| timeoutSeconds | No | How long to wait, up to 55. Defaults to 30. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It discloses the blocking/waiting behavior, the timeout result, and the timing requirement. It doesn't mention potential side effects or rate limits, but for a read/wait operation this is reasonably transparent.
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 sentences, each earning its place: what it does, when to call it, and what the timeout result is. The most important usage guidance is front-loaded.
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 waiting tool with no output schema, the description covers the key behavioral aspects: blocking, timeout, and timing. It could mention what the return value looks like on success, but the core usage is clear. The sibling context (latest_code) suggests an alternative for non-waiting retrieval, which is adequately implied.
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%, so the schema already documents all four parameters. The description adds the crucial timing context ('immediately BEFORE triggering the text') and the timeout return behavior, but doesn't add much beyond the schema for individual parameters. Baseline 3 is appropriate.
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 ('waits'), a specific resource ('verification code'), and a clear outcome ('returns it'). It also distinguishes itself from siblings by emphasizing the waiting behavior and the timing instruction ('immediately BEFORE triggering the text').
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 explicitly tells the agent when to call this tool ('immediately BEFORE triggering the text') and what to expect ('Returns timedOut: true if none arrives in time'). It also implies the alternative (latest_code) by focusing on waiting for a future code rather than fetching the latest existing one.
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.
2 tool updates
- Changed
latest_code2 fields changed- added
Input schema / properties / fromAdded value: +{ + "description": "Optional. Only consider messages whose sender contains this text, case-insensitively — a short code, say 32665.", + "type": "string" +} - added
Input schema / properties / serviceAdded value: +{ + "description": "Optional. Only consider messages Cleat attributed to this service (its id or name, e.g. facebook), or that carry this label from your workspace's contacts.", + "type": "string" +}
- Changed
wait_for_code2 fields changed- added
Input schema / properties / fromAdded value: +{ + "description": "Optional. Only consider messages whose sender contains this text, case-insensitively — a short code, say 32665.", + "type": "string" +} - added
Input schema / properties / serviceAdded value: +{ + "description": "Optional. Only consider messages Cleat attributed to this service (its id or name, e.g. facebook), or that carry this label from your workspace's contacts.", + "type": "string" +}
4 tool updates
- First observed
latest_code - First observed
list_lines - First observed
list_messages - First observed
wait_for_code
Related MCP Connectors
Virtual phone numbers for AI agents — rent numbers in 200+ countries, receive SMS.
Virtual phone numbers for SMS/OTP verification. Browse free; pay with credits or USDC (x402).
Business phone and SMS for teams: calls, texts, transcripts, contacts and call flows.
Virtual phone numbers for SMS verification, OTP receipt, and number management.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceMCP server for provisioning dedicated real-SIM US phone numbers, receiving inbound SMS, and extracting OTP codes. Built for AI agents automating phone verification workflows.31 npm1MIT
- AlicenseAqualityDmaintenanceGives AI agents real phone numbers to receive SMS and extract verification codes through tool calls.631 npmMIT
- AlicenseAqualityCmaintenanceVirtual phone number platform for AI agents — rent numbers across 200+ countries, receive SMS, and manage the full activation lifecycle.650 npm4MIT
- AlicenseAqualityBmaintenanceEnables an assistant to read SMS texts and transcribed calls on a Cleat US mobile line, including waiting for the next verification code to arrive.4315 npmMIT
Glama MCP Gateway
Add one secure layer between your agents and this server.