Skip to main content
Glama

List reader activities

list_reader_activities
Read-onlyIdempotent

Read stored Substack likes, comments, restacks, and other notifications for the authenticated Narrareach account. This tool does not fetch new activity from Substack. Each item has type (LIKE, COMMENT, RESTACK, or OTHER), kind (the Substack notification type), and label (a short description). OTHER covers notifications that are not note likes, note replies, or restacks: follows, free and paid subscriptions, likes and replies on posts and comments, mentions, chat activity, live streams, and system notices such as a scheduled note being sent. Many OTHER items have no content; read kind and label to see what they are. Only COMMENT items with canReply true can be replied to. The inbox contains new activity; history contains the initial import and items already handled or replied to. Either can contain recent activity. sort=time returns newest first. range.page and range.all show the date ranges for the returned page and the requested state. Check sync.lastSyncedAt and sync.refreshRecommended for freshness; results may not include the latest activity. platform=substack (the default) lists Substack only. platform=all adds reader comments on posts Narrareach published in the last 30 days to LinkedIn, Threads, Facebook, Bluesky, Instagram and TikTok, newest first; platform=linkedin, threads, facebook, bluesky, instagram or tiktok lists one platform. Every item has a platform field. Social comments on LinkedIn, Threads, Bluesky, Instagram and TikTok have canReply true when their account is connected and can be replied to like Substack comments. Comments on posts published outside Narrareach have canReply false. Any item can be moved to History; sort=relevance works for Substack only.

Tool call template

This tool declares no required parameters. Add optional parameters from the input schema as needed.

{
  "id": 1,
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "arguments": {},
    "name": "list_reader_activities"
  }
}

Input Schema

NameRequiredDescriptionDefault
sortNotime
typeNoall
limitNo
stateNoinbox
cursorNo
intentNo
platformNosubstack
substackConnectionIdNo

Output Schema

NameRequiredDescriptionDefault
pageYes
syncYes
rangeYes
summaryYes
activitiesYes
connectedAccountNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed2 schema fields changed
    • changedInput schema / properties / platform / enum
      Previous value: -[
      -  "substack",
      -  "all",
      -  "linkedin",
      -  "threads",
      -  "facebook",
      -  "bluesky"
      -]New value: +[
      +  "substack",
      +  "all",
      +  "linkedin",
      +  "threads",
      +  "facebook",
      +  "bluesky",
      +  "instagram",
      +  "tiktok"
      +]
    • changedOutput schema / properties / activities / items / properties / platform / enum
      Previous value: -[
      -  "substack",
      -  "linkedin",
      -  "threads",
      -  "facebook",
      -  "bluesky"
      -]New value: +[
      +  "substack",
      +  "linkedin",
      +  "threads",
      +  "facebook",
      +  "bluesky",
      +  "instagram",
      +  "tiktok"
      +]
  2. Changed5 schema fields changed
    • addedInput schema / properties / platform
      Added value: +{
      +  "default": "substack",
      +  "enum": [
      +    "substack",
      +    "all",
      +    "linkedin",
      +    "threads",
      +    "facebook",
      +    "bluesky"
      +  ],
      +  "type": "string"
      +}
    • addedOutput schema / properties / activities / items / properties / platform
      Added value: +{
      +  "enum": [
      +    "substack",
      +    "linkedin",
      +    "threads",
      +    "facebook",
      +    "bluesky"
      +  ],
      +  "type": "string"
      +}
    • addedOutput schema / properties / activities / items / properties / postUrl
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "string"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ]
      +}
    • addedOutput schema / properties / activities / items / properties / url
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "string"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ]
      +}
    • changedOutput schema / properties / activities / items / required
      Previous value: -[
      -  "intent",
      -  "intentConfidence",
      -  "id",
      -  "type",
      -  "kind",
      -  "label",
      -  "triageState",
      -  "senderCount",
      -  "occurredAt",
      -  "content",
      -  "targetContent",
      -  "canReply",
      -  "actors"
      -]New value: +[
      +  "intent",
      +  "intentConfidence",
      +  "id",
      +  "platform",
      +  "type",
      +  "kind",
      +  "label",
      +  "triageState",
      +  "senderCount",
      +  "occurredAt",
      +  "content",
      +  "targetContent",
      +  "canReply",
      +  "actors"
      +]
  3. Changed3 schema fields changed
    • addedOutput schema / properties / activities / items / properties / kind
      Added value: +{
      +  "type": "string"
      +}
    • addedOutput schema / properties / activities / items / properties / label
      Added value: +{
      +  "type": "string"
      +}
    • changedOutput schema / properties / activities / items / required
      Previous value: -[
      -  "intent",
      -  "intentConfidence",
      -  "id",
      -  "type",
      -  "triageState",
      -  "senderCount",
      -  "occurredAt",
      -  "content",
      -  "targetContent",
      -  "canReply",
      -  "actors"
      -]New value: +[
      +  "intent",
      +  "intentConfidence",
      +  "id",
      +  "type",
      +  "kind",
      +  "label",
      +  "triageState",
      +  "senderCount",
      +  "occurredAt",
      +  "content",
      +  "targetContent",
      +  "canReply",
      +  "actors"
      +]
  4. Changed2 schema fields changed
    • addedOutput schema / properties / range
      Added value: +{
      +  "additionalProperties": false,
      +  "properties": {
      +    "all": {
      +      "additionalProperties": false,
      +      "properties": {
      +        "newestOccurredAt": {
      +          "anyOf": [
      +            {
      +              "format": "date-time",
      +              "type": "string"
      +            },
      +            {
      +              "type": "null"
      +            }
      +          ]
      +        },
      +        "oldestOccurredAt": {
      +          "anyOf": [
      +            {
      +              "format": "date-time",
      +              "type": "string"
      +            },
      +            {
      +              "type": "null"
      +            }
      +          ]
      +        }
      +      },
      +      "required": [
      +        "newestOccurredAt",
      +        "oldestOccurredAt"
      +      ],
      +      "type": "object"
      +    },
      +    "page": {
      +      "additionalProperties": false,
      +      "properties": {
      +        "newestOccurredAt": {
      +          "anyOf": [
      +            {
      +              "format": "date-time",
      +              "type": "string"
      +            },
      +            {
      +              "type": "null"
      +            }
      +          ]
      +        },
      +        "oldestOccurredAt": {
      +          "anyOf": [
      +            {
      +              "format": "date-time",
      +              "type": "string"
      +            },
      +            {
      +              "type": "null"
      +            }
      +          ]
      +        }
      +      },
      +      "required": [
      +        "newestOccurredAt",
      +        "oldestOccurredAt"
      +      ],
      +      "type": "object"
      +    },
      +    "state": {
      +      "enum": [
      +        "inbox",
      +        "history"
      +      ],
      +      "type": "string"
      +    }
      +  },
      +  "required": [
      +    "state",
      +    "page",
      +    "all"
      +  ],
      +  "type": "object"
      +}
    • changedOutput schema / required
      Previous value: -[
      -  "activities",
      -  "page",
      -  "summary",
      -  "sync"
      -]New value: +[
      +  "activities",
      +  "page",
      +  "summary",
      +  "range",
      +  "sync"
      +]
  5. Changed2 schema fields changed
    • addedOutput schema / properties / sync
      Added value: +{
      +  "additionalProperties": false,
      +  "properties": {
      +    "historyAvailableFrom": {
      +      "anyOf": [
      +        {
      +          "format": "date-time",
      +          "type": "string"
      +        },
      +        {
      +          "type": "null"
      +        }
      +      ]
      +    },
      +    "lastSyncedAt": {
      +      "anyOf": [
      +        {
      +          "format": "date-time",
      +          "type": "string"
      +        },
      +        {
      +          "type": "null"
      +        }
      +      ]
      +    },
      +    "refreshRecommended": {
      +      "type": "boolean"
      +    },
      +    "status": {
      +      "type": "string"
      +    }
      +  },
      +  "required": [
      +    "status",
      +    "lastSyncedAt",
      +    "historyAvailableFrom",
      +    "refreshRecommended"
      +  ],
      +  "type": "object"
      +}
    • changedOutput schema / required
      Previous value: -[
      -  "activities",
      -  "page",
      -  "summary"
      -]New value: +[
      +  "activities",
      +  "page",
      +  "summary",
      +  "sync"
      +]
  6. Changed4 schema fields changed
    • addedInput schema / properties / intent
      Added value: +{
      +  "enum": [
      +    "QUESTION",
      +    "OBJECTION",
      +    "AGREEMENT",
      +    "CORRECTION",
      +    "EXPERIENCE",
      +    "COLLABORATION",
      +    "LEAD",
      +    "SPAM"
      +  ],
      +  "type": "string"
      +}
    • addedOutput schema / properties / activities / items / properties / intent
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "string"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ]
      +}
    • addedOutput schema / properties / activities / items / properties / intentConfidence
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "number"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ]
      +}
    • changedOutput schema / properties / activities / items / required
      Previous value: -[
      -  "id",
      -  "type",
      -  "triageState",
      -  "senderCount",
      -  "occurredAt",
      -  "content",
      -  "targetContent",
      -  "canReply",
      -  "actors"
      -]New value: +[
      +  "intent",
      +  "intentConfidence",
      +  "id",
      +  "type",
      +  "triageState",
      +  "senderCount",
      +  "occurredAt",
      +  "content",
      +  "targetContent",
      +  "canReply",
      +  "actors"
      +]
  7. First observed

TDQS

A4.2/5.0
Behavior5/5

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

Adds substantial context beyond the readOnly/idempotent annotations: results may be stale (check sync.lastSyncedAt and sync.refreshRecommended), OTHER items often have no content, and canReply is false for comments on posts published outside Narrareach. These are non-obvious behavioral facts an agent cannot infer from structured fields.

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

Conciseness4/5

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

Front-loaded with the core action and staleness caveat; nearly every sentence carries real information. It is a dense wall of text and some output-field detail (range.page, range.all) is listed in-line rather than grouped, but little is wasted.

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

Completeness3/5

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

An output schema exists, so return-value narration is optional. However, with 8 optional parameters at 0% coverage, the missing pagination (cursor), limit ceiling (50), and the intent classification filter are real gaps for correct invocation.

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

Parameters3/5

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

Schema description coverage is 0%, so the description carries the burden. It explains sort, state, platform, and item type semantics well, but says nothing about limit, cursor (pagination), the 8-value intent filter, or substackConnectionId, leaving four parameters undocumented in both schema and prose.

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?

States a specific verb (read stored) and resource (Substack likes, comments, restacks, notifications) for the authenticated account. It also draws a boundary against refresh/fetch behavior ('does not fetch new activity from Substack'), which separates it from sibling tools like refresh_substack_benchmark or reply_to_reader_activity.

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?

Gives explicit selection conditions: inbox vs history, platform=substack vs all vs a single network, and sort=relevance only for Substack. It also implies routing to reply_to_reader_activity by stating only COMMENT items with canReply true can be replied to, though it never names that sibling explicitly.

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