mcp-grampsweb 1.0.2 → 1.1.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.
@@ -3,8 +3,9 @@
3
3
  */
4
4
  import { z } from "zod";
5
5
  import { grampsClient } from "../client.js";
6
- import { API_ENDPOINTS } from "../constants.js";
6
+ import { API_ENDPOINTS, MESSAGES } from "../constants.js";
7
7
  import { formatPersonName } from "../utils/formatting.js";
8
+ import { formatToolResponse } from "../utils/response.js";
8
9
  // Schema for ancestor/descendant queries
9
10
  const lineageSchema = z.object({
10
11
  handle: z.string().describe("Person handle to start from"),
@@ -77,20 +78,32 @@ export async function grampsTreeStats() {
77
78
  }
78
79
  }
79
80
  }
80
- const lines = [
81
- "Family Tree Statistics:",
82
- "",
83
- ` People: ${stats.people.toLocaleString()}`,
84
- ` Families: ${stats.families.toLocaleString()}`,
85
- ` Events: ${stats.events.toLocaleString()}`,
86
- ` Places: ${stats.places.toLocaleString()}`,
87
- ` Sources: ${stats.sources.toLocaleString()}`,
88
- ` Citations: ${stats.citations.toLocaleString()}`,
89
- ` Repositories: ${stats.repositories.toLocaleString()}`,
90
- ` Media: ${stats.media.toLocaleString()}`,
91
- ` Notes: ${stats.notes.toLocaleString()}`,
92
- ];
93
- return lines.join("\n");
81
+ const totalRecords = Object.values(stats).reduce((a, b) => a + b, 0);
82
+ if (totalRecords === 0) {
83
+ return formatToolResponse({
84
+ status: "empty",
85
+ summary: MESSAGES.EMPTY_TREE,
86
+ details: "Use gramps_create_person to add your first family member.",
87
+ });
88
+ }
89
+ return formatToolResponse({
90
+ status: "success",
91
+ summary: `Family tree contains ${totalRecords.toLocaleString()} total records`,
92
+ data: {
93
+ people: stats.people,
94
+ families: stats.families,
95
+ events: stats.events,
96
+ places: stats.places,
97
+ sources: stats.sources,
98
+ citations: stats.citations,
99
+ repositories: stats.repositories,
100
+ media: stats.media,
101
+ notes: stats.notes,
102
+ },
103
+ details: stats.people > 0
104
+ ? "Use gramps_search or gramps_find to explore specific records."
105
+ : undefined,
106
+ });
94
107
  }
95
108
  /**
96
109
  * Get ancestors of a person
@@ -149,9 +162,12 @@ export async function grampsGetAncestors(params) {
149
162
  }
150
163
  // Format output
151
164
  if (ancestors.length === 0) {
152
- return "No ancestors found.";
165
+ return formatToolResponse({
166
+ status: "empty",
167
+ summary: "No ancestors found for this person",
168
+ details: "The person may not have parent family links. Check the person's parent_family_list.",
169
+ });
153
170
  }
154
- const lines = [`Found ${ancestors.length} ancestor(s) up to ${generations} generation(s):`, ""];
155
171
  // Group by generation
156
172
  const byGen = new Map();
157
173
  for (const a of ancestors) {
@@ -160,17 +176,28 @@ export async function grampsGetAncestors(params) {
160
176
  }
161
177
  byGen.get(a.generation).push(a);
162
178
  }
179
+ const generationsData = {};
163
180
  for (let g = 0; g <= generations; g++) {
164
181
  const genAncestors = byGen.get(g);
165
182
  if (genAncestors && genAncestors.length > 0) {
166
- lines.push(`Generation ${g}:`);
167
- for (const a of genAncestors) {
168
- lines.push(` ${a.relationship}: ${formatPersonName(a.person.primary_name)} (${a.person.gramps_id})`);
169
- }
170
- lines.push("");
183
+ generationsData[`generation_${g}`] = genAncestors.map((a) => ({
184
+ relationship: a.relationship,
185
+ name: formatPersonName(a.person.primary_name),
186
+ gramps_id: a.person.gramps_id,
187
+ handle: a.person.handle,
188
+ }));
171
189
  }
172
190
  }
173
- return lines.join("\n");
191
+ return formatToolResponse({
192
+ status: "success",
193
+ summary: `Found ${ancestors.length} ancestor(s) across ${generations} generation(s)`,
194
+ data: {
195
+ total_count: ancestors.length,
196
+ generations_retrieved: generations,
197
+ ancestors: generationsData,
198
+ },
199
+ details: "Use handles with gramps_get to retrieve full details of any ancestor.",
200
+ });
174
201
  }
175
202
  /**
176
203
  * Get descendants of a person
@@ -225,12 +252,12 @@ export async function grampsGetDescendants(params) {
225
252
  }
226
253
  // Format output
227
254
  if (descendants.length === 0) {
228
- return "No descendants found.";
255
+ return formatToolResponse({
256
+ status: "empty",
257
+ summary: "No descendants found for this person",
258
+ details: "The person may not have family links. Check the person's family_list.",
259
+ });
229
260
  }
230
- const lines = [
231
- `Found ${descendants.length} descendant(s) up to ${generations} generation(s):`,
232
- "",
233
- ];
234
261
  // Group by generation
235
262
  const byGen = new Map();
236
263
  for (const d of descendants) {
@@ -239,17 +266,28 @@ export async function grampsGetDescendants(params) {
239
266
  }
240
267
  byGen.get(d.generation).push(d);
241
268
  }
269
+ const generationsData = {};
242
270
  for (let g = 0; g <= generations; g++) {
243
271
  const genDescendants = byGen.get(g);
244
272
  if (genDescendants && genDescendants.length > 0) {
245
- lines.push(`Generation ${g}:`);
246
- for (const d of genDescendants) {
247
- lines.push(` ${d.relationship}: ${formatPersonName(d.person.primary_name)} (${d.person.gramps_id})`);
248
- }
249
- lines.push("");
273
+ generationsData[`generation_${g}`] = genDescendants.map((d) => ({
274
+ relationship: d.relationship,
275
+ name: formatPersonName(d.person.primary_name),
276
+ gramps_id: d.person.gramps_id,
277
+ handle: d.person.handle,
278
+ }));
250
279
  }
251
280
  }
252
- return lines.join("\n");
281
+ return formatToolResponse({
282
+ status: "success",
283
+ summary: `Found ${descendants.length} descendant(s) across ${generations} generation(s)`,
284
+ data: {
285
+ total_count: descendants.length,
286
+ generations_retrieved: generations,
287
+ descendants: generationsData,
288
+ },
289
+ details: "Use handles with gramps_get to retrieve full details of any descendant.",
290
+ });
253
291
  }
254
292
  /**
255
293
  * Get recent changes
@@ -262,15 +300,31 @@ export async function grampsRecentChanges(params) {
262
300
  pagesize,
263
301
  });
264
302
  if (!response || response.length === 0) {
265
- return "No recent changes found.";
303
+ return formatToolResponse({
304
+ status: "empty",
305
+ summary: "No recent changes found",
306
+ details: "The tree may be new or have no activity tracking.",
307
+ });
266
308
  }
267
- const lines = [`Recent Changes (page ${page}):`, ""];
268
- for (const change of response) {
309
+ const changes = response.map((change) => {
269
310
  const date = new Date(change.change * 1000);
270
- const dateStr = date.toISOString().replace("T", " ").substring(0, 19);
271
- lines.push(`[${dateStr}] ${change.object_type}: ${change.gramps_id}`);
272
- }
273
- return lines.join("\n");
311
+ return {
312
+ timestamp: date.toISOString(),
313
+ type: change.object_type,
314
+ gramps_id: change.gramps_id,
315
+ handle: change.handle,
316
+ };
317
+ });
318
+ return formatToolResponse({
319
+ status: "success",
320
+ summary: `Found ${changes.length} recent change(s)`,
321
+ data: {
322
+ page,
323
+ count: changes.length,
324
+ changes,
325
+ },
326
+ details: "Use handles with gramps_get to see full details of changed records.",
327
+ });
274
328
  }
275
329
  catch {
276
330
  // Fallback: try fetching from each entity type and sorting by change time
@@ -297,23 +351,41 @@ export async function grampsRecentChanges(params) {
297
351
  allEntities.sort((a, b) => b.change - a.change);
298
352
  const topEntities = allEntities.slice(0, pagesize);
299
353
  if (topEntities.length === 0) {
300
- return "No recent changes found.";
354
+ return formatToolResponse({
355
+ status: "empty",
356
+ summary: "No recent changes found",
357
+ details: "The tree may be new or have no activity tracking.",
358
+ });
301
359
  }
302
- const lines = [`Recent Changes (page ${page}):`, ""];
303
- for (const item of topEntities) {
360
+ const changes = topEntities.map((item) => {
304
361
  const date = new Date(item.change * 1000);
305
- const dateStr = date.toISOString().replace("T", " ").substring(0, 19);
306
- lines.push(`[${dateStr}] ${item.type}: ${item.entity.gramps_id}`);
307
- }
308
- return lines.join("\n");
362
+ return {
363
+ timestamp: date.toISOString(),
364
+ type: item.type,
365
+ gramps_id: item.entity.gramps_id,
366
+ handle: item.entity.handle,
367
+ };
368
+ });
369
+ return formatToolResponse({
370
+ status: "success",
371
+ summary: `Found ${changes.length} recent change(s)`,
372
+ data: {
373
+ page,
374
+ count: changes.length,
375
+ changes,
376
+ },
377
+ details: "Use handles with gramps_get to see full details of changed records.",
378
+ });
309
379
  }
310
380
  }
311
381
  // Tool definitions for MCP
312
382
  export const analysisTools = {
313
383
  gramps_tree_stats: {
314
384
  name: "gramps_tree_stats",
315
- description: "Get statistics about the family tree including counts of people, " +
316
- "families, events, places, sources, and other record types.",
385
+ description: "Get database overview with record counts by type. " +
386
+ "USE FOR: Understanding tree size, checking if data exists. " +
387
+ "RETURNS: Counts of people, families, events, places, sources, etc. " +
388
+ "START HERE: Good first call to understand the tree before searching.",
317
389
  inputSchema: {
318
390
  type: "object",
319
391
  properties: {},
@@ -323,8 +395,10 @@ export const analysisTools = {
323
395
  },
324
396
  gramps_get_ancestors: {
325
397
  name: "gramps_get_ancestors",
326
- description: "Find ancestors of a person going back a specified number of generations. " +
327
- "Returns parents, grandparents, great-grandparents, etc.",
398
+ description: "Traverse ancestry tree upward from a person. " +
399
+ "REQUIRED: handle of starting person (from search results). " +
400
+ "OPTIONAL: generations (1-10, default 3). " +
401
+ "RETURNS: Parents, grandparents, great-grandparents with handles.",
328
402
  inputSchema: {
329
403
  type: "object",
330
404
  properties: {
@@ -344,8 +418,10 @@ export const analysisTools = {
344
418
  },
345
419
  gramps_get_descendants: {
346
420
  name: "gramps_get_descendants",
347
- description: "Find descendants of a person going forward a specified number of generations. " +
348
- "Returns children, grandchildren, great-grandchildren, etc.",
421
+ description: "Traverse descendant tree downward from a person. " +
422
+ "REQUIRED: handle of starting person (from search results). " +
423
+ "OPTIONAL: generations (1-10, default 3). " +
424
+ "RETURNS: Children, grandchildren, great-grandchildren with handles.",
349
425
  inputSchema: {
350
426
  type: "object",
351
427
  properties: {
@@ -365,8 +441,10 @@ export const analysisTools = {
365
441
  },
366
442
  gramps_recent_changes: {
367
443
  name: "gramps_recent_changes",
368
- description: "Get recently modified records in the family tree. " +
369
- "Useful for seeing what has been updated or added recently.",
444
+ description: "List recently added or modified records. " +
445
+ "USE FOR: Seeing latest tree activity, finding newly added records. " +
446
+ "OPTIONAL: page, pagesize for pagination. " +
447
+ "RETURNS: Timestamped list of changes with handles.",
370
448
  inputSchema: {
371
449
  type: "object",
372
450
  properties: {
@@ -1 +1 @@
1
- {"version":3,"file":"analysis.js","sourceRoot":"","sources":["../../src/tools/analysis.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"analysis.js","sourceRoot":"","sources":["../../src/tools/analysis.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"create.d.ts","sourceRoot":"","sources":["../../src/tools/create.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,OAAO,EACL,kBAAkB,EAClB,kBAAkB,EAClB,iBAAiB,EACjB,iBAAiB,EACjB,kBAAkB,EAClB,oBAAoB,EACpB,gBAAgB,EAChB,iBAAiB,EACjB,sBAAsB,EACvB,MAAM,wBAAwB,CAAC;AAgBhC;;GAEG;AACH,wBAAsB,kBAAkB,CACtC,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,GACzC,OAAO,CAAC,MAAM,CAAC,CAqCjB;AAED;;GAEG;AACH,wBAAsB,kBAAkB,CACtC,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,GACzC,OAAO,CAAC,MAAM,CAAC,CAiCjB;AAED;;GAEG;AACH,wBAAsB,iBAAiB,CACrC,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,GACxC,OAAO,CAAC,MAAM,CAAC,CA0BjB;AAED;;GAEG;AACH,wBAAsB,iBAAiB,CACrC,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,GACxC,OAAO,CAAC,MAAM,CAAC,CA8BjB;AAED;;GAEG;AACH,wBAAsB,kBAAkB,CACtC,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,GACzC,OAAO,CAAC,MAAM,CAAC,CAyBjB;AAED;;GAEG;AACH,wBAAsB,oBAAoB,CACxC,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,GAC3C,OAAO,CAAC,MAAM,CAAC,CAqBjB;AAED;;GAEG;AACH,wBAAsB,gBAAgB,CACpC,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,gBAAgB,CAAC,GACvC,OAAO,CAAC,MAAM,CAAC,CAkBjB;AAED;;GAEG;AACH,wBAAsB,iBAAiB,CACrC,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,GACxC,OAAO,CAAC,MAAM,CAAC,CAyBjB;AAED;;GAEG;AACH,wBAAsB,sBAAsB,CAC1C,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,sBAAsB,CAAC,GAC7C,OAAO,CAAC,MAAM,CAAC,CAuBjB;AAGD,eAAO,MAAM,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAyTvB,CAAC"}
1
+ {"version":3,"file":"create.d.ts","sourceRoot":"","sources":["../../src/tools/create.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,OAAO,EACL,kBAAkB,EAClB,kBAAkB,EAClB,iBAAiB,EACjB,iBAAiB,EACjB,kBAAkB,EAClB,oBAAoB,EACpB,gBAAgB,EAChB,iBAAiB,EACjB,sBAAsB,EACvB,MAAM,wBAAwB,CAAC;AAkBhC;;GAEG;AACH,wBAAsB,kBAAkB,CACtC,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,GACzC,OAAO,CAAC,MAAM,CAAC,CAyDjB;AAED;;GAEG;AACH,wBAAsB,kBAAkB,CACtC,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,GACzC,OAAO,CAAC,MAAM,CAAC,CAqDjB;AAED;;GAEG;AACH,wBAAsB,iBAAiB,CACrC,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,GACxC,OAAO,CAAC,MAAM,CAAC,CAuCjB;AAED;;GAEG;AACH,wBAAsB,iBAAiB,CACrC,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,GACxC,OAAO,CAAC,MAAM,CAAC,CA4CjB;AAED;;GAEG;AACH,wBAAsB,kBAAkB,CACtC,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,GACzC,OAAO,CAAC,MAAM,CAAC,CAqCjB;AAED;;GAEG;AACH,wBAAsB,oBAAoB,CACxC,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,GAC3C,OAAO,CAAC,MAAM,CAAC,CAyCjB;AAED;;GAEG;AACH,wBAAsB,gBAAgB,CACpC,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,gBAAgB,CAAC,GACvC,OAAO,CAAC,MAAM,CAAC,CA+BjB;AAED;;GAEG;AACH,wBAAsB,iBAAiB,CACrC,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,GACxC,OAAO,CAAC,MAAM,CAAC,CAuCjB;AAED;;GAEG;AACH,wBAAsB,sBAAsB,CAC1C,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,sBAAsB,CAAC,GAC7C,OAAO,CAAC,MAAM,CAAC,CAkCjB;AAGD,eAAO,MAAM,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA2UvB,CAAC"}
@@ -4,6 +4,8 @@
4
4
  import { grampsClient } from "../client.js";
5
5
  import { API_ENDPOINTS } from "../constants.js";
6
6
  import { createPersonSchema, createFamilySchema, createEventSchema, createPlaceSchema, createSourceSchema, createCitationSchema, createNoteSchema, createMediaSchema, createRepositorySchema, } from "../schemas/entities.js";
7
+ import { formatCreatedEntity } from "../utils/response.js";
8
+ import { formatPersonName } from "../utils/formatting.js";
7
9
  // Gender string to number mapping
8
10
  function mapGender(gender) {
9
11
  if (!gender)
@@ -51,7 +53,19 @@ export async function grampsCreatePerson(params) {
51
53
  private: validated.private,
52
54
  };
53
55
  const response = await grampsClient.post(API_ENDPOINTS.PEOPLE, person);
54
- return `Created person: ${response.gramps_id} (handle: ${response.handle})`;
56
+ const genderMap = {
57
+ 0: "female",
58
+ 1: "male",
59
+ 2: "unknown",
60
+ };
61
+ const mappedGender = mapGender(validated.gender);
62
+ const genderStr = mappedGender !== undefined ? genderMap[mappedGender] : "unknown";
63
+ return formatCreatedEntity("person", formatPersonName(validated.primary_name), {
64
+ handle: response.handle,
65
+ gramps_id: response.gramps_id,
66
+ name: formatPersonName(validated.primary_name),
67
+ gender: genderStr,
68
+ }, `Use handle "${response.handle}" to link this person to families or events with gramps_create_family.`);
55
69
  }
56
70
  /**
57
71
  * Create a family
@@ -83,7 +97,23 @@ export async function grampsCreateFamily(params) {
83
97
  private: validated.private,
84
98
  };
85
99
  const response = await grampsClient.post(API_ENDPOINTS.FAMILIES, family);
86
- return `Created family: ${response.gramps_id} (handle: ${response.handle})`;
100
+ const members = [];
101
+ if (validated.father_handle)
102
+ members.push("father");
103
+ if (validated.mother_handle)
104
+ members.push("mother");
105
+ if (validated.child_ref_list?.length)
106
+ members.push(`${validated.child_ref_list.length} child(ren)`);
107
+ return formatCreatedEntity("family", response.gramps_id, {
108
+ handle: response.handle,
109
+ gramps_id: response.gramps_id,
110
+ father_handle: validated.father_handle || null,
111
+ mother_handle: validated.mother_handle || null,
112
+ children_count: validated.child_ref_list?.length || 0,
113
+ type: validated.type || "Unknown",
114
+ }, members.length > 0
115
+ ? `Family links ${members.join(", ")}. Add marriage/events with gramps_create_event.`
116
+ : "Add family members by updating with person handles.");
87
117
  }
88
118
  /**
89
119
  * Create an event
@@ -108,7 +138,14 @@ export async function grampsCreateEvent(params) {
108
138
  private: validated.private,
109
139
  };
110
140
  const response = await grampsClient.post(API_ENDPOINTS.EVENTS, event);
111
- return `Created event: ${response.gramps_id} (handle: ${response.handle})`;
141
+ return formatCreatedEntity("event", `${validated.type} (${response.gramps_id})`, {
142
+ handle: response.handle,
143
+ gramps_id: response.gramps_id,
144
+ type: validated.type,
145
+ date: validated.date || null,
146
+ place_handle: validated.place || null,
147
+ description: validated.description || null,
148
+ }, `Link this event to a person or family using event_ref_list with handle "${response.handle}".`);
112
149
  }
113
150
  /**
114
151
  * Create a place
@@ -137,7 +174,14 @@ export async function grampsCreatePlace(params) {
137
174
  private: validated.private,
138
175
  };
139
176
  const response = await grampsClient.post(API_ENDPOINTS.PLACES, place);
140
- return `Created place: ${response.gramps_id} (handle: ${response.handle})`;
177
+ const placeName = validated.name?.value || validated.title || response.gramps_id;
178
+ return formatCreatedEntity("place", placeName, {
179
+ handle: response.handle,
180
+ gramps_id: response.gramps_id,
181
+ name: placeName,
182
+ type: validated.place_type || null,
183
+ coordinates: validated.lat && validated.long ? { lat: validated.lat, long: validated.long } : null,
184
+ }, `Use handle "${response.handle}" when creating events to link them to this place.`);
141
185
  }
142
186
  /**
143
187
  * Create a source
@@ -161,7 +205,13 @@ export async function grampsCreateSource(params) {
161
205
  private: validated.private,
162
206
  };
163
207
  const response = await grampsClient.post(API_ENDPOINTS.SOURCES, source);
164
- return `Created source: ${response.gramps_id} (handle: ${response.handle})`;
208
+ return formatCreatedEntity("source", validated.title, {
209
+ handle: response.handle,
210
+ gramps_id: response.gramps_id,
211
+ title: validated.title,
212
+ author: validated.author || null,
213
+ publication: validated.pubinfo || null,
214
+ }, `Create citations referencing this source with gramps_create_citation using source_handle "${response.handle}".`);
165
215
  }
166
216
  /**
167
217
  * Create a citation
@@ -181,7 +231,20 @@ export async function grampsCreateCitation(params) {
181
231
  private: validated.private,
182
232
  };
183
233
  const response = await grampsClient.post(API_ENDPOINTS.CITATIONS, citation);
184
- return `Created citation: ${response.gramps_id} (handle: ${response.handle})`;
234
+ const confidenceMap = {
235
+ 0: "Very Low",
236
+ 1: "Low",
237
+ 2: "Normal",
238
+ 3: "High",
239
+ 4: "Very High",
240
+ };
241
+ return formatCreatedEntity("citation", response.gramps_id, {
242
+ handle: response.handle,
243
+ gramps_id: response.gramps_id,
244
+ source_handle: validated.source_handle,
245
+ page: validated.page || null,
246
+ confidence: validated.confidence !== undefined ? confidenceMap[validated.confidence] || "Normal" : "Normal",
247
+ }, `Add this citation to entities using citation_list with handle "${response.handle}".`);
185
248
  }
186
249
  /**
187
250
  * Create a note
@@ -198,7 +261,13 @@ export async function grampsCreateNote(params) {
198
261
  private: validated.private,
199
262
  };
200
263
  const response = await grampsClient.post(API_ENDPOINTS.NOTES, note);
201
- return `Created note: ${response.gramps_id} (handle: ${response.handle})`;
264
+ const preview = validated.text.length > 50 ? validated.text.substring(0, 50) + "..." : validated.text;
265
+ return formatCreatedEntity("note", response.gramps_id, {
266
+ handle: response.handle,
267
+ gramps_id: response.gramps_id,
268
+ type: validated.type || "General",
269
+ preview,
270
+ }, `Attach this note to entities using note_list with handle "${response.handle}".`);
202
271
  }
203
272
  /**
204
273
  * Create a media object
@@ -222,7 +291,14 @@ export async function grampsCreateMedia(params) {
222
291
  private: validated.private,
223
292
  };
224
293
  const response = await grampsClient.post(API_ENDPOINTS.MEDIA, media);
225
- return `Created media: ${response.gramps_id} (handle: ${response.handle})`;
294
+ const displayName = validated.desc || validated.path;
295
+ return formatCreatedEntity("media", displayName, {
296
+ handle: response.handle,
297
+ gramps_id: response.gramps_id,
298
+ path: validated.path,
299
+ mime_type: validated.mime || null,
300
+ description: validated.desc || null,
301
+ }, `Link this media to entities using media_list with handle "${response.handle}".`);
226
302
  }
227
303
  /**
228
304
  * Create a repository
@@ -244,14 +320,21 @@ export async function grampsCreateRepository(params) {
244
320
  private: validated.private,
245
321
  };
246
322
  const response = await grampsClient.post(API_ENDPOINTS.REPOSITORIES, repository);
247
- return `Created repository: ${response.gramps_id} (handle: ${response.handle})`;
323
+ return formatCreatedEntity("repository", validated.name, {
324
+ handle: response.handle,
325
+ gramps_id: response.gramps_id,
326
+ name: validated.name,
327
+ type: validated.type || null,
328
+ }, `Link sources to this repository using reporef_list with handle "${response.handle}".`);
248
329
  }
249
330
  // Tool definitions for MCP
250
331
  export const createTools = {
251
332
  gramps_create_person: {
252
333
  name: "gramps_create_person",
253
- description: "Create a new person record in Gramps. " +
254
- "Provide name information and optionally gender, events, family links, etc.",
334
+ description: "Create a new person record. " +
335
+ "REQUIRED: primary_name with first_name or surname. " +
336
+ "RETURNS: handle (for linking) and gramps_id (display ID). " +
337
+ "NEXT STEP: Use handle with gramps_create_family to add relationships.",
255
338
  inputSchema: {
256
339
  type: "object",
257
340
  properties: {
@@ -285,8 +368,10 @@ export const createTools = {
285
368
  },
286
369
  gramps_create_family: {
287
370
  name: "gramps_create_family",
288
- description: "Create a new family record in Gramps. " +
289
- "Link father, mother, and children by their person handles.",
371
+ description: "Create a family linking parents and children. " +
372
+ "USE FOR: Connecting existing people into family relationships. " +
373
+ "REQUIRED: At least one of father_handle, mother_handle, or child_ref_list. " +
374
+ "NEXT STEP: Add marriage event with gramps_create_event.",
290
375
  inputSchema: {
291
376
  type: "object",
292
377
  properties: {
@@ -326,8 +411,10 @@ export const createTools = {
326
411
  },
327
412
  gramps_create_event: {
328
413
  name: "gramps_create_event",
329
- description: "Create a new event record in Gramps. " +
330
- "Events include births, deaths, marriages, baptisms, etc.",
414
+ description: "Create a life event (Birth, Death, Marriage, Burial, Baptism, etc.). " +
415
+ "REQUIRED: type (event type string). " +
416
+ "OPTIONAL: date, place handle, description. " +
417
+ "NEXT STEP: Link to person/family via their event_ref_list.",
331
418
  inputSchema: {
332
419
  type: "object",
333
420
  properties: {
@@ -366,8 +453,10 @@ export const createTools = {
366
453
  },
367
454
  gramps_create_place: {
368
455
  name: "gramps_create_place",
369
- description: "Create a new place record in Gramps. " +
370
- "Places can be cities, countries, addresses, cemeteries, etc.",
456
+ description: "Create a location (city, country, address, cemetery, etc.). " +
457
+ "OPTIONAL: title, name, coordinates (lat/long), place_type. " +
458
+ "USE FOR: Linking to events via place handle. " +
459
+ "RETURNS: handle to use when creating events.",
371
460
  inputSchema: {
372
461
  type: "object",
373
462
  properties: {
@@ -405,8 +494,10 @@ export const createTools = {
405
494
  },
406
495
  gramps_create_source: {
407
496
  name: "gramps_create_source",
408
- description: "Create a new source record in Gramps. " +
409
- "Sources document where genealogical information comes from.",
497
+ description: "Create a source documenting where information comes from (books, websites, records). " +
498
+ "REQUIRED: title. " +
499
+ "OPTIONAL: author, pubinfo, abbrev. " +
500
+ "NEXT STEP: Create citations referencing this source.",
410
501
  inputSchema: {
411
502
  type: "object",
412
503
  properties: {
@@ -437,8 +528,10 @@ export const createTools = {
437
528
  },
438
529
  gramps_create_citation: {
439
530
  name: "gramps_create_citation",
440
- description: "Create a new citation record in Gramps. " +
441
- "Citations reference specific parts of sources.",
531
+ description: "Create a citation pointing to a specific location within a source. " +
532
+ "REQUIRED: source_handle (from gramps_create_source). " +
533
+ "OPTIONAL: page, confidence level. " +
534
+ "USE FOR: Attaching proof to facts via entity citation_list.",
442
535
  inputSchema: {
443
536
  type: "object",
444
537
  properties: {
@@ -465,8 +558,10 @@ export const createTools = {
465
558
  },
466
559
  gramps_create_note: {
467
560
  name: "gramps_create_note",
468
- description: "Create a new note in Gramps. " +
469
- "Notes contain textual information that can be attached to other records.",
561
+ description: "Create a text note that can be attached to any entity. " +
562
+ "REQUIRED: text content. " +
563
+ "OPTIONAL: type (General, Research, Transcript), format. " +
564
+ "USE FOR: Adding research notes, transcripts, or comments to records.",
470
565
  inputSchema: {
471
566
  type: "object",
472
567
  properties: {
@@ -493,8 +588,10 @@ export const createTools = {
493
588
  },
494
589
  gramps_create_media: {
495
590
  name: "gramps_create_media",
496
- description: "Create a new media object in Gramps. " +
497
- "Media includes photos, documents, audio, video files.",
591
+ description: "Create a media object reference (photo, document, audio, video). " +
592
+ "REQUIRED: path (file path or URL). " +
593
+ "OPTIONAL: mime type, description. " +
594
+ "USE FOR: Attaching images/documents to people, events, etc.",
498
595
  inputSchema: {
499
596
  type: "object",
500
597
  properties: {
@@ -521,8 +618,10 @@ export const createTools = {
521
618
  },
522
619
  gramps_create_repository: {
523
620
  name: "gramps_create_repository",
524
- description: "Create a new repository in Gramps. " +
525
- "Repositories are places where sources are stored (libraries, archives, websites).",
621
+ description: "Create a repository where sources are stored (library, archive, website). " +
622
+ "REQUIRED: name. " +
623
+ "OPTIONAL: type (Library, Archive, Website). " +
624
+ "USE FOR: Organizing sources by their holding institution.",
526
625
  inputSchema: {
527
626
  type: "object",
528
627
  properties: {