Skip to main content
Glama
moxzas
by moxzas

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
PRODUCTBRAIN_API_KEYYesYour `pb_` API key from the app's API Key modal. Required.
PRODUCTBRAIN_API_URLNoThe ProductBrain API base URL.https://productbrain.com/api/v1
PRODUCTBRAIN_PROJECT_IDNoOptional default project ID. Tools also accept a `projectId` argument.

Instructions

Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.

This server publishes no instructions, or was last inspected before Glama recorded them.

Capabilities

Features and capabilities supported by this server

Protocol revision2025-11-25

CapabilityDetails
tools
{
  "listChanged": true
}

Tools

Functions exposed to the LLM to take actions

NameDescription
searchA

Semantic search over the ProductBrain plan. Returns nodes ranked by similarity with ancestor paths. Use this FIRST for any lookup — never scan all nodes by label.

list_nodesC

List nodes in a project (bulk read). Optional type (goal|need|approach|job|task) and iteration filters.

get_treeB

Get a node in context. relation = context (ancestors+siblings+children, default) | ancestors | subtree | siblings. The endpoint's own names (up | down | lateral | context) are accepted too. There is no children-only view: subtree/children both return the full subtree.

get_changelogA

Read the plan's history: every add/update/delete/restore, newest first, each attributed to the app or to a named agent. This is how you find a node AFTER it was deleted — /nodes can no longer see it, but restore needs its id. Filter by nodeId, action (add|update|delete|restore), source (app|api_key), agentId, since/before (ISO). Page with before=<_meta.next_before>, never an offset. Then undo with mutate {action:'restore', nodeId}, restoring a parent before its children.

mutateA

Create/update/delete plan nodes and phases. action = add|update|delete|batch|addIteration|updateIteration|deleteIteration|classify. Put the rest of the v1 mutate body in payload (node | nodeId+data | mutations | iteration). Pass idempotencyKey (a UUID) to make a retry safe — a replay returns the original result instead of double-creating.

list_iterationsC

List phases/iterations. current:true returns the active phase; status:active filters to active.

run_workflowB

Run the Story-Mapping methodology workflow (flow = add | task-curate | phase-assign). Returns the next prompt + opaque state, or a terminal changeset with a focus hint. Put the v1 workflow body in body.

set_viewC

Drive the live canvas. command = { type: setViewMode|selectIteration|zoomToNode|expandNode|collapseNode|focusGoals, ... }.

read_viewB

Read what the user is looking at now: view_mode, selected_iteration, expanded_nodes, focused_goals, selected_node.

list_webhooksA

List the outbound webhooks registered on a project (secrets are never returned). Shows lastStatus/lastDeliveryAt so you can spot a failing receiver.

create_webhookA

Register an outbound webhook. events defaults to all (node.added|updated|deleted, iteration.added|updated|deleted). Returns the signing secret ONCE — store it immediately.

update_webhookA

Reconfigure a webhook in place (same id). Change url and/or events without minting a new secret, or pass rotateSecret:true to mint a new one (returned once). Prefer this over delete+recreate, which breaks the receiver.

delete_webhookA

Remove a webhook registration. Irreversible — the secret is gone; re-registering mints a new one.

create_share_linkA

Mint a PUBLIC read-only link to the project view. Pass expiresInDays for a TTL (otherwise it never expires) and settings (e.g. { includedGoalIds: [...] }) to scope it. Treat the returned token as a secret.

list_share_linksB

List every share token minted for a project, with createdAt/expiresAt/revokedAt and an active flag. The audit half of the share loop.

revoke_share_linkA

Revoke a share token. The public link stops serving within ~30s (edge cache); the record dies immediately.

list_membersA

List the members (human and agent seats) on a project, plus the owner. Any member can read this.

add_agent_seatA

Mint an agent seat on a project (owner only, Team tier). Returns a pb_ API key ONCE — store it now, there is no retrieval.

invite_contributorA

Invite a guest contributor by email to one or more projects you own (owner only, Team tier). Sends a passwordless Clerk invite; one seat regardless of project count.

revoke_memberC

Remove a member (human or agent) from a project. Removing an agent seat revokes its API key once its last membership is gone.

list_projectsA

List the projects you own or are a member of. Archived ones are hidden unless includeArchived is true.

create_projectA

Create a project you own and seed its system "Later" phase, so nodes can be added immediately. id defaults to a slug of the name.

rename_projectA

Change a project's display name (owner only). The id is immutable — keep using the same projectId afterwards.

archive_projectA

Archive (archived:true) or unarchive (false) a project you own. Archiving hides it from list_projects without deleting anything — reversible, unlike delete.

export_okfA

Serialize the whole plan to a portable OKF file bundle (markdown with frontmatter, one file per node). Use when you want the plan as files — for a repo, a diff, or handing it to a tool that reads markdown — rather than as JSON.

tier_statusA

Read your own tier, API access, AI-credit balance, seat/project/node limits and billing period. Check this BEFORE a large run so you self-throttle instead of discovering a 402 mid-flight.

submit_feedbackA

Tell the ProductBrain team how PB should improve: a feature you needed, friction you hit, a bug, or a general note. Stored for the team to read, not added to any plan. Make the summary self-explanatory (there is no reply channel). Keep credentials, customer records and confidential plan content out. Max 20 per 24h, so batch related points.

Prompts

Interactive templates invoked by user choice

NameDescription

No prompts

Resources

Contextual data attached and managed by the client

NameDescription

No resources

TDQS

A3.5/5.0

Scored across 27 tools

Disambiguation4/5

Most tools target distinct resource+action pairs, and descriptions actively disambiguate overlapping reads (search 'use FIRST', list_nodes bulk read, get_tree context, get_changelog for deleted nodes). However, the all-purpose `mutate` tool overlaps conceptually with targeted writers like `rename_project`/`archive_project`/`create_project`, and the read trio (search/list_nodes/get_tree) requires careful reading to pick correctly.

Naming Consistency4/5

Predominantly a consistent snake_case verb_noun pattern (list_projects, create_webhook, revoke_member, get_tree, set_view). Minor deviations are bare-verb names `search` and `mutate` and the noun-style `tier_status`, but the convention is largely predictable.

Tool Count3/5

27 tools is heavy territory for a single server, spanning projects, nodes, webhooks, share links, members, workflow, canvas view and account. Each cluster is individually justified, but the aggregate is borderline over-scoped and could be split by domain.

Completeness4/5

Strong lifecycle coverage: webhooks, share links, members, projects, nodes (add/update/delete/batch/classify via mutate), iterations, changelog/restore, plus view and workflow. Minor gaps remain — no explicit project delete tool (archive is the stand-in) and no dedicated project-update beyond rename, but agents can work around these.

Maintenance

ActivityMaintained
ResponsivenessNo issues