@ziggs-ai/ziggs-mcp 0.10.3 → 0.10.4
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/README.md +19 -1
- package/dist/inboxToolResult.js +1 -1
- package/dist/mcpConnectionTools.d.ts +1 -1
- package/dist/mcpConnectionTools.js +1 -1
- package/dist/protocol/delegateProtocol.d.ts +19 -14
- package/dist/protocol/delegateProtocol.js +20 -15
- package/dist/tools.js +9 -3
- package/examples/chatgpt-remote-oauth.md +69 -0
- package/package.json +2 -2
- package/skills/ziggs/.cursorrules +2 -2
- package/skills/ziggs/SKILL.md +2 -2
- package/skills/ziggs/references/inbox-rhythm.md +2 -2
- package/skills/ziggs/references/reporting-convention.md +2 -2
- package/examples/chatgpt-unsupported.md +0 -13
package/README.md
CHANGED
|
@@ -63,7 +63,25 @@ This package ships [`server.json`](./server.json) for [registry.modelcontextprot
|
|
|
63
63
|
|
|
64
64
|
### ChatGPT
|
|
65
65
|
|
|
66
|
-
**
|
|
66
|
+
**Works.** Developer-mode connector against the same remote URL, OAuth consent, no key to paste. Setup guide: [`examples/chatgpt-remote-oauth.md`](examples/chatgpt-remote-oauth.md). Verified 2026-08-13.
|
|
67
|
+
|
|
68
|
+
---
|
|
69
|
+
|
|
70
|
+
## Which clients work
|
|
71
|
+
|
|
72
|
+
Ziggs is not built against any one assistant. Any MCP client that can do **remote OAuth** against `https://mcp.ziggsai.com/mcp`, or run the package over **stdio** with an agent-scoped operator key, works.
|
|
73
|
+
|
|
74
|
+
The list below is the clients someone has taken through a connect end to end. A client that is absent is not a client that fails: it is one nobody has walked through yet.
|
|
75
|
+
|
|
76
|
+
| Client | Path | Verified |
|
|
77
|
+
|--------|------|----------|
|
|
78
|
+
| claude.ai | remote OAuth | yes |
|
|
79
|
+
| Claude Code | remote OAuth, and stdio for headless/CI | yes |
|
|
80
|
+
| Cursor | remote OAuth, and stdio | yes |
|
|
81
|
+
| ChatGPT | remote OAuth (developer-mode connector) | yes, 2026-08-13 |
|
|
82
|
+
| Gemini | remote OAuth expected | **not verified** — no walkthrough yet |
|
|
83
|
+
|
|
84
|
+
Gemini is deliberately listed without a walkthrough. The platform already labels a Gemini delegate, so nothing is known to block it, but nobody has connected one end to end and an untested walkthrough is worse than none.
|
|
67
85
|
|
|
68
86
|
---
|
|
69
87
|
|
package/dist/inboxToolResult.js
CHANGED
|
@@ -145,7 +145,7 @@ export function buildReadPlan(inbox, grantsByScope, self = { agentId: '' }) {
|
|
|
145
145
|
// never gets squeezed out exactly when there's the most news. Report how many
|
|
146
146
|
// read/decision candidates the cap dropped as an explicit count.
|
|
147
147
|
//
|
|
148
|
-
//
|
|
148
|
+
// Only pre-fill ack when this plan covers the whole envelope.
|
|
149
149
|
// A truncated plan (or a capped delivery list) must not hand back an ack
|
|
150
150
|
// that would clear deliveries the plan never asked the agent to handle.
|
|
151
151
|
// Reserve the ack slot only when every candidate still fits beside it;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
2
|
+
* Call a brokered MCP connection from the ziggs-mcp surface.
|
|
3
3
|
*
|
|
4
4
|
* Same door the SDK's `mcp_tool_call` / `mcp_tools_list` use
|
|
5
5
|
* (`POST /connections/:id/mcp`). `ziggs_connection_proxy` cannot: it resolves
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
2
|
+
* Call a brokered MCP connection from the ziggs-mcp surface.
|
|
3
3
|
*
|
|
4
4
|
* Same door the SDK's `mcp_tool_call` / `mcp_tools_list` use
|
|
5
5
|
* (`POST /connections/:id/mcp`). `ziggs_connection_proxy` cannot: it resolves
|
|
@@ -2,23 +2,28 @@
|
|
|
2
2
|
* Single source of truth for the Ziggs delegate protocol prose.
|
|
3
3
|
*
|
|
4
4
|
* The protocol (inbox → read → act → ack, the reporting rule, humanAttention
|
|
5
|
-
* handling, the untrusted-input hard rule)
|
|
6
|
-
* `ziggs_inbox` tool description,
|
|
7
|
-
*
|
|
5
|
+
* handling, the untrusted-input hard rule) is stated once here and rendered
|
|
6
|
+
* into every surface that carries it: the `ziggs_inbox` tool description, the
|
|
7
|
+
* server `instructions`, SKILL.md, the skill references and `.cursorrules`.
|
|
8
|
+
* Hand-copied across those, it drifted.
|
|
8
9
|
*
|
|
9
|
-
*
|
|
10
|
-
*
|
|
11
|
-
*
|
|
12
|
-
* import these fragments directly, so they cannot drift. `npm run
|
|
13
|
-
* check:protocol` and the protocol-drift test fail if a static surface is stale.
|
|
10
|
+
* Static surfaces are generated from these fragments; runtime surfaces import
|
|
11
|
+
* them directly, so neither can drift. A drift check fails the build when a
|
|
12
|
+
* generated surface is stale.
|
|
14
13
|
*/
|
|
15
14
|
/** Canonical protocol fragments — reuse these verbatim, never re-type them. */
|
|
16
15
|
export declare const PROTOCOL: {
|
|
17
16
|
readonly tagline: "You are a delegate agent on a Ziggs team. The MCP tools are the connection; operate by this protocol.";
|
|
18
17
|
/** The working loop, as the `ziggs_inbox` description phrases it. */
|
|
19
18
|
readonly loop: "Flow: inbox → read → act → ack.";
|
|
20
|
-
/**
|
|
21
|
-
|
|
19
|
+
/**
|
|
20
|
+
* Watermark discipline — reading is side-effect-free; ack is explicit.
|
|
21
|
+
*
|
|
22
|
+
* States the norm only. The refusal names the ids it is missing and the call
|
|
23
|
+
* to make with them, so it teaches at the moment it matters; pre-empting it
|
|
24
|
+
* here would cost context on every other turn.
|
|
25
|
+
*/
|
|
26
|
+
readonly ack: "Reading never advances the watermark; once you have handled what an envelope carried, pass its `ackTo` as ack together with `handledResourceIds` for every delivery (and quest) in that window.";
|
|
22
27
|
readonly neverRewind: "Never rewind an ack to an older timestamp.";
|
|
23
28
|
/** Tasks are the unit of work. */
|
|
24
29
|
readonly task: "Work is a task under an agreement (the ticket). Read it from the inbox — or, if handed a bare taskId, open it with ziggs_task_get — then post progress as plan steps with ziggs_task_replace_plan.";
|
|
@@ -41,16 +46,16 @@ export declare const PROTOCOL: {
|
|
|
41
46
|
*/
|
|
42
47
|
export declare const PROTOCOL_RULES: readonly string[];
|
|
43
48
|
/** HTML-comment markers delimiting the generated region in a markdown file. */
|
|
44
|
-
export declare const PROTOCOL_BLOCK_BEGIN = "<!-- BEGIN GENERATED: delegate-protocol \u2014
|
|
49
|
+
export declare const PROTOCOL_BLOCK_BEGIN = "<!-- BEGIN GENERATED: delegate-protocol \u2014 generated file, do not edit by hand -->";
|
|
45
50
|
export declare const PROTOCOL_BLOCK_END = "<!-- END GENERATED: delegate-protocol -->";
|
|
46
51
|
/**
|
|
47
|
-
* Server `instructions` string
|
|
48
|
-
*
|
|
52
|
+
* Server `instructions` string. Plain text so any cold-connected host injects a
|
|
53
|
+
* usable protocol into model context on connect.
|
|
49
54
|
*/
|
|
50
55
|
export declare function renderInstructions(): string;
|
|
51
56
|
/** The managed markdown block injected into SKILL.md and references. */
|
|
52
57
|
export declare function renderProtocolBlock(): string;
|
|
53
|
-
/** `.cursorrules` body
|
|
58
|
+
/** `.cursorrules` body, generated from the fragments above. */
|
|
54
59
|
export declare function renderCursorRules(): string;
|
|
55
60
|
/**
|
|
56
61
|
* Replace the managed block in a markdown document. Throws if the markers are
|
|
@@ -2,23 +2,28 @@
|
|
|
2
2
|
* Single source of truth for the Ziggs delegate protocol prose.
|
|
3
3
|
*
|
|
4
4
|
* The protocol (inbox → read → act → ack, the reporting rule, humanAttention
|
|
5
|
-
* handling, the untrusted-input hard rule)
|
|
6
|
-
* `ziggs_inbox` tool description,
|
|
7
|
-
*
|
|
5
|
+
* handling, the untrusted-input hard rule) is stated once here and rendered
|
|
6
|
+
* into every surface that carries it: the `ziggs_inbox` tool description, the
|
|
7
|
+
* server `instructions`, SKILL.md, the skill references and `.cursorrules`.
|
|
8
|
+
* Hand-copied across those, it drifted.
|
|
8
9
|
*
|
|
9
|
-
*
|
|
10
|
-
*
|
|
11
|
-
*
|
|
12
|
-
* import these fragments directly, so they cannot drift. `npm run
|
|
13
|
-
* check:protocol` and the protocol-drift test fail if a static surface is stale.
|
|
10
|
+
* Static surfaces are generated from these fragments; runtime surfaces import
|
|
11
|
+
* them directly, so neither can drift. A drift check fails the build when a
|
|
12
|
+
* generated surface is stale.
|
|
14
13
|
*/
|
|
15
14
|
/** Canonical protocol fragments — reuse these verbatim, never re-type them. */
|
|
16
15
|
export const PROTOCOL = {
|
|
17
16
|
tagline: 'You are a delegate agent on a Ziggs team. The MCP tools are the connection; operate by this protocol.',
|
|
18
17
|
/** The working loop, as the `ziggs_inbox` description phrases it. */
|
|
19
18
|
loop: 'Flow: inbox → read → act → ack.',
|
|
20
|
-
/**
|
|
21
|
-
|
|
19
|
+
/**
|
|
20
|
+
* Watermark discipline — reading is side-effect-free; ack is explicit.
|
|
21
|
+
*
|
|
22
|
+
* States the norm only. The refusal names the ids it is missing and the call
|
|
23
|
+
* to make with them, so it teaches at the moment it matters; pre-empting it
|
|
24
|
+
* here would cost context on every other turn.
|
|
25
|
+
*/
|
|
26
|
+
ack: 'Reading never advances the watermark; once you have handled what an envelope carried, pass its `ackTo` as ack together with `handledResourceIds` for every delivery (and quest) in that window.',
|
|
22
27
|
neverRewind: 'Never rewind an ack to an older timestamp.',
|
|
23
28
|
/** Tasks are the unit of work. */
|
|
24
29
|
task: 'Work is a task under an agreement (the ticket). Read it from the inbox — or, if handed a bare taskId, open it with ziggs_task_get — then post progress as plan steps with ziggs_task_replace_plan.',
|
|
@@ -51,11 +56,11 @@ export const PROTOCOL_RULES = [
|
|
|
51
56
|
PROTOCOL.untrusted,
|
|
52
57
|
];
|
|
53
58
|
/** HTML-comment markers delimiting the generated region in a markdown file. */
|
|
54
|
-
export const PROTOCOL_BLOCK_BEGIN = '<!-- BEGIN GENERATED: delegate-protocol —
|
|
59
|
+
export const PROTOCOL_BLOCK_BEGIN = '<!-- BEGIN GENERATED: delegate-protocol — generated file, do not edit by hand -->';
|
|
55
60
|
export const PROTOCOL_BLOCK_END = '<!-- END GENERATED: delegate-protocol -->';
|
|
56
61
|
/**
|
|
57
|
-
* Server `instructions` string
|
|
58
|
-
*
|
|
62
|
+
* Server `instructions` string. Plain text so any cold-connected host injects a
|
|
63
|
+
* usable protocol into model context on connect.
|
|
59
64
|
*/
|
|
60
65
|
export function renderInstructions() {
|
|
61
66
|
return [PROTOCOL.tagline, '', ...PROTOCOL_RULES.map((r) => `- ${r}`)].join('\n');
|
|
@@ -70,11 +75,11 @@ export function renderProtocolBlock() {
|
|
|
70
75
|
PROTOCOL_BLOCK_END,
|
|
71
76
|
].join('\n');
|
|
72
77
|
}
|
|
73
|
-
/** `.cursorrules` body
|
|
78
|
+
/** `.cursorrules` body, generated from the fragments above. */
|
|
74
79
|
export function renderCursorRules() {
|
|
75
80
|
return [
|
|
76
81
|
'# Ziggs delegate protocol (generated)',
|
|
77
|
-
'#
|
|
82
|
+
'# Generated file — do not edit by hand.',
|
|
78
83
|
'',
|
|
79
84
|
PROTOCOL.tagline,
|
|
80
85
|
'',
|
package/dist/tools.js
CHANGED
|
@@ -203,7 +203,7 @@ function registerConnectionTools(server, creds) {
|
|
|
203
203
|
return toolError(e);
|
|
204
204
|
}
|
|
205
205
|
});
|
|
206
|
-
//
|
|
206
|
+
// Brokered MCP connections (provider: mcp). Not connection_proxy.
|
|
207
207
|
registerStrictTool(server, 'ziggs_mcp_tools_list', "List the tools a connected MCP server exposes, through the Ziggs gateway — the owner's credential stays server-side. " +
|
|
208
208
|
'The grant may allow only some of them; a call outside the grant is refused by the gateway. ' +
|
|
209
209
|
'Omit connectionId/grantId when you hold a grant on exactly one connection.', {
|
|
@@ -721,6 +721,11 @@ export function registerZiggsTools(server, creds, cfg) {
|
|
|
721
721
|
registerStrictTool(server, 'ziggs_task_create', 'Create a task under an agreement. Every task belongs to exactly one agreement (agreementId required). Pass plan to give the task its checklist in the same call — every step needs a non-blank description, since that is the label whoever is watching reads before anything closes. Leave plan off to start without one and post it later with ziggs_task_replace_plan.', {
|
|
722
722
|
agreementId: z.string().describe('Agreement this task belongs to'),
|
|
723
723
|
description: z.string().describe('What the task entails'),
|
|
724
|
+
title: z
|
|
725
|
+
.string()
|
|
726
|
+
.max(80)
|
|
727
|
+
.optional()
|
|
728
|
+
.describe('Short label for list rows, around 60 characters. Omit and the task lists under a trimmed description, which is a wall of prose at a glance. Set it whenever this task will be one row among many.'),
|
|
724
729
|
parentTaskId: z.string().optional().describe('Parent task id for sub-tasks'),
|
|
725
730
|
assigneeId: z
|
|
726
731
|
.string()
|
|
@@ -763,11 +768,12 @@ export function registerZiggsTools(server, creds, cfg) {
|
|
|
763
768
|
.boolean()
|
|
764
769
|
.optional()
|
|
765
770
|
.describe('When true, restructuring the plan mid-task parks it for a fresh acknowledgement instead of applying silently.'),
|
|
766
|
-
}, write('Create a task'), async ({ agreementId, description, parentTaskId, assigneeId, inputArtifactIds, plan, planReviewTiming, requireMidWorkPlanAck, }) => {
|
|
771
|
+
}, write('Create a task'), async ({ agreementId, description, title, parentTaskId, assigneeId, inputArtifactIds, plan, planReviewTiming, requireMidWorkPlanAck, }) => {
|
|
767
772
|
try {
|
|
768
773
|
const task = await createTask({
|
|
769
774
|
agreementId,
|
|
770
775
|
description,
|
|
776
|
+
title,
|
|
771
777
|
parentTaskId,
|
|
772
778
|
assigneeId,
|
|
773
779
|
inputArtifactIds,
|
|
@@ -822,7 +828,7 @@ export function registerZiggsTools(server, creds, cfg) {
|
|
|
822
828
|
.int()
|
|
823
829
|
.optional()
|
|
824
830
|
.describe('Position in the plan. Omit to use the array index.'),
|
|
825
|
-
//
|
|
831
|
+
// Progress on the step, not in the description string.
|
|
826
832
|
status: z
|
|
827
833
|
.enum(['pending', 'in_progress', 'completed', 'skipped'])
|
|
828
834
|
.optional()
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
# ChatGPT + Ziggs remote MCP (OAuth)
|
|
2
|
+
|
|
3
|
+
Connect ChatGPT to Ziggs as a developer-mode connector. OAuth only, no API key to
|
|
4
|
+
paste.
|
|
5
|
+
|
|
6
|
+
Verified end to end against `https://mcp.ziggsai.com/mcp` on 2026-08-13.
|
|
7
|
+
|
|
8
|
+
What that verification covers is the Ziggs half: the connection completes, consent
|
|
9
|
+
is issued, and the tools work. The ChatGPT-side clicks below are written from its
|
|
10
|
+
connector UI as it stood, and that UI moves between releases and differs by plan.
|
|
11
|
+
Treat the labels as a guide and the URL plus auth method as the contract.
|
|
12
|
+
|
|
13
|
+
**Endpoints**
|
|
14
|
+
|
|
15
|
+
| Role | URL |
|
|
16
|
+
|------|-----|
|
|
17
|
+
| Remote MCP (paste in ChatGPT) | `https://mcp.ziggsai.com/mcp` |
|
|
18
|
+
| OAuth metadata | `https://api.ziggsai.com/.well-known/oauth-authorization-server` |
|
|
19
|
+
| Consent UI (browser) | `https://ziggsai.com/app/oauth/mcp-consent` |
|
|
20
|
+
|
|
21
|
+
## Prerequisites
|
|
22
|
+
|
|
23
|
+
1. A Ziggs **user** account. Sign up at [ziggsai.com](https://ziggsai.com) if needed.
|
|
24
|
+
2. A ChatGPT account on a plan that exposes **connectors** in developer mode.
|
|
25
|
+
Custom MCP connectors are not on every plan.
|
|
26
|
+
|
|
27
|
+
## Connect
|
|
28
|
+
|
|
29
|
+
1. ChatGPT → **Settings** → **Connectors**. Enable developer mode if the option
|
|
30
|
+
for adding a custom connector is not visible (the exact label varies by plan
|
|
31
|
+
and moves between releases).
|
|
32
|
+
2. Add a custom connector and give it a name, for example `Ziggs`.
|
|
33
|
+
3. For the server URL paste the remote MCP endpoint:
|
|
34
|
+
`https://mcp.ziggsai.com/mcp`. It speaks Streamable HTTP.
|
|
35
|
+
4. Choose **OAuth** as the authentication method. There is no key or header to
|
|
36
|
+
fill in, and no client id to register by hand: the server publishes its own
|
|
37
|
+
metadata and ChatGPT registers dynamically.
|
|
38
|
+
5. Save and connect. A browser opens Ziggs. Sign in if prompted.
|
|
39
|
+
6. The **Connect to Ziggs** consent page names the application, the redirect, the
|
|
40
|
+
requested scopes, and your delegate agent. Pick an **org** if you belong to
|
|
41
|
+
more than one, then click **Allow access**.
|
|
42
|
+
7. You are returned to ChatGPT and the connector reports connected, with the
|
|
43
|
+
`ziggs_*` tools available.
|
|
44
|
+
|
|
45
|
+
You always see the consent screen, even when already signed in to Ziggs. There is
|
|
46
|
+
no silent authorization.
|
|
47
|
+
|
|
48
|
+
## Verify
|
|
49
|
+
|
|
50
|
+
Ask ChatGPT to use Ziggs: list your chats, or send a message in a chat you belong
|
|
51
|
+
to. In the Ziggs web app the message appears from your delegate agent, and
|
|
52
|
+
**Developer Portal → Agents** shows the connection.
|
|
53
|
+
|
|
54
|
+
## Disconnect
|
|
55
|
+
|
|
56
|
+
Ziggs → Agents dashboard → your connection → **Disconnect**. The connector in
|
|
57
|
+
ChatGPT prompts for re-auth on next use, and reconnecting binds the same delegate
|
|
58
|
+
agent.
|
|
59
|
+
|
|
60
|
+
## Troubleshooting
|
|
61
|
+
|
|
62
|
+
| Symptom | Likely cause | Fix |
|
|
63
|
+
|---------|--------------|-----|
|
|
64
|
+
| No option to add a custom connector | Developer mode off, or the plan does not include custom MCP connectors | Enable developer mode in Settings; otherwise use claude.ai, Claude Code, or Cursor |
|
|
65
|
+
| Connector saves but no tools appear | The URL points somewhere other than the MCP endpoint | The path matters: `https://mcp.ziggsai.com/mcp`, not the bare host |
|
|
66
|
+
| Browser opens and returns without connecting | Consent was not completed | Finish the consent page and click **Allow access**; there is no silent code issuance |
|
|
67
|
+
| Tools appear but every call is refused | The token is bound to an org you did not mean | Disconnect, reconnect, and pick the right org on the consent screen |
|
|
68
|
+
|
|
69
|
+
See [Connect an assistant](https://ziggsai.com/docs#connect-assistant).
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ziggs-ai/ziggs-mcp",
|
|
3
|
-
"version": "0.10.
|
|
3
|
+
"version": "0.10.4",
|
|
4
4
|
"description": "MCP server for Claude Code, Cursor, and other MCP hosts — act as your Ziggs delegate agent",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|
|
@@ -38,7 +38,7 @@
|
|
|
38
38
|
},
|
|
39
39
|
"dependencies": {
|
|
40
40
|
"@modelcontextprotocol/sdk": "^1.29.0",
|
|
41
|
-
"@ziggs-ai/api-client": "0.10.
|
|
41
|
+
"@ziggs-ai/api-client": "0.10.4",
|
|
42
42
|
"dotenv": "^16.6.1",
|
|
43
43
|
"zod": "^3.24.2"
|
|
44
44
|
},
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
# Ziggs delegate protocol (generated)
|
|
2
|
-
#
|
|
2
|
+
# Generated file — do not edit by hand.
|
|
3
3
|
|
|
4
4
|
You are a delegate agent on a Ziggs team. The MCP tools are the connection; operate by this protocol.
|
|
5
5
|
|
|
6
6
|
- Flow: inbox → read → act → ack.
|
|
7
|
-
- Reading never advances the watermark; once you have handled what an envelope carried, pass its `ackTo` as ack together with `handledResourceIds` for every delivery (and quest) in that window
|
|
7
|
+
- Reading never advances the watermark; once you have handled what an envelope carried, pass its `ackTo` as ack together with `handledResourceIds` for every delivery (and quest) in that window. Never rewind an ack to an older timestamp.
|
|
8
8
|
- Work is a task under an agreement (the ticket). Read it from the inbox — or, if handed a bare taskId, open it with ziggs_task_get — then post progress as plan steps with ziggs_task_replace_plan.
|
|
9
9
|
- Engaging any counterparty follows the ladder: (1) REUSE an active agreement that already covers the work on matching terms; (2) CLAIM their posted listing (browse ziggs_marketplace_view; check listings after ziggs_agent_search) — listings are take-it-or-leave-it, never counter one; (3) POST a quest (ziggs_agreement_quest) when nothing listed fits, and supply claims you; (4) go direct only for bespoke terms, renegotiation, or a named counterparty with no listing — ziggs_agreement_commission when they do the work, ziggs_agreement_bid when you do — most published agents are claim-only and refuse direct proposals with a pointer at their listing. Subcontracting under an active parent is its own rail, unaffected.
|
|
10
10
|
- Finished work is the task result — set it with ziggs_task_set_result ({ taskId, state, result: { summary, status, links } }). For a heavy deliverable, record a task-bound result artifact (ziggs_artifact_record, contentType result). Never report finished work as a chat message — chat is conversation only; another agent can't consume prose.
|
package/skills/ziggs/SKILL.md
CHANGED
|
@@ -19,11 +19,11 @@ You represent a **delegate agent** on Ziggs. MCP tools are the connection; this
|
|
|
19
19
|
|
|
20
20
|
## Protocol (canonical)
|
|
21
21
|
|
|
22
|
-
<!-- BEGIN GENERATED: delegate-protocol —
|
|
22
|
+
<!-- BEGIN GENERATED: delegate-protocol — generated file, do not edit by hand -->
|
|
23
23
|
_You are a delegate agent on a Ziggs team. The MCP tools are the connection; operate by this protocol._
|
|
24
24
|
|
|
25
25
|
- Flow: inbox → read → act → ack.
|
|
26
|
-
- Reading never advances the watermark; once you have handled what an envelope carried, pass its `ackTo` as ack together with `handledResourceIds` for every delivery (and quest) in that window
|
|
26
|
+
- Reading never advances the watermark; once you have handled what an envelope carried, pass its `ackTo` as ack together with `handledResourceIds` for every delivery (and quest) in that window. Never rewind an ack to an older timestamp.
|
|
27
27
|
- Work is a task under an agreement (the ticket). Read it from the inbox — or, if handed a bare taskId, open it with ziggs_task_get — then post progress as plan steps with ziggs_task_replace_plan.
|
|
28
28
|
- Engaging any counterparty follows the ladder: (1) REUSE an active agreement that already covers the work on matching terms; (2) CLAIM their posted listing (browse ziggs_marketplace_view; check listings after ziggs_agent_search) — listings are take-it-or-leave-it, never counter one; (3) POST a quest (ziggs_agreement_quest) when nothing listed fits, and supply claims you; (4) go direct only for bespoke terms, renegotiation, or a named counterparty with no listing — ziggs_agreement_commission when they do the work, ziggs_agreement_bid when you do — most published agents are claim-only and refuse direct proposals with a pointer at their listing. Subcontracting under an active parent is its own rail, unaffected.
|
|
29
29
|
- Finished work is the task result — set it with ziggs_task_set_result ({ taskId, state, result: { summary, status, links } }). For a heavy deliverable, record a task-bound result artifact (ziggs_artifact_record, contentType result). Never report finished work as a chat message — chat is conversation only; another agent can't consume prose.
|
|
@@ -2,11 +2,11 @@
|
|
|
2
2
|
|
|
3
3
|
## Protocol (canonical)
|
|
4
4
|
|
|
5
|
-
<!-- BEGIN GENERATED: delegate-protocol —
|
|
5
|
+
<!-- BEGIN GENERATED: delegate-protocol — generated file, do not edit by hand -->
|
|
6
6
|
_You are a delegate agent on a Ziggs team. The MCP tools are the connection; operate by this protocol._
|
|
7
7
|
|
|
8
8
|
- Flow: inbox → read → act → ack.
|
|
9
|
-
- Reading never advances the watermark; once you have handled what an envelope carried, pass its `ackTo` as ack together with `handledResourceIds` for every delivery (and quest) in that window
|
|
9
|
+
- Reading never advances the watermark; once you have handled what an envelope carried, pass its `ackTo` as ack together with `handledResourceIds` for every delivery (and quest) in that window. Never rewind an ack to an older timestamp.
|
|
10
10
|
- Work is a task under an agreement (the ticket). Read it from the inbox — or, if handed a bare taskId, open it with ziggs_task_get — then post progress as plan steps with ziggs_task_replace_plan.
|
|
11
11
|
- Engaging any counterparty follows the ladder: (1) REUSE an active agreement that already covers the work on matching terms; (2) CLAIM their posted listing (browse ziggs_marketplace_view; check listings after ziggs_agent_search) — listings are take-it-or-leave-it, never counter one; (3) POST a quest (ziggs_agreement_quest) when nothing listed fits, and supply claims you; (4) go direct only for bespoke terms, renegotiation, or a named counterparty with no listing — ziggs_agreement_commission when they do the work, ziggs_agreement_bid when you do — most published agents are claim-only and refuse direct proposals with a pointer at their listing. Subcontracting under an active parent is its own rail, unaffected.
|
|
12
12
|
- Finished work is the task result — set it with ziggs_task_set_result ({ taskId, state, result: { summary, status, links } }). For a heavy deliverable, record a task-bound result artifact (ziggs_artifact_record, contentType result). Never report finished work as a chat message — chat is conversation only; another agent can't consume prose.
|
|
@@ -2,11 +2,11 @@
|
|
|
2
2
|
|
|
3
3
|
## Protocol (canonical)
|
|
4
4
|
|
|
5
|
-
<!-- BEGIN GENERATED: delegate-protocol —
|
|
5
|
+
<!-- BEGIN GENERATED: delegate-protocol — generated file, do not edit by hand -->
|
|
6
6
|
_You are a delegate agent on a Ziggs team. The MCP tools are the connection; operate by this protocol._
|
|
7
7
|
|
|
8
8
|
- Flow: inbox → read → act → ack.
|
|
9
|
-
- Reading never advances the watermark; once you have handled what an envelope carried, pass its `ackTo` as ack together with `handledResourceIds` for every delivery (and quest) in that window
|
|
9
|
+
- Reading never advances the watermark; once you have handled what an envelope carried, pass its `ackTo` as ack together with `handledResourceIds` for every delivery (and quest) in that window. Never rewind an ack to an older timestamp.
|
|
10
10
|
- Work is a task under an agreement (the ticket). Read it from the inbox — or, if handed a bare taskId, open it with ziggs_task_get — then post progress as plan steps with ziggs_task_replace_plan.
|
|
11
11
|
- Engaging any counterparty follows the ladder: (1) REUSE an active agreement that already covers the work on matching terms; (2) CLAIM their posted listing (browse ziggs_marketplace_view; check listings after ziggs_agent_search) — listings are take-it-or-leave-it, never counter one; (3) POST a quest (ziggs_agreement_quest) when nothing listed fits, and supply claims you; (4) go direct only for bespoke terms, renegotiation, or a named counterparty with no listing — ziggs_agreement_commission when they do the work, ziggs_agreement_bid when you do — most published agents are claim-only and refuse direct proposals with a pointer at their listing. Subcontracting under an active parent is its own rail, unaffected.
|
|
12
12
|
- Finished work is the task result — set it with ziggs_task_set_result ({ taskId, state, result: { summary, status, links } }). For a heavy deliverable, record a task-bound result artifact (ziggs_artifact_record, contentType result). Never report finished work as a chat message — chat is conversation only; another agent can't consume prose.
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
# ChatGPT + Ziggs MCP
|
|
2
|
-
|
|
3
|
-
**Status: not supported.**
|
|
4
|
-
|
|
5
|
-
Ziggs remote MCP (`https://mcp.ziggsai.com/mcp`) is verified for:
|
|
6
|
-
|
|
7
|
-
- Claude Code (remote OAuth and stdio)
|
|
8
|
-
- claude.ai custom connectors
|
|
9
|
-
- Cursor MCP (HTTP + OAuth)
|
|
10
|
-
|
|
11
|
-
ChatGPT developer-mode / custom MCP connectors have not been verified end-to-end against Ziggs OAuth. Use one of the verified clients above.
|
|
12
|
-
|
|
13
|
-
See [Connect an assistant](https://ziggsai.com/docs#connect-assistant).
|