@probo/skills 0.2.2 → 0.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.claude-plugin/plugin.json +1 -1
- package/.codex-plugin/plugin.json +1 -1
- package/.mcp.json +6 -2
- package/COMPATIBILITY.md +84 -29
- package/README.md +41 -39
- package/mcp.json +13 -0
- package/package.json +7 -1
- package/plugin.json +22 -0
- package/skills/access-review/SKILL.md +24 -7
- package/skills/access-review/references/mcp-tools.md +22 -3
- package/skills/compliance-portal-commitments/SKILL.md +3 -3
- package/skills/missing-signatures/SKILL.md +8 -4
- package/skills/missing-signatures/references/mcp-tools.md +2 -2
- package/skills/open-source-compliance/SKILL.md +6 -3
- package/skills/open-source-compliance/references/workflows.md +17 -12
package/.mcp.json
CHANGED
package/COMPATIBILITY.md
CHANGED
|
@@ -22,31 +22,69 @@ SOFTWARE.
|
|
|
22
22
|
|
|
23
23
|
# Multi-agent compatibility
|
|
24
24
|
|
|
25
|
-
`@probo/skills`
|
|
26
|
-
|
|
27
|
-
MCP
|
|
25
|
+
`@probo/skills` is an [Agent Plugins 1.0.0](https://agent-plugins.org/)
|
|
26
|
+
package. The portable core is `plugin.json`, Agent Skills under `skills/`, and
|
|
27
|
+
Probo MCP servers in `mcp.json`. Client-specific manifests carry the same
|
|
28
|
+
components to **Claude Code**, **Codex**, **OpenCode**, and **Cursor** until
|
|
29
|
+
those clients load the portable package directly.
|
|
28
30
|
|
|
29
|
-
##
|
|
31
|
+
## Portable package (Agent Plugins 1.0.0)
|
|
32
|
+
|
|
33
|
+
```
|
|
34
|
+
plugin.json # $schema + plugin identity (spec §5)
|
|
35
|
+
skills/ # one directory per skill, each with SKILL.md (spec §7.1)
|
|
36
|
+
mcp.json # $schema + mcpServers (spec §7.2)
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
Both documents declare
|
|
40
|
+
`https://agent-plugins.org/schemas/1.0.0/{plugin,mcp}.schema.json`, and the
|
|
41
|
+
spec requires the two versions to match.
|
|
42
|
+
|
|
43
|
+
Commands, marketplace catalogs, and the client manifests are outside the v1
|
|
44
|
+
format — Agent Plugins v1 standardizes only skills and MCP servers. Clients
|
|
45
|
+
ignore the extra files.
|
|
30
46
|
|
|
31
|
-
|
|
32
|
-
| --- | --- | --- | --- | --- |
|
|
33
|
-
| Probo MCP (OAuth) | ✅ Plugin `.mcp.json` | ✅ `.codex-plugin` + `.mcp.json` | ✅ Manual MCP config | ✅ IDE MCP settings |
|
|
34
|
-
| Skills (`SKILL.md`) | ✅ `skills/` | ✅ `skills/` via `.codex-plugin` | ✅ `.opencode/skills/` or `.claude/skills/` | ✅ Copy/symlink to `.cursor/skills/` |
|
|
35
|
-
| Commands | ✅ `commands/` → `/probo:…` | ⚠️ Use skills instead | ⚠️ Native `skill` tool | ❌ Use skill or rules |
|
|
36
|
-
| Plugin manifest | `.claude-plugin/` | `.codex-plugin/` | Discovery paths (no manifest) | No native manifest |
|
|
37
|
-
| Marketplace catalog | `.claude-plugin/marketplace.json` (repo root or package) | `.agents/plugins/marketplace.json` (repo root or package) | — | — |
|
|
47
|
+
## Probo MCP servers
|
|
38
48
|
|
|
39
|
-
|
|
49
|
+
`mcp.json` ships both hosted instances as Streamable HTTP servers:
|
|
40
50
|
|
|
41
|
-
|
|
51
|
+
| Server | Endpoint |
|
|
52
|
+
| --- | --- |
|
|
53
|
+
| `probo-us` | `https://us.probo.com/api/mcp/v1` |
|
|
54
|
+
| `probo-eu` | `https://eu.probo.com/api/mcp/v1` |
|
|
55
|
+
|
|
56
|
+
Connect the server for your region. Skills that need to discover the region
|
|
57
|
+
call `listOrganizations` on each connected server and keep the one that returns
|
|
58
|
+
the target organization.
|
|
59
|
+
|
|
60
|
+
Authentication is **OAuth 2.0** only, discovered from
|
|
61
|
+
`/.well-known/oauth-protected-resource` on the instance root. Never configure a
|
|
62
|
+
static bearer token: Agent Plugins treats `headers` as visible package data,
|
|
63
|
+
and a pre-set `Authorization` header also stops Claude Code from starting the
|
|
64
|
+
OAuth flow.
|
|
65
|
+
|
|
66
|
+
### Self-hosted instances
|
|
67
|
+
|
|
68
|
+
Agent Plugins 1.0.0 performs no placeholder or environment-variable expansion
|
|
69
|
+
in remote MCP URLs (spec §7.2.1), so a self-hosted endpoint cannot ship in the
|
|
70
|
+
package. Add it in the agent:
|
|
42
71
|
|
|
43
72
|
```bash
|
|
44
|
-
|
|
73
|
+
claude mcp add --transport http probo https://probo.example.com/api/mcp/v1
|
|
74
|
+
codex mcp add --transport http probo https://probo.example.com/api/mcp/v1
|
|
45
75
|
```
|
|
46
76
|
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
77
|
+
The MCP path is always `<instance-root>/api/mcp/v1`.
|
|
78
|
+
|
|
79
|
+
## What works where
|
|
80
|
+
|
|
81
|
+
| Component | Agent Plugins client | Claude Code | Codex | OpenCode | Cursor |
|
|
82
|
+
| --- | --- | --- | --- | --- | --- |
|
|
83
|
+
| Probo MCP (OAuth) | ✅ `mcp.json` | ✅ `.mcp.json` | ✅ `.codex-plugin` + `.mcp.json` | ✅ Manual MCP config | ✅ IDE MCP settings |
|
|
84
|
+
| Skills (`SKILL.md`) | ✅ `skills/` | ✅ `skills/` | ✅ `skills/` via `.codex-plugin` | ✅ `.opencode/skills/` or `.claude/skills/` | ✅ Copy/symlink to `.cursor/skills/` |
|
|
85
|
+
| Commands | ❌ Outside v1 | ✅ `commands/` → `/probo:…` | ⚠️ Use skills instead | ⚠️ Native `skill` tool | ❌ Use skill or rules |
|
|
86
|
+
| Plugin manifest | `plugin.json` | `.claude-plugin/` | `.codex-plugin/` | Discovery paths (no manifest) | No native manifest |
|
|
87
|
+
| Marketplace catalog | — | `.claude-plugin/marketplace.json` (repo root or package) | `.agents/plugins/marketplace.json` (repo root or package) | — | — |
|
|
50
88
|
|
|
51
89
|
### Claude Code
|
|
52
90
|
|
|
@@ -58,7 +96,7 @@ claude plugin marketplace add getprobo/probo
|
|
|
58
96
|
# or, from a local clone:
|
|
59
97
|
claude plugin marketplace add .
|
|
60
98
|
claude plugin install probo@probo
|
|
61
|
-
claude mcp login probo # or /mcp in session
|
|
99
|
+
claude mcp login probo-us # or /mcp in session
|
|
62
100
|
/probo:access-review Q3 GitHub review
|
|
63
101
|
```
|
|
64
102
|
|
|
@@ -67,7 +105,7 @@ claude mcp login probo # or /mcp in session
|
|
|
67
105
|
```bash
|
|
68
106
|
claude plugin marketplace add ./packages/skills/.claude-plugin
|
|
69
107
|
claude plugin install probo@probo
|
|
70
|
-
claude mcp login probo
|
|
108
|
+
claude mcp login probo-us
|
|
71
109
|
```
|
|
72
110
|
|
|
73
111
|
Or install the plugin directory directly:
|
|
@@ -86,7 +124,7 @@ codex plugin marketplace add getprobo/probo
|
|
|
86
124
|
# or, from a local clone:
|
|
87
125
|
codex plugin marketplace add .
|
|
88
126
|
codex plugin install probo@probo
|
|
89
|
-
codex mcp login probo
|
|
127
|
+
codex mcp login probo-us
|
|
90
128
|
```
|
|
91
129
|
|
|
92
130
|
**From the package directory** (catalog at
|
|
@@ -95,14 +133,14 @@ codex mcp login probo
|
|
|
95
133
|
```bash
|
|
96
134
|
codex plugin marketplace add ./packages/skills
|
|
97
135
|
codex plugin install probo@probo
|
|
98
|
-
codex mcp login probo
|
|
136
|
+
codex mcp login probo-us
|
|
99
137
|
```
|
|
100
138
|
|
|
101
139
|
Or install the plugin directory directly:
|
|
102
140
|
|
|
103
141
|
```bash
|
|
104
142
|
codex plugin install ./packages/skills
|
|
105
|
-
codex mcp login probo
|
|
143
|
+
codex mcp login probo-us
|
|
106
144
|
```
|
|
107
145
|
|
|
108
146
|
Skills load from `./skills/` via `.codex-plugin/plugin.json`. The repo-root
|
|
@@ -126,12 +164,14 @@ ln -s ../../packages/skills/skills/open-source-compliance .opencode/skills/open-
|
|
|
126
164
|
[`opencode-claude-code-bridge`](https://www.npmjs.com/package/opencode-claude-code-bridge)
|
|
127
165
|
to import Claude plugins and MCP configs into OpenCode.
|
|
128
166
|
|
|
129
|
-
Configure Probo MCP in `opencode.json` or global OpenCode MCP
|
|
130
|
-
authenticate. Invoke via the native `skill` tool
|
|
167
|
+
Configure a Probo MCP server in `opencode.json` or global OpenCode MCP
|
|
168
|
+
settings, then authenticate. Invoke via the native `skill` tool
|
|
169
|
+
(`access-review`).
|
|
131
170
|
|
|
132
171
|
### Cursor
|
|
133
172
|
|
|
134
|
-
1. Add Probo MCP in Cursor settings (HTTP URL:
|
|
173
|
+
1. Add a Probo MCP server in Cursor settings (HTTP URL:
|
|
174
|
+
`https://us.probo.com/api/mcp/v1` or `https://eu.probo.com/api/mcp/v1`,
|
|
135
175
|
OAuth).
|
|
136
176
|
2. Copy or symlink skills into `.cursor/skills/`:
|
|
137
177
|
|
|
@@ -146,9 +186,11 @@ Reference the skill in chat or add a Cursor rule pointing at the skill.
|
|
|
146
186
|
|
|
147
187
|
| Path | Portable? |
|
|
148
188
|
| --- | --- |
|
|
189
|
+
| `plugin.json` | ✅ Agent Plugins manifest (spec §5) |
|
|
190
|
+
| `mcp.json` | ✅ Agent Plugins MCP configuration (spec §7.2) |
|
|
149
191
|
| `skills/<name>/SKILL.md` | ✅ Agent Skills standard |
|
|
150
192
|
| `skills/<name>/references/*.md` | ✅ Relative to skill directory |
|
|
151
|
-
| `.mcp.json`
|
|
193
|
+
| `.mcp.json` | Claude Code and Codex mirror of `mcp.json` (`type: http`) |
|
|
152
194
|
| `${CLAUDE_PLUGIN_ROOT}` | ❌ Claude Code only — avoid in skill bodies |
|
|
153
195
|
| `commands/*.md` | Claude Code slash commands only |
|
|
154
196
|
|
|
@@ -159,13 +201,15 @@ directory is discovered, regardless of which agent loads it.
|
|
|
159
201
|
|
|
160
202
|
```
|
|
161
203
|
@probo/skills/
|
|
204
|
+
plugin.json # Agent Plugins manifest
|
|
205
|
+
mcp.json # Agent Plugins MCP configuration
|
|
206
|
+
skills/ # Shared skills (all agents)
|
|
207
|
+
commands/ # Claude Code commands only
|
|
208
|
+
.mcp.json # Claude Code / Codex MCP wiring
|
|
162
209
|
.claude-plugin/plugin.json # Claude Code manifest
|
|
163
210
|
.claude-plugin/marketplace.json # Claude marketplace (npm)
|
|
164
211
|
.codex-plugin/plugin.json # Codex manifest
|
|
165
212
|
.agents/plugins/marketplace.json # Codex marketplace (package-local)
|
|
166
|
-
.mcp.json # Shared MCP wiring
|
|
167
|
-
skills/ # Shared skills (all agents)
|
|
168
|
-
commands/ # Claude Code commands only
|
|
169
213
|
```
|
|
170
214
|
|
|
171
215
|
Repo root (monorepo / `getprobo/probo` Git installs):
|
|
@@ -174,3 +218,14 @@ Repo root (monorepo / `getprobo/probo` Git installs):
|
|
|
174
218
|
.claude-plugin/marketplace.json # Claude marketplace → packages/skills
|
|
175
219
|
.agents/plugins/marketplace.json # Codex marketplace → packages/skills
|
|
176
220
|
```
|
|
221
|
+
|
|
222
|
+
## Validation
|
|
223
|
+
|
|
224
|
+
```bash
|
|
225
|
+
npm --workspace @probo/skills run validate
|
|
226
|
+
```
|
|
227
|
+
|
|
228
|
+
`scripts/validate.mjs` enforces the Agent Plugins closed manifest and MCP
|
|
229
|
+
schemas (canonical `$schema` values, plugin name constraints, transport
|
|
230
|
+
variants, literal HTTPS URLs, no credential headers), Agent Skills frontmatter
|
|
231
|
+
rules, and that `.mcp.json` stays in lockstep with `mcp.json`.
|
package/README.md
CHANGED
|
@@ -1,20 +1,49 @@
|
|
|
1
1
|
# @probo/skills
|
|
2
2
|
|
|
3
|
-
Multi-agent compliance skills for open-source GRC workflows. Ships
|
|
4
|
-
|
|
5
|
-
|
|
3
|
+
Multi-agent compliance skills for open-source GRC workflows. Ships an
|
|
4
|
+
[Agent Plugins 1.0.0](https://agent-plugins.org/) package: Agent
|
|
5
|
+
Skills–compatible instructions plus portable MCP wiring to the [Probo MCP
|
|
6
|
+
API](https://github.com/getprobo/probo/tree/main/pkg/server/api/mcp/v1) over
|
|
6
7
|
OAuth 2.0.
|
|
7
8
|
|
|
8
|
-
**Supported agents:**
|
|
9
|
+
**Supported agents:** any Agent Plugins client, plus Claude Code, Codex,
|
|
10
|
+
OpenCode, and Cursor through their own plugin or MCP configuration.
|
|
9
11
|
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
12
|
+
The portable package is `plugin.json`, `skills/`, and `mcp.json` at the package
|
|
13
|
+
root. Client-specific manifests (`.claude-plugin/`, `.codex-plugin/`,
|
|
14
|
+
`.mcp.json`) and marketplace catalogs sit alongside it. See
|
|
13
15
|
[COMPATIBILITY.md](./COMPATIBILITY.md).
|
|
14
16
|
|
|
17
|
+
## Probo MCP servers
|
|
18
|
+
|
|
19
|
+
Both hosted Probo instances ship in `mcp.json`; connect the one for your
|
|
20
|
+
region and sign in with OAuth 2.0.
|
|
21
|
+
|
|
22
|
+
| Server | Endpoint |
|
|
23
|
+
| --- | --- |
|
|
24
|
+
| `probo-us` | `https://us.probo.com/api/mcp/v1` |
|
|
25
|
+
| `probo-eu` | `https://eu.probo.com/api/mcp/v1` |
|
|
26
|
+
|
|
27
|
+
Agent Plugins 1.0.0 defines no placeholder expansion for remote MCP URLs, so a
|
|
28
|
+
self-hosted instance is added in the agent instead of in the package:
|
|
29
|
+
|
|
30
|
+
```bash
|
|
31
|
+
claude mcp add --transport http probo https://probo.example.com/api/mcp/v1
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
No API token or bearer header belongs in any of these configs. Probo MCP
|
|
35
|
+
authenticates with OAuth 2.0, discovered from
|
|
36
|
+
`/.well-known/oauth-protected-resource` on the instance root.
|
|
37
|
+
|
|
15
38
|
## Install
|
|
16
39
|
|
|
17
|
-
###
|
|
40
|
+
### Agent Plugins client
|
|
41
|
+
|
|
42
|
+
Point the client at the package root (`packages/skills` in a clone, or the
|
|
43
|
+
installed `@probo/skills` directory). It reads `plugin.json`, discovers the
|
|
44
|
+
skills under `skills/`, and loads both servers from `mcp.json`.
|
|
45
|
+
|
|
46
|
+
### Claude Code
|
|
18
47
|
|
|
19
48
|
**From GitHub** (repo-root catalog at `.claude-plugin/marketplace.json`):
|
|
20
49
|
|
|
@@ -23,6 +52,7 @@ claude plugin marketplace add getprobo/probo
|
|
|
23
52
|
# or, from a local clone:
|
|
24
53
|
claude plugin marketplace add .
|
|
25
54
|
claude plugin install probo@probo
|
|
55
|
+
claude mcp login probo-us # or /mcp in session
|
|
26
56
|
```
|
|
27
57
|
|
|
28
58
|
**From the package directory** (catalog at
|
|
@@ -34,35 +64,6 @@ claude plugin marketplace add ./packages/skills/.claude-plugin
|
|
|
34
64
|
claude plugin install probo@probo
|
|
35
65
|
```
|
|
36
66
|
|
|
37
|
-
When consuming the published package, the package-level marketplace entry
|
|
38
|
-
resolves `@probo/skills` from npm (see
|
|
39
|
-
`packages/skills/.claude-plugin/marketplace.json`).
|
|
40
|
-
|
|
41
|
-
### Configure Probo MCP
|
|
42
|
-
|
|
43
|
-
Set your Probo instance URL before starting Claude Code:
|
|
44
|
-
|
|
45
|
-
```bash
|
|
46
|
-
export PROBO_BASE_URL="https://your-probo-instance.example.com"
|
|
47
|
-
```
|
|
48
|
-
|
|
49
|
-
The plugin `.mcp.json` connects to `${PROBO_BASE_URL}/mcp/v1`. Probo MCP
|
|
50
|
-
authenticates with **OAuth 2.0** — no API token or bearer header is required in
|
|
51
|
-
the plugin config. On first use, sign in from Claude Code:
|
|
52
|
-
|
|
53
|
-
```text
|
|
54
|
-
/mcp
|
|
55
|
-
```
|
|
56
|
-
|
|
57
|
-
Or from your shell:
|
|
58
|
-
|
|
59
|
-
```bash
|
|
60
|
-
claude mcp login probo
|
|
61
|
-
```
|
|
62
|
-
|
|
63
|
-
Claude Code discovers Probo's authorization server via
|
|
64
|
-
`/.well-known/oauth-protected-resource` and stores tokens securely.
|
|
65
|
-
|
|
66
67
|
### Local development
|
|
67
68
|
|
|
68
69
|
```bash
|
|
@@ -73,9 +74,10 @@ claude --plugin-dir ./packages/skills
|
|
|
73
74
|
|
|
74
75
|
| Component | Location | Purpose |
|
|
75
76
|
| --- | --- | --- |
|
|
76
|
-
|
|
|
77
|
+
| Manifest | `plugin.json` | Agent Plugins 1.0.0 plugin identity |
|
|
78
|
+
| MCP | `mcp.json` | Portable hosted Probo servers |
|
|
77
79
|
| Skills | `skills/` | Compliance workflows |
|
|
78
|
-
| Commands | `commands/` | `access-review`, `missing-signatures` — semi-auto workflows |
|
|
80
|
+
| Commands | `commands/` | `access-review`, `missing-signatures` — semi-auto workflows (Claude Code) |
|
|
79
81
|
|
|
80
82
|
Skills: `/probo:<skill-name>` (e.g. `/probo:open-source-compliance`, `/probo:missing-signatures`).
|
|
81
83
|
|
package/mcp.json
ADDED
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://agent-plugins.org/schemas/1.0.0/mcp.schema.json",
|
|
3
|
+
"mcpServers": {
|
|
4
|
+
"probo-us": {
|
|
5
|
+
"type": "streamable-http",
|
|
6
|
+
"url": "https://us.probo.com/api/mcp/v1"
|
|
7
|
+
},
|
|
8
|
+
"probo-eu": {
|
|
9
|
+
"type": "streamable-http",
|
|
10
|
+
"url": "https://eu.probo.com/api/mcp/v1"
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@probo/skills",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.3.0",
|
|
4
4
|
"description": "Multi-agent compliance skills for open-source GRC (Claude Code, Codex, OpenCode) powered by Probo MCP",
|
|
5
5
|
"private": false,
|
|
6
6
|
"scripts": {
|
|
@@ -18,6 +18,8 @@
|
|
|
18
18
|
".agents",
|
|
19
19
|
"skills",
|
|
20
20
|
"commands",
|
|
21
|
+
"plugin.json",
|
|
22
|
+
"mcp.json",
|
|
21
23
|
".mcp.json",
|
|
22
24
|
"README.md",
|
|
23
25
|
"COMPATIBILITY.md"
|
|
@@ -25,6 +27,7 @@
|
|
|
25
27
|
"keywords": [
|
|
26
28
|
"claude-code",
|
|
27
29
|
"agent-skills",
|
|
30
|
+
"agent-plugins",
|
|
28
31
|
"codex",
|
|
29
32
|
"opencode",
|
|
30
33
|
"probo",
|
|
@@ -34,6 +37,9 @@
|
|
|
34
37
|
"open-source"
|
|
35
38
|
],
|
|
36
39
|
"license": "MIT",
|
|
40
|
+
"devDependencies": {
|
|
41
|
+
"js-yaml": "^4.3.1"
|
|
42
|
+
},
|
|
37
43
|
"repository": {
|
|
38
44
|
"type": "git",
|
|
39
45
|
"url": "git+https://github.com/getprobo/probo.git",
|
package/plugin.json
ADDED
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://agent-plugins.org/schemas/1.0.0/plugin.schema.json",
|
|
3
|
+
"name": "probo",
|
|
4
|
+
"version": "0.3.0",
|
|
5
|
+
"description": "Open-source compliance workflows powered by the Probo MCP API",
|
|
6
|
+
"author": {
|
|
7
|
+
"name": "Probo Inc",
|
|
8
|
+
"email": "hello@probo.com",
|
|
9
|
+
"url": "https://www.probo.com"
|
|
10
|
+
},
|
|
11
|
+
"homepage": "https://github.com/getprobo/probo/tree/main/packages/skills",
|
|
12
|
+
"repository": "https://github.com/getprobo/probo",
|
|
13
|
+
"license": "MIT",
|
|
14
|
+
"keywords": [
|
|
15
|
+
"probo",
|
|
16
|
+
"compliance",
|
|
17
|
+
"grc",
|
|
18
|
+
"mcp",
|
|
19
|
+
"agent-skills",
|
|
20
|
+
"open-source"
|
|
21
|
+
]
|
|
22
|
+
}
|
|
@@ -18,13 +18,30 @@ Before executing, read these files **relative to this skill directory**:
|
|
|
18
18
|
|
|
19
19
|
## Preconditions
|
|
20
20
|
|
|
21
|
-
1. Probo MCP must be connected.
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
21
|
+
1. A Probo MCP server must be connected. The plugin ships two hosted servers,
|
|
22
|
+
`probo-us` and `probo-eu`; self-hosted instances are configured in the agent.
|
|
23
|
+
If tools fail with auth errors, stop and tell the user to complete OAuth
|
|
24
|
+
sign-in for that server (Claude Code: `/mcp` or `claude mcp login probo-us`;
|
|
25
|
+
Codex: `codex mcp login probo-us`; OpenCode/Cursor: configure MCP in settings
|
|
26
|
+
then authenticate).
|
|
27
|
+
2. Resolve **the server**, then **the organization**. These are separate
|
|
28
|
+
choices: one server can hold several organizations, and the caller can have
|
|
29
|
+
organizations on more than one server. Settle both before any campaign call,
|
|
30
|
+
because `listAccessReviewCampaigns` requires `organization_id`.
|
|
31
|
+
- **Server.** Use the server for the region the user names, or the only
|
|
32
|
+
connected server when there is one. Otherwise call `listOrganizations` on
|
|
33
|
+
each connected server and take the server whose organizations uniquely
|
|
34
|
+
match the one the user named. Never infer the region from a merely
|
|
35
|
+
non-empty result — when the match is not unique, show each server with the
|
|
36
|
+
organizations it returned and ask which to use.
|
|
37
|
+
- **Organization.** Once the server is settled, call `listOrganizations` on
|
|
38
|
+
it unless an earlier probe already returned its organizations. Take the
|
|
39
|
+
unique name match, or the only organization when the server returns one.
|
|
40
|
+
Otherwise list them and ask the user to pick.
|
|
41
|
+
3. Resolve the campaign from `$ARGUMENTS` (name match or GID) within that
|
|
42
|
+
organization. If the campaign is ambiguous, list `listAccessReviewCampaigns`
|
|
43
|
+
results and ask the user to pick one.
|
|
44
|
+
4. Campaign `status` must be `IN_PROGRESS` or `PENDING_ACTIONS`. Stop with a
|
|
28
45
|
clear message for `DRAFT`, `COMPLETED`, or `CANCELLED`.
|
|
29
46
|
|
|
30
47
|
## Working notes file
|
|
@@ -1,7 +1,26 @@
|
|
|
1
1
|
# Access review MCP tools
|
|
2
2
|
|
|
3
|
-
All tools are on
|
|
4
|
-
calling.
|
|
3
|
+
All tools are on a Probo MCP server (`probo-us`, `probo-eu`, or a self-hosted
|
|
4
|
+
server configured in the agent). Read each tool schema before calling.
|
|
5
|
+
|
|
6
|
+
## Organization scope
|
|
7
|
+
|
|
8
|
+
### `listOrganizations`
|
|
9
|
+
|
|
10
|
+
List organizations the caller can access on the server it is called on. No
|
|
11
|
+
required input, so it serves two distinct purposes:
|
|
12
|
+
|
|
13
|
+
1. **Choosing a server** when the region is unknown — call it on each connected
|
|
14
|
+
server. A non-empty result does not identify the region, since the caller can
|
|
15
|
+
have organizations on both. Only a unique match for the organization the user
|
|
16
|
+
named settles it; otherwise show each server with its organizations and ask.
|
|
17
|
+
2. **Choosing an organization** on a server that is already settled — including
|
|
18
|
+
a single self-hosted instance serving several organizations. Take the unique
|
|
19
|
+
name match, or the only organization when the server returns one, and
|
|
20
|
+
otherwise list them and ask.
|
|
21
|
+
|
|
22
|
+
Either way the organization must be resolved before `listAccessReviewCampaigns`,
|
|
23
|
+
which requires `organization_id`.
|
|
5
24
|
|
|
6
25
|
## Read
|
|
7
26
|
|
|
@@ -10,7 +29,7 @@ calling.
|
|
|
10
29
|
List campaigns for an organization. Use to resolve `$ARGUMENTS` to a campaign
|
|
11
30
|
when the user provides a name instead of a GID.
|
|
12
31
|
|
|
13
|
-
Required: `organization_id`
|
|
32
|
+
Required: `organization_id` — resolve the organization before calling this.
|
|
14
33
|
|
|
15
34
|
### `listAccessEntries`
|
|
16
35
|
|
|
@@ -48,9 +48,9 @@ Commitments must trace to controls the company genuinely has. The source of trut
|
|
|
48
48
|
**published policies** in Probo, not general knowledge about SOC 2 or ISO 27001.
|
|
49
49
|
|
|
50
50
|
1. **Find the Probo MCP and the organization.** This environment may expose more than one Probo MCP
|
|
51
|
-
server (
|
|
52
|
-
that returns the target company, and use that
|
|
53
|
-
user named and capture its `id`.
|
|
51
|
+
server (the plugin ships hosted `probo-us` and `probo-eu`, and self-hosted instances add their own).
|
|
52
|
+
Call `listOrganizations` on each until you find the one that returns the target company, and use that
|
|
53
|
+
server for every later call. Match the organization the user named and capture its `id`.
|
|
54
54
|
2. **List the published policies.** Call `listDocuments` with `document_types: ["POLICY"]`. Policies with
|
|
55
55
|
a `current_published_major` are published.
|
|
56
56
|
3. **Read the actual content.** `getDocument` returns metadata only. To get the text, call
|
|
@@ -21,10 +21,14 @@ Before executing, read these files **relative to this skill directory**:
|
|
|
21
21
|
|
|
22
22
|
## Preconditions
|
|
23
23
|
|
|
24
|
-
1. Probo MCP must be connected.
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
24
|
+
1. A Probo MCP server must be connected. The plugin ships two hosted servers,
|
|
25
|
+
`probo-us` and `probo-eu`; self-hosted instances are configured in the agent.
|
|
26
|
+
Use the server for the user's region, and when the region is unknown call
|
|
27
|
+
`listOrganizations` on each connected server and keep the one that returns
|
|
28
|
+
the organization. If tools fail with auth errors, stop and tell the user to
|
|
29
|
+
complete OAuth sign-in for that server (Claude Code: `/mcp` or
|
|
30
|
+
`claude mcp login probo-us`; Codex: `codex mcp login probo-us`;
|
|
31
|
+
OpenCode/Cursor: configure MCP in settings then authenticate).
|
|
28
32
|
2. Resolve the organization from `$ARGUMENTS` (name match or GID). If ambiguous,
|
|
29
33
|
call `listOrganizations` and ask the user to pick one.
|
|
30
34
|
3. This skill is **reporting only**. Do not request signatures, cancel requests,
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
# Missing signatures MCP tools
|
|
2
2
|
|
|
3
|
-
All tools are on
|
|
4
|
-
calling.
|
|
3
|
+
All tools are on a Probo MCP server (`probo-us`, `probo-eu`, or a self-hosted
|
|
4
|
+
server configured in the agent). Read each tool schema before calling.
|
|
5
5
|
|
|
6
6
|
## Organization scope
|
|
7
7
|
|
|
@@ -11,10 +11,13 @@ first.
|
|
|
11
11
|
|
|
12
12
|
## Before you start
|
|
13
13
|
|
|
14
|
-
1. Confirm
|
|
15
|
-
|
|
14
|
+
1. Confirm a Probo MCP server is connected. The plugin ships two hosted
|
|
15
|
+
servers, `probo-us` and `probo-eu`; self-hosted instances are configured in
|
|
16
|
+
the agent. If none is connected, ask the user to run `/mcp` or
|
|
17
|
+
`claude mcp login probo-us` to complete the OAuth 2.0 sign-in.
|
|
16
18
|
2. Identify the target organization. List organizations if the user did not
|
|
17
|
-
provide one
|
|
19
|
+
provide one, and when several servers are connected use the one that returns
|
|
20
|
+
the target organization.
|
|
18
21
|
3. Prefer MCP tools over manual API calls. The Probo MCP API mirrors the
|
|
19
22
|
platform's GraphQL surface.
|
|
20
23
|
|
|
@@ -1,23 +1,28 @@
|
|
|
1
1
|
# Open-source compliance workflows
|
|
2
2
|
|
|
3
|
-
This plugin wraps Probo's MCP API
|
|
4
|
-
|
|
5
|
-
|
|
3
|
+
This plugin wraps Probo's MCP API. Probo is a self-hostable GRC platform; its
|
|
4
|
+
MCP server exposes tools for third parties, controls, obligations, risks,
|
|
5
|
+
documents, audits, access reviews, and more.
|
|
6
6
|
|
|
7
|
-
##
|
|
7
|
+
## Servers
|
|
8
8
|
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
automatically. Do not ask the user for API keys or bearer tokens for MCP
|
|
12
|
-
access.
|
|
9
|
+
The plugin ships the two hosted Probo instances. A self-hosted instance is
|
|
10
|
+
added in the agent's own MCP configuration.
|
|
13
11
|
|
|
14
|
-
|
|
|
12
|
+
| Server | Endpoint |
|
|
15
13
|
| --- | --- |
|
|
16
|
-
| `
|
|
14
|
+
| `probo-us` | `https://us.probo.com/api/mcp/v1` |
|
|
15
|
+
| `probo-eu` | `https://eu.probo.com/api/mcp/v1` |
|
|
16
|
+
| self-hosted | `<instance-root>/api/mcp/v1` |
|
|
17
17
|
|
|
18
|
-
|
|
18
|
+
## Authentication
|
|
19
|
+
|
|
20
|
+
Probo MCP uses OAuth 2.0. Users sign in once per server via `/mcp` or
|
|
21
|
+
`claude mcp login probo-us`; the agent stores and refreshes tokens
|
|
22
|
+
automatically. Do not ask the user for API keys or bearer tokens for MCP
|
|
23
|
+
access.
|
|
19
24
|
|
|
20
|
-
OAuth discovery:
|
|
25
|
+
OAuth discovery (on the instance root, not the MCP path):
|
|
21
26
|
|
|
22
27
|
- Protected resource metadata: `/.well-known/oauth-protected-resource`
|
|
23
28
|
- Authorization server metadata: `/.well-known/oauth-authorization-server`
|