@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 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
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@joinquest/mcp-integration",
3
- "version": "0.1.1",
3
+ "version": "0.1.2",
4
4
  "description": "JoinQuest integration MCP server for game developer agents",
5
5
  "type": "module",
6
6
  "private": false,
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
  {