# Growth Engineer Space MCP

This is the canonical connection and usage guide for AI agents.

## Connect

- MCP server: `https://growthengineer.space/mcp`
- Transport: Streamable HTTP
- Authentication: OAuth 2.1 Authorization Code + PKCE (S256)
- OAuth discovery: `https://growthengineer.space/.well-known/oauth-protected-resource`
- Human setup page: [https://growthengineer.space/agent](https://growthengineer.space/agent)
- Architecture: [https://growthengineer.space/mcp-architecture.html](https://growthengineer.space/mcp-architecture.html)

Connect to the MCP URL using the client's normal “Add remote MCP server” flow. The client discovers OAuth automatically, opens the authorization URL, and completes the callback itself. Never ask the user to paste an access token.

### Cross-device authorization and OpenClaw

The authorization URL may be opened on any computer where the user can sign in to Growth Engineer Space. For OpenClaw, the website returns a one-time authorization code on a hosted completion page instead of requiring that browser to reach OpenClaw's loopback callback. Ask the user to paste that authorization code back, then continue the same PKCE flow with `openclaw mcp login <server-name> --code <code>`.

The authorization code expires after 10 minutes, can be exchanged only once, and is bound to the initiating client through PKCE. It is not an access token. Other MCP clients continue to use their normal registered callback automatically.

## Permissions

| Scope | Capability |
| --- | --- |
| `groups:read` | Read visible groups, maintained member profiles, resources, and cases |
| `groups:write` | Create/update/delete owned groups, resources, and cases; join, invite, maintain profiles, and remove permitted members |
| `admin:read` | Read all groups and pending review tasks, only when the approving account is a current backend admin |
| `admin:write` | Delete any group, only when the approving account is a current backend admin |

Admin scopes never elevate a normal account. Both the OAuth scope and the account's current backend-admin status are checked.

## Tools

Do not send a `limit` argument to list or search tools. The server automatically returns at most 20 results, including when an older client still sends a larger legacy value.

### Identity

- `identity_get`

### Groups

- `groups_list`, `groups_get`, `groups_create`, `groups_update`, `groups_delete`

Creating a group requires the creator's complete group-scoped member profile.

### Members

- `group_members_list`, `group_members_search`, `group_members_get`
- `group_members_update`, `group_members_remove`

`group_members_search` searches all groups visible to the connected account. It covers nickname, email, WeChat ID, current work/company/role, bio, offered resources, and wanted resources.

For “我想找西语外链，我可以找谁？”, call `group_members_search` with concrete terms such as `西语 外链`, then explain which submitted profile fields matched.

Member profiles are stored on each group membership and can be maintained continuously. The same person may use different profiles in different groups.

### Invitations and joining

- `group_invites_list`, `group_invites_create`, `group_invites_revoke`
- `group_join_preview`, `group_join`
- `group_applications_list`, `group_applications_review`, `group_applications_reply`

Invitations are permanent by default. Supply `expiresInDays` only when the invitation should expire automatically.
Invitation URLs use globally unique 12-character URL-safe codes. Always use the complete URL returned by the tool.

An invitation never silently creates an active member. The joining account must submit:

- `nickname` — required
- `wechatId` — required
- `workCompanyRole` — required
- `bio` — required
- `resourcesOffered` — required
- `resourcesWanted` — optional

`group_join` creates a `pending` application. Until a founder or group admin approves it, that account cannot list, get, or search other group members through either the website or MCP. Reviewing an application is a consequential moderation action: ask the user for explicit confirmation, then pass `confirm: true`.

### Resources and cases

- `resources_list`, `resources_get`, `resources_mine`
- `resources_create`, `resources_update`, `resources_delete`
- `cases_list`, `cases_get`, `cases_mine`
- `cases_create`, `cases_update`, `cases_delete`

List tools search approved public metadata. Get tools return an `access` result; point-gated content remains absent unless the connected account already has access under the website's rules.

`resources_mine` and `cases_mine` return all content owned by the connected account, including drafts, rejected submissions, approved content, pending edits, and the complete editable fields. Use them before an update when the user has not supplied an ID.

Create operations produce reviewable drafts owned by the connected account. Case create/update accepts the complete body as `contentMarkdown`; the server converts it to the site's BlockNote JSON and sanitized HTML automatically.

Both resource and case create/update accept up to three public HTTPS URLs in `imageUrls`. The server validates size and type, blocks local/private-network targets, and imports the images into managed storage. On update, omit `imageUrls` to preserve current images, pass new URLs to replace them, or pass `[]` to remove them.

Only the owner can update or delete through these non-Admin tools. Updating approved content creates a pending edit and leaves the live version unchanged until review.

### Backend admin

- `admin_groups_list`, `admin_groups_get`, `admin_groups_delete`, `admin_review_tasks_list`

These require both an Admin OAuth scope and a currently configured backend-admin account.

`admin_review_tasks_list` accepts a bounded `within` look-back window such as `30m`, `1h`, `24h`, or `7d`. It returns pending job submissions, resource and case submissions or edits, and group membership applications in newest-first order.

## Group role rules

- A new member defaults to `member`.
- A submitted application remains `pending` until approved.
- A founder or backend admin may set a non-founder to `admin` or `member`.
- A group admin cannot grant admin permission.
- A group admin may remove members or other group admins, including accounts that also have backend-admin access, but not the founder.
- A founder cannot be removed.

## Safety

All delete/remove/revoke tools are marked destructive and require `confirm: true`. Deleting a group also requires `confirmation` to exactly match the current group name. Set these fields only after the user explicitly confirms the exact operation. OAuth access tokens expire after 15 minutes; refresh tokens rotate after every use.

## For non-Agent developers

The REST API remains available as an implementation interface and is described by the automatically generated OpenAPI 3.1 document at [https://growthengineer.space/openapi.json](https://growthengineer.space/openapi.json). Agents should use MCP tool discovery instead of calling REST endpoints directly.
