@joinquest/mcp-integration 0.1.1 → 0.1.2
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 +1 -0
- package/package.json +1 -1
- package/src/graphql.js +17 -0
- package/src/tools.js +45 -0
package/README.md
CHANGED
|
@@ -79,6 +79,7 @@ Maintainers: `./scripts/publish-joinquest-mcp.sh` (requires npm login + `@joinqu
|
|
|
79
79
|
| `joinquest_integration_get_discovery_prompt` | Agent interview script |
|
|
80
80
|
| `joinquest_integration_get_catalog_tag_taxonomy` | Valid tag IDs |
|
|
81
81
|
| `joinquest_integration_list_my_games` | Owner's games + visibility |
|
|
82
|
+
| `joinquest_integration_register_game` | Register a new game (confirm fields with developer first) |
|
|
82
83
|
| `joinquest_integration_get_game_checks` | Checklist + metadata |
|
|
83
84
|
| `joinquest_integration_run_game_checks` | Run manifest / provision / JWT suite |
|
|
84
85
|
| `joinquest_integration_update_game_metadata` | Save catalog copy + tags |
|
package/package.json
CHANGED
package/src/graphql.js
CHANGED
|
@@ -143,4 +143,21 @@ export const MUTATIONS = {
|
|
|
143
143
|
}
|
|
144
144
|
}
|
|
145
145
|
`,
|
|
146
|
+
registerMyGame: `
|
|
147
|
+
mutation RegisterMyGame($input: RegisterMyGameInput!) {
|
|
148
|
+
registerMyGame(input: $input) {
|
|
149
|
+
connected
|
|
150
|
+
connectError
|
|
151
|
+
webhookSecret
|
|
152
|
+
serviceToken
|
|
153
|
+
game {
|
|
154
|
+
id
|
|
155
|
+
slug
|
|
156
|
+
name
|
|
157
|
+
visibility
|
|
158
|
+
apiBaseUrl
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
`,
|
|
146
163
|
}
|
package/src/tools.js
CHANGED
|
@@ -92,6 +92,51 @@ export function registerJoinQuestIntegrationTools(server, config) {
|
|
|
92
92
|
},
|
|
93
93
|
)
|
|
94
94
|
|
|
95
|
+
server.registerTool(
|
|
96
|
+
'joinquest_integration_register_game',
|
|
97
|
+
{
|
|
98
|
+
description:
|
|
99
|
+
'Register a new game on JoinQuest for the authenticated developer. JoinQuest probes the public HTTPS apiBaseUrl (healthz + game-modes). Confirm field values with the developer before calling. Returns game id, visibility, serviceToken, webhookSecret, and connectError if the API is unreachable.',
|
|
100
|
+
inputSchema: z.object({
|
|
101
|
+
name: z.string().describe('Display name'),
|
|
102
|
+
slug: z.string().describe('Lowercase URL slug (unique on JoinQuest)'),
|
|
103
|
+
shortDescription: z.string().describe('Initial catalog card blurb (~1–2 sentences)'),
|
|
104
|
+
apiBaseUrl: z
|
|
105
|
+
.string()
|
|
106
|
+
.describe('Public HTTPS origin for the game API, e.g. https://mygame.example.com'),
|
|
107
|
+
contactEmail: z.string().describe('Email for review notifications'),
|
|
108
|
+
websiteUrl: z.string().optional().describe('Optional marketing or docs URL'),
|
|
109
|
+
communityUrl: z.string().optional().describe('Optional Discord or community URL'),
|
|
110
|
+
}),
|
|
111
|
+
},
|
|
112
|
+
async ({
|
|
113
|
+
name,
|
|
114
|
+
slug,
|
|
115
|
+
shortDescription,
|
|
116
|
+
apiBaseUrl,
|
|
117
|
+
contactEmail,
|
|
118
|
+
websiteUrl,
|
|
119
|
+
communityUrl,
|
|
120
|
+
}) => {
|
|
121
|
+
const input = {
|
|
122
|
+
name,
|
|
123
|
+
slug,
|
|
124
|
+
shortDescription,
|
|
125
|
+
apiBaseUrl,
|
|
126
|
+
contactEmail,
|
|
127
|
+
}
|
|
128
|
+
if (websiteUrl !== undefined) {
|
|
129
|
+
input.websiteUrl = websiteUrl
|
|
130
|
+
}
|
|
131
|
+
if (communityUrl !== undefined) {
|
|
132
|
+
input.communityUrl = communityUrl
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
const data = await gql(MUTATIONS.registerMyGame, { input })
|
|
136
|
+
return textResult(data.registerMyGame)
|
|
137
|
+
},
|
|
138
|
+
)
|
|
139
|
+
|
|
95
140
|
server.registerTool(
|
|
96
141
|
'joinquest_integration_get_game_checks',
|
|
97
142
|
{
|