Skip to main content
Glama
zackscriven

ghl-mcp-server-v2

by zackscriven

ghl_social_get_community_users

Read-onlyIdempotent

Lists the members of a connected Community channel who can publish posts, so you can select a contactId to post as. Use accountId per channel and paginate results.

Instructions

Get Community Members List the members you can publish a post as, for one connected Community channel.

accountId is the Community account ID from the Get Accounts API. Each Community account represents one channel and members are scoped to it: for a private channel only that channel's members are returned, for a public channel the group's members are. Always list members per account rather than reusing one list across accounts.

Pass a returned contactId as communityPostDetails.postAsUser[accountId].id when creating a post. Only members who can publish are returned — a member must be Active and hold a role in the group.

Results are paginated; meta.nextPage is null on the last page. Endpoint: GET /social-media-posting/{locationId}/community/accounts/{accountId}/users (Version header: v3; source: v3/social-planner-v3.json) Requires a Sub-Account (location) token. OAuth scopes: socialplanner/oauth.readonly Pagination params: limit — pass them to page through full result sets.

Input Schema

NameRequiredDescriptionDefault
limitNoNumber of members per page. Defaults to 10, max 100.
pageNoNoPage number for pagination. Defaults to 1.
accountIdYesCommunity account Id, from the Get Accounts API
locationIdYesLocation Id
searchTextNoFilter members by name. Communities matches on 2 or more characters; a less than 2 characters value returns no members.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Addedv2.1.0

TDQS

A4.8/5.0
Behavior5/5

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

Annotations already cover the read-only/idempotent safety profile, and the description adds substantial context beyond them: only Active members with a group role are returned, results are scoped per channel type (private vs public), pagination terminates when meta.nextPage is null, and it requires a Sub-Account token with the socialplanner/oauth.readonly scope.

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?

Content is front-loaded and organized into purpose, scoping, downstream usage, and pagination paragraphs. It runs a bit long and the trailing line 'Pagination params: limit — pass them to page through full result sets' is awkward and omits pageNo, which is a small structural blemish rather than a blocker.

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?

With no output schema, the description still explains the return shape sufficiently (contactId, role, Active status, meta.nextPage) and covers auth scope, token type, and endpoint. An agent has everything needed to call and use this tool 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 meaning the schema lacks: accountId must originate from the Get Accounts API and must not be reused across accounts, and it links the returned contactId to a specific nested field in the post-creation call. The pagination note is slightly incomplete, mentioning only limit while the schema also has pageNo.

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 and resource ('List the members you can publish a post as, for one connected Community channel') and scopes it to a single Community account. It also distinguishes itself from the general account-listing tools by clarifying the per-channel scoping requirement.

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?

Gives explicit usage constraints: always list per account rather than reusing a list across accounts, and it explains the downstream flow ('Pass a returned contactId as communityPostDetails.postAsUser[accountId].id when creating a post'). This tells the agent both when to use it and what to do with the result.

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

Deploy Server

Other Tools