{"name":"io.github.moxzas/productbrain","slug":"moxzas-productbrain","title":"ProductBrain","description":"Drive your ProductBrain product plan (goals, needs, bets, jobs) from any MCP client.","url":"https://mcp.market/server/moxzas-productbrain","rating":null,"grade":"B","score":83,"certified":false,"status":"active","category":"ecommerce","tags":["ecommerce","productivity"],"presence":{"score":30,"stars":0,"forks":0,"downloads_week":225,"last_push_at":"2026-10-04T00:32:17.000Z","license":"MIT"},"uptime":null,"claimed":false,"transport":"npm","callable_via_gateway":false,"default_price_micros":0,"repository":"https://github.com/moxzas/productbrain-mcp","website":"https://productbrain.com","version":"0.1.0","remotes":[],"packages":[{"registryType":"npm","registryBaseUrl":"https://registry.npmjs.org","identifier":"@productbrain-com/mcp","version":"0.1.0","runtimeHint":"npx","transport":{"type":"stdio"},"environmentVariables":[{"description":"Your pb_ API key (Settings → API Keys in the app; the free tier includes API access).","isRequired":true,"isSecret":true,"name":"PRODUCTBRAIN_API_KEY"},{"description":"Default project id. Optional; every tool also accepts projectId.","name":"PRODUCTBRAIN_PROJECT_ID"},{"description":"API base URL. Defaults to https://productbrain.com/api/v1.","default":"https://productbrain.com/api/v1","name":"PRODUCTBRAIN_API_URL"}]}],"tools":[{"name":"add_agent_seat","description":"Mint an agent seat on a project (owner only, Team tier). Returns a pb_ API key ONCE — store it now, there is no retrieval.","write_action":false,"price_micros":0,"input_schema":null},{"name":"archive_project","description":"Archive (archived:true) or unarchive (false) a project you own. Archiving hides it from list_projects without deleting anything — reversible, unlike delete.","write_action":false,"price_micros":0,"input_schema":null},{"name":"create_project","description":"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.","write_action":true,"price_micros":0,"input_schema":null},{"name":"create_share_link","description":"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.","write_action":true,"price_micros":0,"input_schema":null},{"name":"create_webhook","description":"Register an outbound webhook. events defaults to all (node.added|updated|deleted, iteration.added|updated|deleted). Returns the signing secret ONCE — store it immediately.","write_action":true,"price_micros":0,"input_schema":null},{"name":"delete_webhook","description":"Remove a webhook registration. Irreversible — the secret is gone; re-registering mints a new one.","write_action":true,"price_micros":0,"input_schema":null},{"name":"export_okf","description":"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.","write_action":false,"price_micros":0,"input_schema":null},{"name":"get_changelog","description":"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","write_action":false,"price_micros":0,"input_schema":null},{"name":"get_tree","description":"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.","write_action":false,"price_micros":0,"input_schema":null},{"name":"invite_contributor","description":"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.","write_action":false,"price_micros":0,"input_schema":null},{"name":"list_iterations","description":"List phases/iterations. current:true returns the active phase; status:active filters to active.","write_action":false,"price_micros":0,"input_schema":null},{"name":"list_members","description":"List the members (human and agent seats) on a project, plus the owner. Any member can read this.","write_action":false,"price_micros":0,"input_schema":null},{"name":"list_nodes","description":"List nodes in a project (bulk read). Optional type (goal|need|approach|job|task) and iteration filters.","write_action":false,"price_micros":0,"input_schema":null},{"name":"list_projects","description":"List the projects you own or are a member of. Archived ones are hidden unless includeArchived is true.","write_action":false,"price_micros":0,"input_schema":null},{"name":"list_share_links","description":"List every share token minted for a project, with createdAt/expiresAt/revokedAt and an `active` flag. The audit half of the share loop.","write_action":false,"price_micros":0,"input_schema":null},{"name":"list_webhooks","description":"List the outbound webhooks registered on a project (secrets are never returned). Shows lastStatus/lastDeliveryAt so you can spot a failing receiver.","write_action":false,"price_micros":0,"input_schema":null},{"name":"mutate","description":"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.","write_action":true,"price_micros":0,"input_schema":null},{"name":"read_view","description":"Read what the user is looking at now: view_mode, selected_iteration, expanded_nodes, focused_goals, selected_node.","write_action":false,"price_micros":0,"input_schema":null},{"name":"rename_project","description":"Change a project's display name (owner only). The id is immutable — keep using the same projectId afterwards.","write_action":false,"price_micros":0,"input_schema":null},{"name":"revoke_member","description":"Remove a member (human or agent) from a project. Removing an agent seat revokes its API key once its last membership is gone.","write_action":true,"price_micros":0,"input_schema":null},{"name":"revoke_share_link","description":"Revoke a share token. The public link stops serving within ~30s (edge cache); the record dies immediately.","write_action":false,"price_micros":0,"input_schema":null},{"name":"run_workflow","description":"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.","write_action":true,"price_micros":0,"input_schema":null},{"name":"search","description":"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.","write_action":false,"price_micros":0,"input_schema":null},{"name":"set_view","description":"Drive the live canvas. command = { type: setViewMode|selectIteration|zoomToNode|expandNode|collapseNode|focusGoals, ... }.","write_action":false,"price_micros":0,"input_schema":null},{"name":"submit_feedback","description":"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.","write_action":true,"price_micros":0,"input_schema":null},{"name":"tier_status","description":"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.","write_action":false,"price_micros":0,"input_schema":null},{"name":"update_webhook","description":"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.","write_action":true,"price_micros":0,"input_schema":null}],"scan":{"score":83,"grade":"B","scanned_at":"2026-10-09T18:58:34.199Z","report":{"scannerVersion":"0.1.10","scannedAt":"2026-10-09T18:58:34.209Z","components":{"code":{"score":25,"max":25,"notes":["3 source files scanned"]},"reliability":{"score":-1,"max":20,"notes":["no gateway calls yet and no remote to probe"]},"poisoning":{"score":-1,"max":15,"notes":["tools not inspected (local package is not executed); not counted"]},"auth":{"score":6,"max":15,"notes":["static API keys via environment variables"]},"maintenance":{"score":15,"max":15,"notes":["last push 6 days ago"]},"identity":{"score":8,"max":10,"notes":["registry namespace matches repository owner","GitHub account older than a year"]}},"findings":[],"inputs":{"packages":[{"registryType":"npm","identifier":"@productbrain-com/mcp","version":"0.1.0","found":true,"license":"MIT","hasInstallScripts":false,"dependencyCount":2,"publishedAt":"2026-10-04T02:01:01.813Z","repositoryUrl":"git+https://github.com/moxzas/productbrain-mcp.git","weeklyDownloads":225}],"repo":{"found":true,"owner":"moxzas","repo":"productbrain-mcp","archived":false,"pushedAt":"2026-10-04T00:32:17Z","stars":0,"forks":0,"openIssues":0,"ownerType":"User","ownerAvatarUrl":"https://avatars.githubusercontent.com/u/24914410?v=4","ownerCreatedAt":"2017-01-04T11:24:11Z","license":"MIT"},"icon":{"url":"https://productbrain.com/apple-touch-icon.png","source":"site","width":180,"height":180},"presence":{"stars":0,"forks":0,"downloadsWeek":225,"license":"MIT","lastPushAt":"2026-10-04T00:32:17.000Z","score":30}}}},"grade_history":[],"reviews":[]}