Skip to main content
Glama

instagram

Read-only

Reads INSTAGRAM messaging via Unipile: 1-to-1 AND group conversations. Sending is instagram_act.

op:

  • "list" (default): the conversations, newest first, in items (limit 1-100). A cursor is returned only when Unipile paginates the channel (WhatsApp does not: a full page carries truncated). Group threads are listed alongside the 1-to-1 ones (is_group, named by the group's name) and read the same way. Each 1-to-1 thread is enriched with the counterpart's name (attendee_name); with_names=False turns this enrichment off (one API call fewer).

  • "read": the messages of a thread, 1-to-1 or group (chat_id from op="list"). A message Unipile passed on without text nor attachment carries content_unavailable. Each attachment carries a source: pass it to oto_import (target="project_file") to file it, or to any tool taking a source — the server fetches the file, never through the conversation.

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": "instagram"
  }
}

Input Schema

NameRequiredDescriptionDefault
opNolist
_orgNoOrg (id) de CET APPEL. `oto_list_orgs()`.
limitNo
_groupNoÉquipe (id) de CET APPEL, sous son org parente.
cursorNo
_run_idNoOBLIGATOIRE à chaque appel dès `run_start` ou `data_claim_next` : sans lui, l'écriture sur une ligne réservée est refusée. Hérité seulement si le serveur tient un run actif — n'y compte pas.
chat_idNo
_accountNoCompte à OPÉRER quand plusieurs existent. `oto_identity(op='list')`.
_projectNoProjet (id) de CET APPEL — jeton PRIMAIRE. `oto_project(op='list')`.
_instanceNoInstance de connecteur PRÉCISE (un credential exact). `oto_instance(op='list')`.
with_namesNo

Schema Changelog

Changes observed during successful MCP inspections.

No schema history has been recorded yet.

TDQS

A4.7/5.0
Behavior5/5

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

Annotations only declare readOnlyHint=true, so the description carries the rest and does: it discloses pagination divergence (a `cursor` only when Unipile paginates, otherwise `truncated` on a full page), a cost tradeoff ("with_names=False ... one API call fewer"), and data-integrity quirks (`content_unavailable`, attachment `source` fetched server-side). This is real behavior an agent cannot infer from the annotation.

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 one-line purpose, then a bulleted per-`op` breakdown that keeps each mode's caveats adjacent to its name. Dense with backticked identifiers and long sentences, but nearly every clause conveys a usable fact; only the WhatsApp parenthetical is marginal.

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

Completeness4/5

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

With no output schema, the description does the work of describing return shape (`items`, `cursor`, `truncated`, `attendee_name`, `is_group`, `content_unavailable`, `source`) — enough to call and parse correctly. Missing only prerequisites such as which Unipile account must be connected for Instagram DMs.

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 55%, and the description compensates for the most decision-relevant params: it gives the `limit` range (1-100, absent from the schema), explains `cursor` semantics, ties `chat_id` to op="list", and states exactly what `with_names` toggles. The `_org`/`_project`/`_run_id`/`_account`/`_instance` params are left to their schema descriptions, which are present.

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?

Opens with a specific verb and resource ("Reads INSTAGRAM messaging via Unipile") and immediately bounds scope to "1-to-1 AND group conversations," then names the sibling `instagram_act` as the write path. An agent can distinguish this from whatsapp, telegram, and linkedin_unipile readers without opening any 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?

Explicitly routes sending to `instagram_act` and splits the two modes: "list" (default) for conversations and "read" for a thread's messages, with the dependency that `chat_id` comes "from op=\"list\"". It also names a downstream consumer for attachments (`oto_import` with target="project_file"), so the follow-on workflow 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