@bridge_gpt/mcp-server 0.2.50 → 0.2.51

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.
@@ -50,11 +50,10 @@ const READ_ANNOTATIONS = {
50
50
  // ---------------------------------------------------------------------------
51
51
  // Input schemas
52
52
  // ---------------------------------------------------------------------------
53
- const OBJECT_TYPE_DISCOVERY_HINT = 'Known custom object type id (e.g. starting with "c_"). OCAPI cannot enumerate ' +
54
- "type IDs directly, but you can discover a candidate via system_object_list at " +
55
- "projection=\"full\" (distinct display_name + attribute_definition_count per " +
56
- "custom type) and confirm it by checking that this tool's returned attribute " +
57
- "count matches that row's attribute_definition_count.";
53
+ const OBJECT_TYPE_DISCOVERY_HINT = 'Known custom object type id (e.g. starting with "c_"). ' +
54
+ "Type ids aren't enumerable; find via system_object_list projection=full. " +
55
+ "Match by display_name + attribute_definition_count per custom type, then " +
56
+ "confirm this tool's returned attribute count matches that row's count.";
58
57
  const customObjectAttributesGetInput = z.object({
59
58
  object_type: z.string().describe(OBJECT_TYPE_DISCOVERY_HINT),
60
59
  projection: projectionInputFor("attribute_collection"),
@@ -139,20 +138,18 @@ function buildCustomObjectAttributeSearchHandler(gateDeps, getDocsDir) {
139
138
  export function registerSfccCustomObjectDefReadTools(registerTool, deps) {
140
139
  const { gateDeps, getDocsDir } = deps;
141
140
  registerTool("custom_object_definition_attributes_get", {
142
- description: "Retrieve attribute definitions for a KNOWN custom object type via " +
141
+ description: "Retrieve the FULL attribute-definition set for a KNOWN custom object type via " +
143
142
  "GET /custom_object_definitions/{type}/attribute_definitions " +
144
- "(default_value withheld). OCAPI cannot enumerate type IDs directly; " +
145
- "derive one via system_object_list (projection=full, attribute_definition_count), " +
146
- "confirm here. Type creation is v2 metadata-import only.",
143
+ "(default_value withheld). Type creation is v2 metadata-import only. " +
144
+ "Oversized output saved locally.",
147
145
  inputSchema: customObjectAttributesGetInput,
148
146
  annotations: READ_ANNOTATIONS,
149
147
  }, buildCustomObjectAttributesGetHandler(gateDeps, getDocsDir));
150
148
  registerTool("custom_object_definition_attribute_search", {
151
- description: "Search attribute definitions within a KNOWN custom object type via " +
149
+ description: "Filter the attribute-definition set within a KNOWN custom object type via " +
152
150
  "POST /custom_object_definitions/{type}/attribute_definition_search " +
153
- "(default_value withheld). OCAPI cannot enumerate type IDs directly; " +
154
- "derive one via system_object_list (projection=full, attribute_definition_count), " +
155
- "confirm here. Type creation is v2 metadata-import only.",
151
+ "(default_value withheld). Type creation is v2 metadata-import only. " +
152
+ "Oversized output saved locally.",
156
153
  inputSchema: customObjectAttributeSearchInput,
157
154
  annotations: READ_ANNOTATIONS,
158
155
  }, buildCustomObjectAttributeSearchHandler(gateDeps, getDocsDir));
@@ -226,15 +226,15 @@ export function registerSitePreferenceTools(registerTool, deps) {
226
226
  description: "List custom site preference group ids from the developer sandbox via " +
227
227
  "GET /system_object_definitions/SitePreferences/attribute_groups. Read-only; " +
228
228
  "use this to discover group ids before site_preference_get or site_preference_search. " +
229
- "Accepts optional `count` and `start` for paging. Oversized outputs are auto-saved locally.",
229
+ "Accepts optional `count` and `start` for paging. Oversized output saved locally.",
230
230
  inputSchema: sitePreferenceGroupListInput,
231
231
  annotations: READ_ANNOTATIONS,
232
232
  }, buildSitePreferenceGroupListHandler(gateDeps, getDocsDir));
233
233
  registerTool("site_preference_get", {
234
- description: "List preference IDENTIFIERS for a site preference group from the developer sandbox via a match-all " +
234
+ description: "List ALL preference ids in a group (match-all) from the developer sandbox via " +
235
235
  "POST /site_preferences/preference_groups/{group}/sandbox/preference_search. " +
236
- "Returns ids only, NOT values — 'unset' and 'empty string' are indistinguishable. " +
237
- "Read-only, sandbox-only. Optional start/count paging. Oversized payloads auto-saved locally.",
236
+ "Returns identifiers only, NOT values — 'unset' and 'empty string' are indistinguishable. " +
237
+ "Read-only, sandbox-only. Optional start/count paging. Oversized output saved locally.",
238
238
  inputSchema: sitePreferenceGetInput,
239
239
  annotations: READ_ANNOTATIONS,
240
240
  }, buildSitePreferenceGetHandler(gateDeps, getDocsDir));
@@ -243,7 +243,7 @@ export function registerSitePreferenceTools(registerTool, deps) {
243
243
  "POST /site_preferences/preference_groups/{group}/sandbox/preference_search. " +
244
244
  "Returns ids only — this endpoint does not expose values. Read-only; v1 sandbox only. " +
245
245
  "Pass a plain string for id-only text search or a structured OCAPI query. " +
246
- "Oversized results auto-saved locally.",
246
+ "Oversized output saved locally.",
247
247
  inputSchema: sitePreferenceSearchInput,
248
248
  annotations: READ_ANNOTATIONS,
249
249
  }, buildSitePreferenceSearchHandler(gateDeps, getDocsDir));
@@ -149,7 +149,7 @@ export function registerSystemObjectReadTools(registerTool, deps) {
149
149
  "GET /system_object_definitions. Read-only. " +
150
150
  "Accepts optional `count` and `start` for paging (OCAPI default pagination applies when omitted). " +
151
151
  "Returns ids only by default; pass projection=full for all fields. " +
152
- "Oversized outputs are auto-saved locally.",
152
+ "Oversized output saved locally.",
153
153
  inputSchema: systemObjectListInput,
154
154
  annotations: READ_ANNOTATIONS,
155
155
  }, buildSystemObjectListHandler(gateDeps, getDocsDir));
@@ -157,17 +157,17 @@ export function registerSystemObjectReadTools(registerTool, deps) {
157
157
  description: "Retrieve a system object type definition from the developer sandbox. Read-only. " +
158
158
  "GET /system_object_definitions/{type}. " +
159
159
  "Prefer system_object_attribute_search for targeted attribute lookups. " +
160
- "Oversized payloads are auto-saved locally.",
160
+ "Oversized output saved locally.",
161
161
  inputSchema: systemObjectGetInput,
162
162
  annotations: READ_ANNOTATIONS,
163
163
  }, buildSystemObjectGetHandler(gateDeps, getDocsDir));
164
164
  registerTool("system_object_attribute_search", {
165
165
  description: "Search attribute definitions for a system object type. Read-only. " +
166
166
  "POST /system_object_definitions/{type}/attribute_definition_search. " +
167
- "Use for targeted c_ attribute lookups; returns each attribute's schema " +
167
+ "Use for targeted attribute lookups; returns each attribute's schema " +
168
168
  "by default (default_value withheld). " +
169
169
  "Pass a plain string for text search or a structured OCAPI query. " +
170
- "Oversized results auto-saved locally.",
170
+ "Oversized output saved locally.",
171
171
  inputSchema: systemObjectAttributeSearchInput,
172
172
  annotations: READ_ANNOTATIONS,
173
173
  }, buildSystemObjectAttributeSearchHandler(gateDeps, getDocsDir));
@@ -37,9 +37,8 @@ const INSTANCE_DESCRIBE = "OCAPI instance context. Omit or pass \"sandbox\"; any
37
37
  const createCustomObjectAttributeDefinitionInput = z.object({
38
38
  object_type: z
39
39
  .string()
40
- .describe('Known custom object type identifier (must already exist). OCAPI cannot ' +
41
- "create types, and cannot enumerate type IDs directly only attribute " +
42
- "definitions on a known type."),
40
+ .describe('Known custom object type identifier (must already exist; OCAPI cannot create ' +
41
+ "types). Type ids aren't enumerable; find via system_object_list projection=full."),
43
42
  attribute_id: z
44
43
  .string()
45
44
  .describe("URL attribute-definition id. If the body also carries `id`, it must match."),
@@ -49,7 +48,8 @@ const createCustomObjectAttributeDefinitionInput = z.object({
49
48
  const updateCustomObjectAttributeDefinitionInput = z.object({
50
49
  object_type: z
51
50
  .string()
52
- .describe("Known custom object type identifier (must already exist). OCAPI cannot create types."),
51
+ .describe("Known custom object type identifier (must already exist; OCAPI cannot create " +
52
+ "types). Type ids aren't enumerable; find via system_object_list projection=full."),
53
53
  attribute_id: z.string().describe("URL attribute-definition id to update."),
54
54
  patch: objectAttributeDefinitionPatchBodySchema.describe("Partial ObjectAttributeDefinition body; must change at least one field."),
55
55
  instance: z.string().optional().describe(INSTANCE_DESCRIBE),
@@ -134,15 +134,15 @@ export function registerSfccCustomObjectDefWriteTools(registerTool, deps) {
134
134
  registerTool("custom_object_definition_attribute_create", {
135
135
  description: "Create an attribute definition on a KNOWN custom object type via " +
136
136
  "PUT /custom_object_definitions/{type}/attribute_definitions/{id}. Sandbox-only, " +
137
- "destructive; the type must pre-exist (OCAPI cannot create types). Echoes paste-ready " +
138
- "grant JSON on 403.",
137
+ "destructive; the type must pre-exist (OCAPI cannot create types). " +
138
+ "403 → paste-ready grant JSON.",
139
139
  inputSchema: createCustomObjectAttributeDefinitionInput,
140
140
  annotations: WRITE_ANNOTATIONS,
141
141
  }, buildCreateCustomObjectAttributeDefinitionHandler(gateDeps));
142
142
  registerTool("custom_object_definition_attribute_update", {
143
143
  description: "Update an attribute definition on a KNOWN custom object type via an ETag-conditional " +
144
144
  "PATCH /custom_object_definitions/{type}/attribute_definitions/{id}. Sandbox-only, " +
145
- "destructive; surfaces 409/412 conflicts and echoes grant JSON on 403.",
145
+ "destructive; surfaces 409/412 conflicts. 403 paste-ready grant JSON.",
146
146
  inputSchema: updateCustomObjectAttributeDefinitionInput,
147
147
  annotations: WRITE_ANNOTATIONS,
148
148
  }, buildUpdateCustomObjectAttributeDefinitionHandler(gateDeps));
@@ -92,9 +92,10 @@ export const SITE_PREFERENCE_WRITE_TOOL_NAMES = ["site_preference_values_set"];
92
92
  export function registerSitePreferenceWriteTools(registerTool, deps) {
93
93
  const { gateDeps } = deps;
94
94
  registerTool("site_preference_values_set", {
95
- description: "Set custom site-preference VALUES via PATCH /site_preferences/preference_groups/{group}/sandbox. " +
96
- "Sandbox-only, destructive; body is a flat map of c_-prefixed ids to string/number/boolean/string[] " +
97
- "values. A bad group returns 404 CustomPreferenceGroupNotFoundException; echoes grant JSON on 403.",
95
+ description: "Set site-preference VALUES via PATCH /site_preferences/preference_groups/{group}/sandbox. " +
96
+ "Preference must already be defined via custom_preference_definition_create. Sandbox-only, " +
97
+ "destructive; flat c_-prefixed id→value map (string/number/boolean/string[]). " +
98
+ "Bad group → 404 CustomPreferenceGroupNotFoundException. 403 → paste-ready grant JSON.",
98
99
  inputSchema: sitePreferenceValuesSetInput,
99
100
  annotations: WRITE_ANNOTATIONS,
100
101
  }, buildSitePreferenceValuesSetHandler(gateDeps));
@@ -276,42 +276,43 @@ export function registerSystemObjectWriteTools(registerTool, deps) {
276
276
  registerTool("system_object_attribute_definition_create", {
277
277
  description: "Create a system-object attribute definition (sandbox-only, destructive). " +
278
278
  "PUT .../attribute_definitions/{id}; body id must equal URL id and system must be false. " +
279
- "Returns 201. HTTP 403 echoes the OCAPI write-grant JSON.",
279
+ "Returns 201. 403 paste-ready grant JSON.",
280
280
  inputSchema: createAttributeDefinitionInput,
281
281
  annotations: WRITE_ANNOTATIONS,
282
282
  }, buildCreateAttributeDefinitionHandler(gateDeps));
283
283
  registerTool("system_object_attribute_definition_update", {
284
284
  description: "Update a system-object attribute definition (sandbox-only, destructive). " +
285
285
  "PATCH .../attribute_definitions/{id} via the ETag GET-then-If-Match round trip. " +
286
- "Returns 200; surfaces 409/412 on ETag conflicts. HTTP 403 echoes the write-grant JSON.",
286
+ "Returns 200; surfaces 409/412 on ETag conflicts. 403 paste-ready grant JSON.",
287
287
  inputSchema: updateAttributeDefinitionInput,
288
288
  annotations: WRITE_ANNOTATIONS,
289
289
  }, buildUpdateAttributeDefinitionHandler(gateDeps));
290
290
  registerTool("system_object_attribute_group_create", {
291
291
  description: "Create a system-object attribute group (sandbox-only, destructive). " +
292
292
  "PUT .../attribute_groups/{id} with a minimal body (display_name + internal). " +
293
- "HTTP 403 echoes the OCAPI write-grant JSON.",
293
+ "403 paste-ready grant JSON.",
294
294
  inputSchema: createAttributeGroupInput,
295
295
  annotations: WRITE_ANNOTATIONS,
296
296
  }, buildCreateAttributeGroupHandler(gateDeps));
297
297
  registerTool("system_object_attribute_group_update", {
298
298
  description: "Update a system-object attribute group (sandbox-only, destructive). " +
299
299
  "PATCH .../attribute_groups/{id} via the ETag round trip (display_name and/or internal). " +
300
- "HTTP 403 echoes the OCAPI write-grant JSON.",
300
+ "403 paste-ready grant JSON.",
301
301
  inputSchema: updateAttributeGroupInput,
302
302
  annotations: WRITE_ANNOTATIONS,
303
303
  }, buildUpdateAttributeGroupHandler(gateDeps));
304
304
  registerTool("system_object_attribute_assign_to_group", {
305
305
  description: "Assign an attribute definition to an attribute group (sandbox-only, destructive). " +
306
306
  "PUT .../attribute_groups/{group}/attribute_definitions/{def} with an empty body. " +
307
- "HTTP 403 echoes the OCAPI write-grant JSON.",
307
+ "403 paste-ready grant JSON.",
308
308
  inputSchema: assignAttributeToGroupInput,
309
309
  annotations: WRITE_ANNOTATIONS,
310
310
  }, buildAssignAttributeToGroupHandler(gateDeps));
311
311
  registerTool("custom_preference_definition_create", {
312
312
  description: "Create a custom preference definition (sandbox-only, destructive). " +
313
313
  "PUT .../{SitePreferences|OrganizationPreferences}/attribute_definitions/{id}. " +
314
- "Booleans resolve to null unless default_value is set. HTTP 403 echoes the write-grant JSON.",
314
+ "Booleans resolve to null unless default_value is set. After defining the schema, " +
315
+ "set its value with site_preference_values_set. 403 → paste-ready grant JSON.",
315
316
  inputSchema: createCustomPreferenceDefinitionInput,
316
317
  annotations: WRITE_ANNOTATIONS,
317
318
  }, buildCreateCustomPreferenceDefinitionHandler(gateDeps));
@@ -1,4 +1,4 @@
1
1
  // AUTO-GENERATED — do not edit manually. Regenerate with: npm run build
2
- export const VERSION = "0.2.50";
3
- export const BUILD_COMMIT = "4b5d3e65b2a3";
4
- export const LAUNCHER_ARGS = ["-y", "--prefer-offline", "@bridge_gpt/mcp-server@0.2.50", "serve"];
2
+ export const VERSION = "0.2.51";
3
+ export const BUILD_COMMIT = "3cdbee6cfd9b";
4
+ export const LAUNCHER_ARGS = ["-y", "--prefer-offline", "@bridge_gpt/mcp-server@0.2.51", "serve"];
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@bridge_gpt/mcp-server",
3
- "version": "0.2.50",
3
+ "version": "0.2.51",
4
4
  "description": "Bridge API MCP server — exposes Jira endpoints as MCP tools for Claude Code agents",
5
5
  "license": "MIT",
6
6
  "type": "module",
@@ -26,6 +26,7 @@
26
26
  "build": "node scripts/bundle-version.js && node scripts/sync-readme-host-examples.js --check && node scripts/validate-packaged-command-references.js && node scripts/bundle-readme.js && node scripts/bundle-pipelines.js && node scripts/bundle-commands.js && node scripts/bundle-agents.js && node scripts/bundle-docs.js && tsc && node scripts/sync-agent-mirrors.js && node scripts/bundle-esbuild.js",
27
27
  "version": "node scripts/sync-readme-host-examples.js --write && git add -- README.md package.json package-lock.json && git commit -m \"chore(mcp-server): release $npm_package_version\" && git tag \"mcp-server/v$npm_package_version\"",
28
28
  "check:version-generated": "node scripts/bundle-version.js && node scripts/check-version-generated.js",
29
+ "assert:release-identity": "node scripts/assert-release-identity.js",
29
30
  "postbuild": "node scripts/prepend-shebang.cjs",
30
31
  "start": "node build/index.js",
31
32
  "test": "npm run test:normal && npm run test:module-mocks",
@@ -34,7 +35,7 @@
34
35
  "test:integration": "node scripts/run-integration-tests.js",
35
36
  "test:smoke": "node --test build/integration/packaged-cli-smoke.test.js",
36
37
  "canary:agent-capabilities": "npm run build && node scripts/agent-capabilities-canary.mjs",
37
- "prepublishOnly": "node scripts/bundle-assets.js && npm run build && node scripts/verify-shebang.cjs"
38
+ "prepublishOnly": "node scripts/bundle-assets.js && npm run build && node scripts/verify-shebang.cjs && npm run assert:release-identity"
38
39
  },
39
40
  "dependencies": {
40
41
  "@modelcontextprotocol/sdk": "^1.29.0",
@@ -45,6 +45,11 @@
45
45
  "instruction_file": "explore-epic-subtasks.md",
46
46
  "description": "Perform focused exploration for each sub-task"
47
47
  },
48
+ {
49
+ "type": "agent_task",
50
+ "instruction_file": "assess-conductor-eligibility.md",
51
+ "description": "Assessing conductor eligibility"
52
+ },
48
53
  {
49
54
  "type": "agent_task",
50
55
  "instruction_file": "write-epic-summary.md",