Skip to main content
Glama

Query Monitored Posts

query_monitored_posts
Read-only

mode="search" (default): individual post rows. mode="stats": per-status counts.

Each row is one post a monitor surfaced, with the comment Sliq drafted for it (draft_comment) and the post's lifecycle status: 'discovered' (claimed, pre-draft), 'filtered' (the monitor's post filter set it aside, so no action ran on it), 'queued' (drafted + enqueued), 'commented' (comment sent), 'rejected' (user declined the draft), 'skipped' / 'skipped_no_credit' (no comment drafted), 'captured' (a capture ran on it — its engagers, or its author when a person — and it wasn't commented), 'surfaced' (no comment and no capture ran — a surface-only monitor, or a company page's or the user's own post on an author-only monitor — just surfaced in the feed to act on manually). author_captured is whether author capture ran on the post's author, a person; the monitor's list holds them unless the user removed them. filter_reason is the post filter's one-sentence reason for keeping or setting aside the post ('' when the monitor has no filter). Read it beside the filtered and kept posts when the user wants to tune their monitor's post filter. data holds the author's headline and public_identifier. Link a post's author with the derived author_profile_url on each search row — a person's profile, or the company page when a company posted. It is computed after the query runs, so it can't appear in where_clause or order_by. reaction_status is the independent reaction track: '' (no reaction), 'queued' (a reaction enqueued), 'reacted' (sent), 'rejected' (user declined it), 'skipped' (deduped) — disjoint from status since one post can be both commented and reacted to. reaction_type is which reaction landed (like/celebrate/support/love/insightful/funny, '' until sent).

Columns: id, monitor_id, post_urn, post_url, author_name, author_provider_id, data, post_text, reaction_count, comment_count, posted_at, status, filter_reason, draft_comment, reaction_status, reaction_type, author_captured, created_at. Pass a row's id to generate_monitored_post_comment to draft + queue a Sliq comment for it.

Pass agent_id to scope to that agent's monitors — omitting it reads every monitored post across all the user's agents. To act on recent posts (e.g. queue a reaction on this agent's fresh finds), pass agent_id and filter on posted_at; this keeps actions on the agent's own scoped feed rather than the account-wide analytics.

This is the monitor-scoped feed. query_linkedin_posts is a different table — the account-global analytics of the user's own posts plus any post they've fetched engagers for, with no agent/monitor dimension. Use that for "how did my posts perform"; use this for "what did this agent's monitors find". In search mode, {count, truncated, items array}. In stats mode, {total, by_status: {discovered: N, commented: M, ...}}.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
modeNo"search" to list rows, "stats" for per-status counts.search
limitNoMax results (default 50, capped at 100). Search mode only.
offsetNoRows to skip for paging (default 0, search mode only). When the result is truncated, re-call with offset += limit for the next page.
agent_idNoScope to one agent's monitors. Omit for cross-agent queries.
order_byNoSQL ORDER BY (default: created_at DESC). Search mode only.created_at DESC
on_behalf_ofNoAn agency client's email, from list_agency_clients, to run this call in that client's account: their agents, settings, connected accounts, and credits. Omit it to act on your own account.
where_clauseNoSQL WHERE condition (default: all). Examples: "status = 'commented'", "posted_at >= NOW() - INTERVAL '24 hours'", "author_name ILIKE '%founder%'"1=1

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changed
    • addedInput schema / properties / mode / title
      Added value: +"QueryMode"
  2. Changed1 schema field changed
    • addedInput schema / properties / on_behalf_of
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "string"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null,
      +  "description": "An agency client's email, from list_agency_clients, to run this call in that client's account: their agents, settings, connected accounts, and credits. Omit it to act on your own account."
      +}
  3. Changed2 schema fields changed
    • addedInput schema / properties / agent_id
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "integer"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null,
      +  "description": "Scope to one agent's monitors. Omit for cross-agent queries."
      +}
    • removedInput schema / properties / task_id
      Removed value: -{
      -  "anyOf": [
      -    {
      -      "type": "integer"
      -    },
      -    {
      -      "type": "null"
      -    }
      -  ],
      -  "default": null,
      -  "description": "Scope to one task's monitors. Omit for cross-task queries."
      -}
  4. First observed

TDQS

A4.4/5.0
Behavior3/5

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

Annotations declare readOnlyHint=true and the description never contradicts that, so the safety profile is covered. The description adds substantial non-annotation context: the full status lifecycle values, the independent reaction_status track, and that author_profile_url is computed post-query so it cannot appear in where_clause/order_by. That last point and the status semantics are genuinely useful behavioral disclosure beyond the schema.

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?

It is long, but the routing distinction and mode behavior are front-loaded and the status/reaction enumerations are load-bearing given there is no output schema. The explicit column list is somewhat redundant against the described row semantics, which keeps it short of a 5.

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?

Output schema is absent, but the description supplies a <returns> block describing the search-mode {count, truncated, items} and stats-mode {total, by_status} shapes, plus per-field semantics for row columns. Nothing an agent needs to call or interpret results is missing.

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 description coverage is 100%, so the baseline is 3. The description goes beyond it by clarifying the consequence of omitting agent_id ('reads every monitored post across all the user's agents') and by flagging that the derived author_profile_url cannot be used in where_clause or order_by — a constraint not obvious from the schema alone.

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 opens with a specific verb+resource ('query the posts an agent's LinkedIn monitors discovered') and immediately scopes it as the monitor-scoped feed rather than account-global analytics. It explicitly names the sibling it is not (query_linkedin_posts) and states why, so an agent can disambiguate without opening either schema.

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

Usage Guidelines5/5

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

It gives an explicit routing rule: 'Use that for "how did my posts perform"; use this for "what did this agent's monitors find"'. It also explains when to pass agent_id vs omit it, and when to use search vs stats mode. Both the when and the when-not are stated.

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