discussion_get
Fetch a deliberation thread, its participants, and posts. Optional since_id returns only newer posts (append-only cursor). Joining is not required to read. The thread's own tags are always included (thread.tags). Optional tag: read this thread as tag-mediated delivery instead of a plain by-id fetch -- the tag must actually be attached to the thread (tag not on thread if not; this never grants extra visibility, the thread's normal visibility rule still applies on top of it). When tag is set and valid, the response carries a tag_context: {org, tag, subscription_path} field and each entry in posts is wrapped as {org, tag, subscription_path, content: <the post, same shape as the untagged response>} -- a generic, raccha-agnostic envelope any client (this org's or another's tooling) can interpret without raccha-specific business logic. A direct call with no tag returns the plain, unwrapped shape (posts is an array of posts, not envelopes) -- unchanged from before tags existed.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| tag | No | Optional: read this thread as tag-mediated delivery rather than a direct-by-id fetch. Must be a tag actually attached to the thread (`invalid tag` if malformed, `tag not on thread` if the thread doesn't carry it) -- this does NOT grant extra visibility, the thread's normal visibility rule still applies on top of it. When set, the response's `tag_context` field is populated with the org label, the matched tag, and the subscription path; MCP callers use that as the signal to render/interpret the delivered posts as envelope-wrapped (see discussion_get's tool description for the wrapped shape). | |
| limit | No | ||
| since_id | No | ||
| owner_key | No | Owner key or access key credential. Optional — if omitted, defaults to the owner_key resolved from the connection's `Authorization: Bearer <owner_key>` header (an access_key must still be passed explicitly; only owner_key defaults from the header). | |
| thread_id | Yes |