@cyanheads/openfec-mcp-server 0.2.3 → 0.3.1

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.
Files changed (59) hide show
  1. package/CLAUDE.md +1 -1
  2. package/README.md +1 -1
  3. package/dist/mcp-server/prompts/definitions/campaign-analysis.prompt.d.ts.map +1 -1
  4. package/dist/mcp-server/prompts/definitions/campaign-analysis.prompt.js +1 -2
  5. package/dist/mcp-server/prompts/definitions/campaign-analysis.prompt.js.map +1 -1
  6. package/dist/mcp-server/prompts/definitions/money-trail.prompt.d.ts.map +1 -1
  7. package/dist/mcp-server/prompts/definitions/money-trail.prompt.js +1 -3
  8. package/dist/mcp-server/prompts/definitions/money-trail.prompt.js.map +1 -1
  9. package/dist/mcp-server/resources/definitions/candidate.resource.d.ts.map +1 -1
  10. package/dist/mcp-server/resources/definitions/candidate.resource.js +3 -0
  11. package/dist/mcp-server/resources/definitions/candidate.resource.js.map +1 -1
  12. package/dist/mcp-server/tools/definitions/index.d.ts +9 -0
  13. package/dist/mcp-server/tools/definitions/index.d.ts.map +1 -1
  14. package/dist/mcp-server/tools/definitions/lookup-calendar.tool.d.ts +1 -0
  15. package/dist/mcp-server/tools/definitions/lookup-calendar.tool.d.ts.map +1 -1
  16. package/dist/mcp-server/tools/definitions/lookup-calendar.tool.js +23 -51
  17. package/dist/mcp-server/tools/definitions/lookup-calendar.tool.js.map +1 -1
  18. package/dist/mcp-server/tools/definitions/lookup-elections.tool.d.ts +1 -0
  19. package/dist/mcp-server/tools/definitions/lookup-elections.tool.d.ts.map +1 -1
  20. package/dist/mcp-server/tools/definitions/lookup-elections.tool.js +45 -42
  21. package/dist/mcp-server/tools/definitions/lookup-elections.tool.js.map +1 -1
  22. package/dist/mcp-server/tools/definitions/search-candidates.tool.d.ts +1 -0
  23. package/dist/mcp-server/tools/definitions/search-candidates.tool.d.ts.map +1 -1
  24. package/dist/mcp-server/tools/definitions/search-candidates.tool.js +15 -24
  25. package/dist/mcp-server/tools/definitions/search-candidates.tool.js.map +1 -1
  26. package/dist/mcp-server/tools/definitions/search-committees.tool.d.ts +1 -0
  27. package/dist/mcp-server/tools/definitions/search-committees.tool.d.ts.map +1 -1
  28. package/dist/mcp-server/tools/definitions/search-committees.tool.js +8 -24
  29. package/dist/mcp-server/tools/definitions/search-committees.tool.js.map +1 -1
  30. package/dist/mcp-server/tools/definitions/search-contributions.tool.d.ts +1 -0
  31. package/dist/mcp-server/tools/definitions/search-contributions.tool.d.ts.map +1 -1
  32. package/dist/mcp-server/tools/definitions/search-contributions.tool.js +32 -49
  33. package/dist/mcp-server/tools/definitions/search-contributions.tool.js.map +1 -1
  34. package/dist/mcp-server/tools/definitions/search-disbursements.tool.d.ts +1 -0
  35. package/dist/mcp-server/tools/definitions/search-disbursements.tool.d.ts.map +1 -1
  36. package/dist/mcp-server/tools/definitions/search-disbursements.tool.js +25 -43
  37. package/dist/mcp-server/tools/definitions/search-disbursements.tool.js.map +1 -1
  38. package/dist/mcp-server/tools/definitions/search-expenditures.tool.d.ts +1 -0
  39. package/dist/mcp-server/tools/definitions/search-expenditures.tool.d.ts.map +1 -1
  40. package/dist/mcp-server/tools/definitions/search-expenditures.tool.js +25 -43
  41. package/dist/mcp-server/tools/definitions/search-expenditures.tool.js.map +1 -1
  42. package/dist/mcp-server/tools/definitions/search-filings.tool.d.ts +1 -0
  43. package/dist/mcp-server/tools/definitions/search-filings.tool.d.ts.map +1 -1
  44. package/dist/mcp-server/tools/definitions/search-filings.tool.js +8 -36
  45. package/dist/mcp-server/tools/definitions/search-filings.tool.js.map +1 -1
  46. package/dist/mcp-server/tools/definitions/search-legal.tool.d.ts +1 -0
  47. package/dist/mcp-server/tools/definitions/search-legal.tool.d.ts.map +1 -1
  48. package/dist/mcp-server/tools/definitions/search-legal.tool.js +23 -32
  49. package/dist/mcp-server/tools/definitions/search-legal.tool.js.map +1 -1
  50. package/dist/mcp-server/tools/definitions/utils/format-helpers.d.ts +21 -0
  51. package/dist/mcp-server/tools/definitions/utils/format-helpers.d.ts.map +1 -1
  52. package/dist/mcp-server/tools/definitions/utils/format-helpers.js +84 -0
  53. package/dist/mcp-server/tools/definitions/utils/format-helpers.js.map +1 -1
  54. package/dist/services/openfec/openfec-service.d.ts +2 -0
  55. package/dist/services/openfec/openfec-service.d.ts.map +1 -1
  56. package/dist/services/openfec/openfec-service.js +12 -4
  57. package/dist/services/openfec/openfec-service.js.map +1 -1
  58. package/package.json +1 -1
  59. package/server.json +3 -3
@@ -7,7 +7,7 @@
7
7
  import { tool, z } from '@cyanheads/mcp-ts-core';
8
8
  import { invalidParams } from '@cyanheads/mcp-ts-core/errors';
9
9
  import { decodeCursor, getOpenFecService } from '../../../services/openfec/openfec-service.js';
10
- import { fmt$ } from './utils/format-helpers.js';
10
+ import { buildSearchCriteria, formatEmptyResult, renderRecord, SearchCriteriaSchema, } from './utils/format-helpers.js';
11
11
  import { validateCandidateId, validateCommitteeId } from './utils/id-validators.js';
12
12
  /** Expand S/O indicator to a readable label. */
13
13
  const supportOpposeLabel = (code) => code === 'S' ? 'SUPPORT' : code === 'O' ? 'OPPOSE' : String(code ?? '');
@@ -96,6 +96,7 @@ export const searchExpenditures = tool('openfec_search_expenditures', {
96
96
  })
97
97
  .optional()
98
98
  .describe('Page-based pagination info (by_candidate mode only).'),
99
+ search_criteria: SearchCriteriaSchema,
99
100
  }),
100
101
  async handler(input, ctx) {
101
102
  const fec = getOpenFecService();
@@ -155,6 +156,7 @@ export const searchExpenditures = tool('openfec_search_expenditures', {
155
156
  results: result.results,
156
157
  next_cursor: result.nextCursor,
157
158
  count: result.pagination.count,
159
+ search_criteria: result.results.length === 0 ? buildSearchCriteria(input) : undefined,
158
160
  };
159
161
  }
160
162
  /* ---------------------------------------------------------------- */
@@ -186,62 +188,42 @@ export const searchExpenditures = tool('openfec_search_expenditures', {
186
188
  return {
187
189
  results: result.results,
188
190
  pagination: result.pagination,
191
+ search_criteria: result.results.length === 0 ? buildSearchCriteria(input) : undefined,
189
192
  };
190
193
  },
191
194
  format: (result) => {
192
195
  if (result.results.length === 0) {
193
- return [
194
- {
195
- type: 'text',
196
- text: 'No independent expenditures found. Try a different cycle, broaden filters, or verify the candidate_id/committee_id. Not all races attract significant outside spending.',
197
- },
198
- ];
196
+ return formatEmptyResult(result.search_criteria, 'Try a different cycle, broaden filters, or verify the candidate_id/committee_id. Not all races attract significant outside spending.');
199
197
  }
200
198
  const isItemized = 'next_cursor' in result && result.next_cursor !== undefined;
199
+ const lines = [];
201
200
  if (isItemized) {
202
- const lines = [
203
- `**${result.count?.toLocaleString() ?? '?'} total independent expenditures**\n`,
204
- ];
201
+ if (result.count != null) {
202
+ lines.push(`**${result.count.toLocaleString()} total independent expenditures**\n`);
203
+ }
205
204
  for (const r of result.results) {
206
205
  const indicator = supportOpposeLabel(r.support_oppose_indicator);
207
- const amount = fmt$(r.expenditure_amount);
208
- const date = r.expenditure_date ?? '';
209
- const committee = r.committee_name ?? r.committee_id ?? '';
210
- const candidate = r.candidate_name ?? r.candidate_id ?? '';
211
- const office = r.candidate_office ?? '';
212
- const state = r.candidate_office_state ?? '';
213
- const payee = r.payee_name ?? '';
214
- const desc = r.expenditure_description ?? '';
215
- const notice = r.is_notice ? ' [24/48h NOTICE]' : '';
216
- lines.push(`- **[${indicator}]** ${amount} — ${candidate} (${office}${state ? `-${state}` : ''})${notice}`);
217
- lines.push(` By: ${committee} on ${date}`);
218
- if (payee)
219
- lines.push(` Payee: ${payee}`);
220
- if (desc)
221
- lines.push(` ${desc}`);
206
+ const candidate = String(r.candidate_name ?? r.candidate_id ?? 'Unknown');
207
+ lines.push(`**[${indicator}] ${candidate}**\n${renderRecord(r, new Set(['candidate_name', 'support_oppose_indicator']))}`);
222
208
  }
223
209
  if (result.next_cursor) {
224
- lines.push(`\n_More results available — pass cursor to continue._`);
210
+ lines.push('\n_More results available — pass cursor to continue._');
225
211
  }
226
- return [{ type: 'text', text: lines.join('\n') }];
227
- }
228
- // By candidate aggregate
229
- const lines = [
230
- `**${result.pagination?.count?.toLocaleString() ?? '?'} candidate-committee pairs**\n`,
231
- ];
232
- for (const r of result.results) {
233
- const indicator = supportOpposeLabel(r.support_oppose_indicator);
234
- const candidate = r.candidate_name ?? r.candidate_id ?? 'Unknown';
235
- const committee = r.committee_name ?? r.committee_id ?? 'Unknown';
236
- const total = fmt$(r.total);
237
- const count = typeof r.count === 'number' ? ` (${r.count.toLocaleString()} expenditures)` : '';
238
- lines.push(`- **[${indicator}]** ${candidate}`);
239
- lines.push(` ${total}${count} from ${committee}`);
240
212
  }
241
- if (result.pagination && result.pagination.page < result.pagination.pages) {
242
- lines.push(`\n_Page ${result.pagination.page} of ${result.pagination.pages}_`);
213
+ else {
214
+ if (result.pagination?.count != null) {
215
+ lines.push(`**${result.pagination.count.toLocaleString()} candidate-committee pairs**\n`);
216
+ }
217
+ for (const r of result.results) {
218
+ const indicator = supportOpposeLabel(r.support_oppose_indicator);
219
+ const candidate = String(r.candidate_name ?? r.candidate_id ?? 'Unknown');
220
+ lines.push(`**[${indicator}] ${candidate}**\n${renderRecord(r, new Set(['candidate_name', 'support_oppose_indicator']))}`);
221
+ }
222
+ if (result.pagination && result.pagination.page < result.pagination.pages) {
223
+ lines.push(`\n_Page ${result.pagination.page} of ${result.pagination.pages}_`);
224
+ }
243
225
  }
244
- return [{ type: 'text', text: lines.join('\n') }];
226
+ return [{ type: 'text', text: lines.join('\n\n') }];
245
227
  },
246
228
  });
247
229
  //# sourceMappingURL=search-expenditures.tool.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"search-expenditures.tool.js","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/search-expenditures.tool.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"search-expenditures.tool.js","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/search-expenditures.tool.ts"],"names":[],"mappings":"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"}
@@ -27,5 +27,6 @@ export declare const searchFilings: import("@cyanheads/mcp-ts-core").ToolDefinit
27
27
  count: z.ZodNumber;
28
28
  per_page: z.ZodNumber;
29
29
  }, z.core.$strip>;
30
+ search_criteria: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
30
31
  }, z.core.$strip>>;
31
32
  //# sourceMappingURL=search-filings.tool.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"search-filings.tool.d.ts","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/search-filings.tool.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAQ,CAAC,EAAE,MAAM,wBAAwB,CAAC;AAKjD,eAAO,MAAM,aAAa;;;;;;;;;;;;;;;;;;;;;;kBAkIxB,CAAC"}
1
+ {"version":3,"file":"search-filings.tool.d.ts","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/search-filings.tool.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAQ,CAAC,EAAE,MAAM,wBAAwB,CAAC;AAYjD,eAAO,MAAM,aAAa;;;;;;;;;;;;;;;;;;;;;;;kBA0GxB,CAAC"}
@@ -6,7 +6,7 @@
6
6
  */
7
7
  import { tool, z } from '@cyanheads/mcp-ts-core';
8
8
  import { getOpenFecService } from '../../../services/openfec/openfec-service.js';
9
- import { fmt$, PaginationSchema, str } from './utils/format-helpers.js';
9
+ import { buildSearchCriteria, formatEmptyResult, PaginationSchema, renderRecord, SearchCriteriaSchema, str, } from './utils/format-helpers.js';
10
10
  export const searchFilings = tool('openfec_search_filings', {
11
11
  description: 'Search FEC filings and reports by committee, candidate, form type, or date range. ' +
12
12
  'Covers financial reports (F3/F3P/F3X), statements of candidacy (F2), ' +
@@ -44,6 +44,7 @@ export const searchFilings = tool('openfec_search_filings', {
44
44
  .array(z.record(z.string(), z.unknown()))
45
45
  .describe('Filing records with form_type, committee, report_type, financial totals, pdf_url, etc.'),
46
46
  pagination: PaginationSchema.describe('Page-based pagination metadata.'),
47
+ search_criteria: SearchCriteriaSchema,
47
48
  }),
48
49
  async handler(input, ctx) {
49
50
  const fec = getOpenFecService();
@@ -70,50 +71,21 @@ export const searchFilings = tool('openfec_search_filings', {
70
71
  return {
71
72
  filings: result.results,
72
73
  pagination: result.pagination,
74
+ search_criteria: result.results.length === 0 ? buildSearchCriteria(input) : undefined,
73
75
  };
74
76
  },
75
77
  format(result) {
76
78
  if (result.filings.length === 0) {
77
- return [
78
- {
79
- type: 'text',
80
- text: 'No filings found. Try removing the form_type or report_type filter, broadening the date range, or verifying the committee_id.',
81
- },
82
- ];
79
+ return formatEmptyResult(result.search_criteria, 'Try removing the form_type or report_type filter, broadening the date range, or verifying the committee_id.');
83
80
  }
81
+ const headerKeys = new Set(['form_type', 'committee_name', 'committee_id']);
84
82
  const lines = result.filings.map((f) => {
85
83
  const formType = str(f, 'form_type');
86
84
  const committeeName = str(f, 'committee_name');
87
85
  const committeeId = str(f, 'committee_id');
88
- const reportType = str(f, 'report_type_full') || str(f, 'report_type');
89
- const receiptDate = str(f, 'receipt_date');
90
- const coverageStart = str(f, 'coverage_start_date');
91
- const coverageEnd = str(f, 'coverage_end_date');
92
- const candidateName = str(f, 'candidate_name');
93
- const pdfUrl = str(f, 'pdf_url');
94
- let line = `**${formType}** — ${committeeName} (${committeeId})`;
95
- if (reportType)
96
- line += `\n Report: ${reportType}`;
97
- if (f.report_year)
98
- line += ` (${f.report_year})`;
99
- if (receiptDate)
100
- line += ` | Filed: ${receiptDate}`;
101
- if (candidateName)
102
- line += `\n Candidate: ${candidateName}`;
103
- // Financial totals
104
- const hasFinancials = typeof f.total_receipts === 'number' || typeof f.total_disbursements === 'number';
105
- if (hasFinancials) {
106
- line += `\n Receipts: ${fmt$(f.total_receipts)} | Disbursements: ${fmt$(f.total_disbursements)}`;
107
- line += ` | Cash: ${fmt$(f.cash_on_hand_end_period)} | Debt: ${fmt$(f.debts_owed_by_committee)}`;
108
- }
109
- if (coverageStart && coverageEnd) {
110
- line += `\n Coverage: ${coverageStart} to ${coverageEnd}`;
111
- }
112
- if (f.is_amended === true)
113
- line += ' | AMENDED';
114
- if (pdfUrl)
115
- line += `\n PDF: ${pdfUrl}`;
116
- return line;
86
+ const header = `**${formType}** ${committeeName} (${committeeId})`;
87
+ const fields = renderRecord(f, headerKeys);
88
+ return fields ? `${header}\n${fields}` : header;
117
89
  });
118
90
  const { page, pages, count } = result.pagination;
119
91
  lines.push(`\n---\nPage ${page} of ${pages} (${count} total)`);
@@ -1 +1 @@
1
- {"version":3,"file":"search-filings.tool.js","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/search-filings.tool.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"search-filings.tool.js","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/search-filings.tool.ts"],"names":[],"mappings":"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"}
@@ -28,5 +28,6 @@ export declare const searchLegal: import("@cyanheads/mcp-ts-core").ToolDefinitio
28
28
  }, z.core.$strip>, z.ZodObject<{
29
29
  results: z.ZodArray<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
30
30
  total_count: z.ZodNumber;
31
+ search_criteria: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
31
32
  }, z.core.$strip>>;
32
33
  //# sourceMappingURL=search-legal.tool.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"search-legal.tool.d.ts","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/search-legal.tool.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAQ,CAAC,EAAE,MAAM,wBAAwB,CAAC;AAejD,eAAO,MAAM,WAAW;;;;;;;;;;;;;;;;;;;;;;;kBA6KtB,CAAC"}
1
+ {"version":3,"file":"search-legal.tool.d.ts","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/search-legal.tool.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAQ,CAAC,EAAE,MAAM,wBAAwB,CAAC;AAoBjD,eAAO,MAAM,WAAW;;;;;;;;;;;;;;;;;;;;;;;;kBA2KtB,CAAC"}
@@ -7,7 +7,7 @@
7
7
  import { tool, z } from '@cyanheads/mcp-ts-core';
8
8
  import { invalidParams } from '@cyanheads/mcp-ts-core/errors';
9
9
  import { getOpenFecService } from '../../../services/openfec/openfec-service.js';
10
- import { fmt$ } from './utils/format-helpers.js';
10
+ import { buildSearchCriteria, formatEmptyResult, renderRecord, SearchCriteriaSchema, } from './utils/format-helpers.js';
11
11
  /** Human-readable labels for document type discriminators. */
12
12
  const typeLabels = {
13
13
  advisory_opinion: 'Advisory Opinion',
@@ -25,7 +25,7 @@ export const searchLegal = tool('openfec_search_legal', {
25
25
  type: z
26
26
  .enum(['advisory_opinions', 'murs', 'adrs', 'admin_fines', 'statutes'])
27
27
  .optional()
28
- .describe('Document type filter. Omit to search all types.'),
28
+ .describe('Document type filter. Omit to search all types. admin_fines is slow without a query or respondent filter.'),
29
29
  ao_number: z.string().optional().describe('Specific advisory opinion number (e.g. "2024-01").'),
30
30
  case_number: z.string().optional().describe('Specific MUR or ADR case number.'),
31
31
  respondent: z.string().optional().describe('Respondent name (enforcement cases).'),
@@ -57,6 +57,7 @@ export const searchLegal = tool('openfec_search_legal', {
57
57
  .array(z.record(z.string(), z.unknown()))
58
58
  .describe('Legal documents with a document_type discriminator (advisory_opinion, mur, adr, admin_fine, statute).'),
59
59
  total_count: z.number().describe('Total matching documents across all types.'),
60
+ search_criteria: SearchCriteriaSchema,
60
61
  }),
61
62
  async handler(input, ctx) {
62
63
  const hasFilter = input.query || input.type || input.ao_number || input.case_number;
@@ -123,18 +124,16 @@ export const searchLegal = tool('openfec_search_legal', {
123
124
  }
124
125
  return d;
125
126
  });
126
- return { results: trimmed, total_count: data.totalCount };
127
+ return {
128
+ results: trimmed,
129
+ total_count: data.totalCount,
130
+ search_criteria: trimmed.length === 0 ? buildSearchCriteria(input) : undefined,
131
+ };
127
132
  },
128
133
  format: (result) => {
129
134
  if (result.results.length === 0) {
130
- return [
131
- {
132
- type: 'text',
133
- text: 'No legal documents found. Try different search terms, remove the type filter to search all document types, or check the ao_number/case_number format.',
134
- },
135
- ];
135
+ return formatEmptyResult(result.search_criteria, 'Try different search terms, remove the type filter to search all document types, or check the ao_number/case_number format.');
136
136
  }
137
- /** Group results by document_type for readable output. */
138
137
  const grouped = new Map();
139
138
  for (const doc of result.results) {
140
139
  const docType = String(doc.document_type ?? 'unknown');
@@ -145,32 +144,24 @@ export const searchLegal = tool('openfec_search_legal', {
145
144
  }
146
145
  group.push(doc);
147
146
  }
147
+ const headerKeys = new Set(['ao_no', 'case_no', 'no', 'name', 'document_type']);
148
148
  const sections = [];
149
149
  for (const [docType, docs] of grouped) {
150
150
  const label = typeLabels[docType] ?? docType;
151
- const lines = docs.map((doc) => {
152
- const id = doc.ao_no ?? doc.case_no ?? doc.no ?? '';
153
- const name = doc.name ?? '';
154
- const summary = doc.summary ??
155
- (Array.isArray(doc.highlights) && doc.highlights.length > 0
156
- ? doc.highlights.join(' ... ')
157
- : '');
158
- const date = doc.issue_date ?? doc.open_date ?? doc.close_date ?? doc.date ?? '';
159
- const penalty = doc.penalty_amount != null ? ` | Penalty: ${fmt$(doc.penalty_amount)}` : '';
160
- const parts = [];
161
- if (id)
162
- parts.push(`**${id}**`);
163
- if (name)
164
- parts.push(String(name));
165
- if (date)
166
- parts.push(`(${date})`);
167
- if (penalty)
168
- parts.push(penalty);
169
- if (summary)
170
- parts.push(`\n ${String(summary).slice(0, 300)}`);
171
- return parts.join(' ');
151
+ const items = docs.map((doc) => {
152
+ const id = String(doc.ao_no ?? doc.case_no ?? doc.no ?? '');
153
+ const name = doc.name ? String(doc.name) : '';
154
+ const header = id
155
+ ? name
156
+ ? `**${id}** ${name}`
157
+ : `**${id}**`
158
+ : name
159
+ ? `**${name}**`
160
+ : '**Document**';
161
+ const fields = renderRecord(doc, headerKeys);
162
+ return fields ? `${header}\n${fields}` : header;
172
163
  });
173
- sections.push(`### ${label}\n${lines.join('\n\n')}`);
164
+ sections.push(`### ${label}\n${items.join('\n\n')}`);
174
165
  }
175
166
  sections.push(`\n_${result.total_count} total matching document(s)_`);
176
167
  return [{ type: 'text', text: sections.join('\n\n') }];
@@ -1 +1 @@
1
- {"version":3,"file":"search-legal.tool.js","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/search-legal.tool.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"search-legal.tool.js","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/search-legal.tool.ts"],"names":[],"mappings":"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"}
@@ -5,6 +5,22 @@
5
5
  * @module src/mcp-server/tools/definitions/format-helpers
6
6
  */
7
7
  import { z } from '@cyanheads/mcp-ts-core';
8
+ /**
9
+ * Build a search criteria summary from tool input.
10
+ * Strips undefined/null, empty strings, and pagination params so only
11
+ * meaningful search filters remain.
12
+ */
13
+ export declare function buildSearchCriteria(input: Record<string, unknown>): Record<string, unknown>;
14
+ /**
15
+ * Render an empty-result format block with echoed search criteria and a
16
+ * domain-specific suggestion. Used by all tool format() functions.
17
+ */
18
+ export declare function formatEmptyResult(criteria: Record<string, unknown> | undefined, hint: string): {
19
+ type: 'text';
20
+ text: string;
21
+ }[];
22
+ /** Reusable optional search_criteria output field schema. */
23
+ export declare const SearchCriteriaSchema: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
8
24
  /** Format a number as USD or return 'N/A' for non-numeric values. */
9
25
  export declare const fmt$: (n: unknown) => string;
10
26
  /** Safely read a string field from an untyped record. */
@@ -16,4 +32,9 @@ export declare const PaginationSchema: z.ZodObject<{
16
32
  count: z.ZodNumber;
17
33
  per_page: z.ZodNumber;
18
34
  }, z.core.$strip>;
35
+ /**
36
+ * Render all non-empty fields from a record as indented `key: value` lines.
37
+ * Pass `skip` to exclude fields already rendered in a header line.
38
+ */
39
+ export declare function renderRecord(rec: Record<string, unknown>, skip?: ReadonlySet<string>): string;
19
40
  //# sourceMappingURL=format-helpers.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"format-helpers.d.ts","sourceRoot":"","sources":["../../../../../src/mcp-server/tools/definitions/utils/format-helpers.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,wBAAwB,CAAC;AAE3C,qEAAqE;AACrE,eAAO,MAAM,IAAI,GAAI,GAAG,OAAO,KAAG,MACwB,CAAC;AAE3D,yDAAyD;AACzD,eAAO,MAAM,GAAG,GAAI,KAAK,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,KAAK,MAAM,KAAG,MACN,CAAC;AAE3D,oDAAoD;AACpD,eAAO,MAAM,gBAAgB;;;;;iBAK3B,CAAC"}
1
+ {"version":3,"file":"format-helpers.d.ts","sourceRoot":"","sources":["../../../../../src/mcp-server/tools/definitions/utils/format-helpers.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,wBAAwB,CAAC;AAa3C;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAQ3F;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAC/B,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,EAC7C,IAAI,EAAE,MAAM,GACX;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,EAAE,CAalC;AAED,6DAA6D;AAC7D,eAAO,MAAM,oBAAoB,uDAM9B,CAAC;AAEJ,qEAAqE;AACrE,eAAO,MAAM,IAAI,GAAI,GAAG,OAAO,KAAG,MACwB,CAAC;AAE3D,yDAAyD;AACzD,eAAO,MAAM,GAAG,GAAI,KAAK,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,KAAK,MAAM,KAAG,MACN,CAAC;AAE3D,oDAAoD;AACpD,eAAO,MAAM,gBAAgB;;;;;iBAK3B,CAAC;AAEH;;;GAGG;AACH,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,IAAI,CAAC,EAAE,WAAW,CAAC,MAAM,CAAC,GAAG,MAAM,CAQ7F"}
@@ -5,6 +5,54 @@
5
5
  * @module src/mcp-server/tools/definitions/format-helpers
6
6
  */
7
7
  import { z } from '@cyanheads/mcp-ts-core';
8
+ /** Pagination and internal params excluded from search criteria echo. */
9
+ const PAGINATION_KEYS = new Set([
10
+ 'page',
11
+ 'per_page',
12
+ 'cursor',
13
+ 'from_hit',
14
+ 'hits_returned',
15
+ 'most_recent',
16
+ 'election_full',
17
+ ]);
18
+ /**
19
+ * Build a search criteria summary from tool input.
20
+ * Strips undefined/null, empty strings, and pagination params so only
21
+ * meaningful search filters remain.
22
+ */
23
+ export function buildSearchCriteria(input) {
24
+ const criteria = {};
25
+ for (const [key, value] of Object.entries(input)) {
26
+ if (value === undefined || value === null || value === '')
27
+ continue;
28
+ if (PAGINATION_KEYS.has(key))
29
+ continue;
30
+ criteria[key] = value;
31
+ }
32
+ return criteria;
33
+ }
34
+ /**
35
+ * Render an empty-result format block with echoed search criteria and a
36
+ * domain-specific suggestion. Used by all tool format() functions.
37
+ */
38
+ export function formatEmptyResult(criteria, hint) {
39
+ const lines = ['No results found.'];
40
+ if (criteria && Object.keys(criteria).length > 0) {
41
+ lines.push('', '**Search criteria used:**');
42
+ for (const [key, value] of Object.entries(criteria)) {
43
+ const display = typeof value === 'object' ? JSON.stringify(value) : String(value);
44
+ lines.push(` ${key}: ${display}`);
45
+ }
46
+ }
47
+ lines.push('', hint);
48
+ return [{ type: 'text', text: lines.join('\n') }];
49
+ }
50
+ /** Reusable optional search_criteria output field schema. */
51
+ export const SearchCriteriaSchema = z
52
+ .record(z.string(), z.unknown())
53
+ .optional()
54
+ .describe('Echo of the search filters that produced this result set. ' +
55
+ 'Populated when results are empty to help diagnose why nothing matched.');
8
56
  /** Format a number as USD or return 'N/A' for non-numeric values. */
9
57
  export const fmt$ = (n) => typeof n === 'number' ? `$${n.toLocaleString()}` : 'N/A';
10
58
  /** Safely read a string field from an untyped record. */
@@ -16,4 +64,40 @@ export const PaginationSchema = z.object({
16
64
  count: z.number().describe('Total result count.'),
17
65
  per_page: z.number().describe('Results per page.'),
18
66
  });
67
+ /**
68
+ * Render all non-empty fields from a record as indented `key: value` lines.
69
+ * Pass `skip` to exclude fields already rendered in a header line.
70
+ */
71
+ export function renderRecord(rec, skip) {
72
+ const lines = [];
73
+ for (const [key, value] of Object.entries(rec)) {
74
+ if (skip?.has(key))
75
+ continue;
76
+ const text = renderValue(value);
77
+ if (text !== null)
78
+ lines.push(` ${key}: ${text}`);
79
+ }
80
+ return lines.join('\n');
81
+ }
82
+ /** Format a single value for display. Returns null for empty/null/undefined. */
83
+ function renderValue(value) {
84
+ if (value === null || value === undefined || value === '')
85
+ return null;
86
+ if (typeof value === 'boolean')
87
+ return String(value);
88
+ if (typeof value === 'number')
89
+ return String(value);
90
+ if (typeof value === 'string')
91
+ return value;
92
+ if (Array.isArray(value)) {
93
+ if (value.length === 0)
94
+ return null;
95
+ return value
96
+ .map((v) => (typeof v === 'object' && v !== null ? JSON.stringify(v) : String(v)))
97
+ .join(', ');
98
+ }
99
+ if (typeof value === 'object')
100
+ return JSON.stringify(value);
101
+ return String(value);
102
+ }
19
103
  //# sourceMappingURL=format-helpers.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"format-helpers.js","sourceRoot":"","sources":["../../../../../src/mcp-server/tools/definitions/utils/format-helpers.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,wBAAwB,CAAC;AAE3C,qEAAqE;AACrE,MAAM,CAAC,MAAM,IAAI,GAAG,CAAC,CAAU,EAAU,EAAE,CACzC,OAAO,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,cAAc,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC;AAE3D,yDAAyD;AACzD,MAAM,CAAC,MAAM,GAAG,GAAG,CAAC,GAA4B,EAAE,GAAW,EAAU,EAAE,CACvE,OAAO,GAAG,CAAC,GAAG,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAE,GAAG,CAAC,GAAG,CAAY,CAAC,CAAC,CAAC,EAAE,CAAC;AAE3D,oDAAoD;AACpD,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,CAAC,MAAM,CAAC;IACvC,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,kCAAkC,CAAC;IAC7D,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,wBAAwB,CAAC;IACpD,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,qBAAqB,CAAC;IACjD,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,mBAAmB,CAAC;CACnD,CAAC,CAAC"}
1
+ {"version":3,"file":"format-helpers.js","sourceRoot":"","sources":["../../../../../src/mcp-server/tools/definitions/utils/format-helpers.ts"],"names":[],"mappings":"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"}
@@ -42,6 +42,8 @@ export declare class OpenFecService {
42
42
  getExpendituresByCandidate(params: FecParams, ctx: Context): Promise<PageResult>;
43
43
  searchFilings(params: FecParams, ctx: Context): Promise<PageResult>;
44
44
  searchElections(params: FecParams, ctx: Context): Promise<PageResult>;
45
+ /** Search elections with ZIP support — uses /elections/search/ which accepts zip. */
46
+ searchElectionsByZip(params: FecParams, ctx: Context): Promise<PageResult>;
45
47
  /** Fetch election summary — flat response (no pagination wrapper). */
46
48
  getElectionSummary(params: FecParams, ctx: Context): Promise<ElectionSummary>;
47
49
  searchLegal(params: FecParams, ctx: Context): Promise<LegalResult>;
@@ -1 +1 @@
1
- {"version":3,"file":"openfec-service.d.ts","sourceRoot":"","sources":["../../../src/services/openfec/openfec-service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"openfec-service.d.ts","sourceRoot":"","sources":["../../../src/services/openfec/openfec-service.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAC;AAGtD,OAAO,KAAK,EACV,eAAe,EAGf,SAAS,EAET,WAAW,EACX,UAAU,EACV,UAAU,EACX,MAAM,YAAY,CAAC;AAMpB,wEAAwE;AACxE,wBAAgB,YAAY,CAAC,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,MAAM,CAExE;AAED,mEAAmE;AACnE,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAEnE;AAwBD,qBAAa,cAAc;IACzB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAe;;IAUtC,iEAAiE;IACjE,OAAO,CAAC,QAAQ;IAehB;;;OAGG;YACW,SAAS;IAuCvB;;;OAGG;YACW,SAAS;IAyCvB,2EAA2E;YAC7D,gBAAgB;IA4C9B,sFAAsF;IACtF,OAAO,CAAC,gBAAgB;IAUxB,gBAAgB,CAAC,MAAM,EAAE,SAAS,EAAE,GAAG,EAAE,OAAO,GAAG,OAAO,CAAC,UAAU,CAAC;IAItE,YAAY,CAAC,WAAW,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,GAAG,OAAO,CAAC,UAAU,CAAC;IAIpE,kBAAkB,CAAC,MAAM,EAAE,SAAS,EAAE,GAAG,EAAE,OAAO,GAAG,OAAO,CAAC,UAAU,CAAC;IAQxE,gBAAgB,CAAC,MAAM,EAAE,SAAS,EAAE,GAAG,EAAE,OAAO,GAAG,OAAO,CAAC,UAAU,CAAC;IAItE,YAAY,CAAC,WAAW,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,GAAG,OAAO,CAAC,UAAU,CAAC;IAQpE,mBAAmB,CAAC,MAAM,EAAE,SAAS,EAAE,GAAG,EAAE,OAAO,GAAG,OAAO,CAAC,UAAU,CAAC;IAIzE,yBAAyB,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,GAAG,EAAE,OAAO,GAAG,OAAO,CAAC,UAAU,CAAC;IAkB7F,mBAAmB,CAAC,MAAM,EAAE,SAAS,EAAE,GAAG,EAAE,OAAO,GAAG,OAAO,CAAC,UAAU,CAAC;IAIzE,yBAAyB,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,GAAG,EAAE,OAAO,GAAG,OAAO,CAAC,UAAU,CAAC;IAe7F,kBAAkB,CAAC,MAAM,EAAE,SAAS,EAAE,GAAG,EAAE,OAAO,GAAG,OAAO,CAAC,UAAU,CAAC;IAIxE,0BAA0B,CAAC,MAAM,EAAE,SAAS,EAAE,GAAG,EAAE,OAAO,GAAG,OAAO,CAAC,UAAU,CAAC;IAQhF,aAAa,CAAC,MAAM,EAAE,SAAS,EAAE,GAAG,EAAE,OAAO,GAAG,OAAO,CAAC,UAAU,CAAC;IAQnE,eAAe,CAAC,MAAM,EAAE,SAAS,EAAE,GAAG,EAAE,OAAO,GAAG,OAAO,CAAC,UAAU,CAAC;IAIrE,qFAAqF;IACrF,oBAAoB,CAAC,MAAM,EAAE,SAAS,EAAE,GAAG,EAAE,OAAO,GAAG,OAAO,CAAC,UAAU,CAAC;IAI1E,sEAAsE;IAChE,kBAAkB,CAAC,MAAM,EAAE,SAAS,EAAE,GAAG,EAAE,OAAO,GAAG,OAAO,CAAC,eAAe,CAAC;IAiCnF,WAAW,CAAC,MAAM,EAAE,SAAS,EAAE,GAAG,EAAE,OAAO,GAAG,OAAO,CAAC,WAAW,CAAC;IAQlE,gBAAgB,CAAC,MAAM,EAAE,SAAS,EAAE,GAAG,EAAE,OAAO,GAAG,OAAO,CAAC,UAAU,CAAC;IAItE,iBAAiB,CAAC,MAAM,EAAE,SAAS,EAAE,GAAG,EAAE,OAAO,GAAG,OAAO,CAAC,UAAU,CAAC;IAIvE,gBAAgB,CAAC,MAAM,EAAE,SAAS,EAAE,GAAG,EAAE,OAAO,GAAG,OAAO,CAAC,UAAU,CAAC;CAGvE;AA2ED,wBAAgB,kBAAkB,IAAI,IAAI,CAEzC;AAED,wBAAgB,iBAAiB,IAAI,cAAc,CAIlD"}