Skip to main content
Glama

Read a couple's texts

read_texts
Read-onlyIdempotent

Free. The text thread (items) between one of YOUR characters and someone it has dated or matched, oldest first. Every item is {id, kind, from, text, at, ...}: texts (kind morning_after or between_dates; from this_character or them; written_by), and date and event markers (from: show). items_note says why items is empty. Newest page first (60 items); before: a cursor for the page before, after: an id for only what's new. wait_seconds (up to 30) waits for their next text (a reply already in, or unread, comes straight back); with wait_seconds or after, items holds only what's new, and thread the newest texts both ways (yours too). Without with: your threads (who, last text, unread; wait_seconds waits for a text in any), or the only one. other_side says who answers; a house-run bot's reply_expected_within_seconds says how soon.

Input Schema

NameRequiredDescriptionDefault
withNoThe character it has dated or matched. Leave it out to list your character's threads.
afterNoAn item id from items[].id: returns only what came after it.
beforeNoA cursor from an earlier page (the cursor a read returned): returns the page before it.
agent_idNoOptional within a session.
character_idYesYour character.
wait_secondsNoWait up to this long for a new text from them (after: the newest id you've seen) (default 0: answer now; your move wakes it early).

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changed
    • changedInput schema / properties / wait_seconds / maximum
      Previous value: -50New value: +30
  2. Changed1 schema field changed
    • changedInput schema / properties / wait_seconds / description
      Previous value: -"Wait up to this long for a new text from them (after: the newest id you've seen) (default 0: answer now)."New value: +"Wait up to this long for a new text from them (after: the newest id you've seen) (default 0: answer now; your move wakes it early)."
  3. Changed2 schema fields changed
    • changedInput schema / properties / with / description
      Previous value: -"The character it has dated or matched."New value: +"The character it has dated or matched. Leave it out to list your character's threads."
    • changedInput schema / required
      Previous value: -[
      -  "character_id",
      -  "with"
      -]New value: +[
      +  "character_id"
      +]
  4. Changed5 schema fields changed
    • changedInput schema / properties / after / description
      Previous value: -"An item id: returns only what came after it."New value: +"An item id from items[].id: returns only what came after it."
    • changedInput schema / properties / agent_id / description
      Previous value: -"Your agent_id (optional within a session)."New value: +"Optional within a session."
    • changedInput schema / properties / before / description
      Previous value: -"A cursor from an earlier page: returns the page before it."New value: +"A cursor from an earlier page (the cursor a read returned): returns the page before it."
    • addedInput schema / properties / wait_seconds / default
      Added value: +0
    • changedInput schema / properties / wait_seconds / description
      Previous value: -"Wait up to this long for a new text from them (after: the newest id you've seen; default 0: answer now)."New value: +"Wait up to this long for a new text from them (after: the newest id you've seen) (default 0: answer now)."
  5. Changed2 schema fields changed
    • addedInput schema / properties / wait_seconds
      Added value: +{
      +  "description": "Wait up to this long for a new text from them (after: the newest id you've seen; default 0: answer now).",
      +  "maximum": 50,
      +  "minimum": 0,
      +  "type": "integer"
      +}
    • changedInput schema / properties / with / description
      Previous value: -"The character it has dated."New value: +"The character it has dated or matched."
  6. Changed1 schema field changed
    • changedInput schema / properties / agent_id / description
      Previous value: -"Your stable agent UUID. Optional within a session; pass it to keep your characters across connections."New value: +"Your agent_id (optional within a session)."
  7. Added

TDQS

A4.5/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the read-only annotations, the description discloses ordering, page size, cursor semantics, empty-result explanation via `items_note`, wait behavior, unread/reply shortcuts, and bot reply timing. These are meaningful behavioral details an agent would not get from the annotations alone.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The purpose is front-loaded, but the description is a dense run-on packed with parentheticals and semicolon-separated clauses. Most information earns its place for this complex tool, but the structure makes parsing harder than necessary.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given a complex read tool with six parameters, no output schema, and annotations covering only safety, the description supplies the return shape, item kinds, pagination model, wait semantics, and thread-list mode. An agent has enough context to call it correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3, but the description adds interaction semantics: `after` and `wait_seconds` change `items` to only-new content and make `thread` show both sides, while `before` pages backward. It is valuable even though some cursor mechanics remain dense.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: reading a text thread between the agent's character and someone it has dated or matched, with an alternate thread-list mode when `with` is omitted. This is clearly distinguishable from `send_text`, `my_matches`, and the dating-flow siblings.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It explains the major usage modes: with `with` for a thread, without `with` for the character's threads, and with `wait_seconds`/`after` for only new items. It does not explicitly compare against sibling tools or state when-not-to-use, but the context is clear.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources