read:home

Reads the account's home timeline - the accounts it follows, newest first - which is what a person would see on opening X as that account. Only the account being acted as: another account's home is a 403 at X.

Fields

max how many to return, 1 to 100. This is what the call costs
cursor the next from the page before
since_id, until_id only posts newer, or older, than that id
since_time, until_time the same window in time, ISO 8601 UTC
include_replies, include_reposts send false to leave replies, or reposts, out of the page. Left out, everything comes back
profile whose home. Optional when the agent has one account
reason Required over MCP. One short sentence, in the agent's own words, for the person

Always send max

Leave it out and the estimate is written against a hundred posts, because that is X's default page here - $0.500 off a cap that starts at $1. This is one of the two reads where forgetting max is a real bill; search:user is the other.

What comes back

{ "status": "done",
  "ref": "6F0MXA3B",
  "page": { "next": "7140w5gefhslx3",
            "newest_id": "1832000000000000090",
            "oldest_id": "1832000000000000061" },
  "data": {
    "data": [
      { "id": "1832000000000000090",
        "text": "The thing nobody tells you about rate limits...",
        "created_at": "2026-09-15T18:22:31.000Z",
        "author_id": "1400000000000000077",
        "conversation_id": "1832000000000000090",
        "edit_history_post_ids": ["1832000000000000090"],
        "lang": "en",
        "public_metrics": {
          "repost_count": 30, "reply_count": 12, "like_count": 204,
          "quote_count": 6, "bookmark_count": 44, "impression_count": 18900
        } }
    ],
    "meta": { "result_count": 10,
              "newest_id": "1832000000000000090",
              "oldest_id": "1832000000000000061",
              "next_token": "7140w5gefhslx3" }
  } }

Every post carries an author_id and no author: Okaybot sends no expansions, because an expansion is another charged resource at X. Putting names to the ids is read:users at $0.010 each, worth doing for the handful you care about.

Sweep, do not page

Keep the newest_id from each answer and send it back as since_id next time. Paging backwards through a home timeline costs the same on every page and buys posts nobody asked for.