@yottagraph-app/aether-instructions 1.1.22 → 1.1.24

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.
@@ -0,0 +1,598 @@
1
+ # Dataset schema for BNY arbitrage rebate analysis reports.
2
+ #
3
+ # Extracts entities, properties, relationships, and events from Interim
4
+ # Arbitrage Rebate Analysis PDF documents prepared by BLX Group LLC for
5
+ # municipal bond issuers. BNY (Bank of New York Mellon) serves as trustee.
6
+ #
7
+ # Each report computes the arbitrage rebate liability under IRC Section 148
8
+ # for a bond issue across a computation period. Reports contain transmittal
9
+ # letters, legal opinions, notes/assumptions, summary schedules, and
10
+ # detailed per-fund cash flow and investment data.
11
+ #
12
+ # Uses the ml/extraction library with WithTableExtractor for combined
13
+ # entity + table extraction from PDF blobs via Gemini vision.
14
+
15
+
16
+ # These documents are structured compliance reports with a fixed format:
17
+ # transmittal letter, legal opinion, notes and assumptions, and financial
18
+ # schedules (A through G). Extract ONLY real-world entities — named
19
+ # organizations, the bond issue, fund accounts, and geographic locations.
20
+
21
+
22
+ # CRITICAL EXTRACTION RULES:
23
+
24
+ # - The bond issue is ONE financial_instrument entity. Use its full official
25
+ # name as stated on the cover page (e.g. "$142,235,000 New Jersey Housing
26
+ # and Mortgage Finance Agency Multifamily Housing Revenue Refunding Bonds
27
+ # (Presidential Plaza at Newport Project-FHA Insured Mortgages) 1991 Series 1").
28
+ # Do NOT extract the word "Bonds" alone as a separate entity.
29
+
30
+ # - Fund accounts are: Reserve I Account, Reserve II Account, Liquidity I
31
+ # Account, Liquidity II Account, Prior Rebate Liability, Revenue Account,
32
+ # Escrow Fund, Debt Service Reserve Account, Construction Account. Extract
33
+ # these by their proper names ONLY.
34
+
35
+ # - Do NOT extract any of the following as entities:
36
+ # * Schedule headings or titles (e.g. "Schedule A - Summary of Rebate
37
+ # Analysis", "Schedule C1 - Reserve I Account")
38
+ # * Table headers, column names, or row labels (e.g. "Fund Description",
39
+ # "Totals:", "Sources of Funds")
40
+ # * Document section names (e.g. "Transmittal Letter", "Notes and
41
+ # Assumptions", "Report", "engagement letter")
42
+ # * Amendment numbers (e.g. "AMENDMENT (NO. 002.00)")
43
+ # * Telex numbers, account numbers, or reference codes
44
+ # * The document title itself (e.g. "INTERIM ARBITRAGE REBATE ANALYSIS")
45
+ # * Legal citation references (e.g. "Section 5.6", "IRC Section 148")
46
+ # * Generic terms like "Prior Bonds" — use the full name instead
47
+
48
+ # - DO extract important related entities such as:
49
+ # * The issuer of the bond
50
+ # * related organizations such as real estate developers, important people, law firms, etc.
51
+ # * important events such as bond issuance, bond refunding, fund valuation, rebate payment determination, report issuance, etc.
52
+ # * important locations such as addresses, cities, and jurisdictions mentioned in the report.
53
+
54
+ # - IMPORTANT: Ensure that you extract important relationships between entities so that we are able
55
+ # to build a graph of the bond issue and its related entities.
56
+
57
+ # - Securities held in fund accounts (e.g. "Morgan IA", "Federated MM")
58
+ # are valid financial_instrument entities.
59
+
60
+ # - If this document is NOT an Interim Arbitrage Rebate Analysis (e.g. it
61
+ # is a Letter of Credit, trust indenture, or other document type), extract
62
+ # ZERO entities. Return an empty entities list.
63
+
64
+ name: "bny"
65
+ description: >-
66
+ Interim Arbitrage Rebate Analysis reports for municipal bond issues.
67
+ Documents contain bond details, fund account valuations, investment
68
+ holdings, cash flow tables, and rebate liability computations. Extract
69
+ the bond, its issuer, trustee, counsel, fund accounts, held securities,
70
+ and legal agreements. Each report is one observation of the bond's state
71
+ at a specific computation date.
72
+
73
+ extraction:
74
+ flavors: closed
75
+ properties: open
76
+ relationships: closed
77
+ attributes: closed
78
+ events: closed
79
+
80
+ # =============================================================================
81
+ # FLAVORS
82
+ # =============================================================================
83
+
84
+ flavors:
85
+ - name: "document"
86
+ description: "A source PDF document in the BNY dataset. Created programmatically, not by LLM extraction."
87
+ display_name: "Document"
88
+ mergeability: not_mergeable
89
+ strong_id_properties: ["bny_document_id"]
90
+ passive: true
91
+
92
+ - name: "organization"
93
+ description: "Companies, agencies, law firms, financial institutions, and government bodies named in the report."
94
+ display_name: "Organization"
95
+ mergeability: not_mergeable
96
+ examples:
97
+ - "New Jersey Housing and Mortgage Finance Agency"
98
+ - "BLX Group LLC"
99
+ - "Orrick, Herrington & Sutcliffe LLP"
100
+ - "BNY"
101
+ - "Lefrak Organization"
102
+
103
+ - name: "fund_account"
104
+ description: "Bond proceeds sub-accounts tracked for arbitrage rebate computation (e.g. reserve funds, liquidity accounts)."
105
+ display_name: "Fund Account"
106
+ mergeability: not_mergeable
107
+ examples:
108
+ - "Reserve I Account"
109
+ - "Reserve II Account"
110
+ - "Liquidity I Account"
111
+ - "Liquidity II Account"
112
+ - "Prior Rebate Liability"
113
+
114
+ - name: "financial_instrument"
115
+ description: "Bonds, notes, and securities. Includes the main bond issue being analyzed and securities held within fund accounts as investments of bond proceeds."
116
+ display_name: "Financial Instrument"
117
+ mergeability: not_mergeable
118
+ strong_id_properties: ["client_matter_number"]
119
+ examples:
120
+ - "New Jersey Housing and Mortgage Finance Agency Multifamily Housing Revenue Refunding Bonds 1991 Series 1"
121
+ - "Morgan IA"
122
+ - "Federated MM"
123
+
124
+ - name: "legal_agreement"
125
+ description: "Governing legal documents referenced in the report: arbitrage certificates, prior reports, engagement letters."
126
+ display_name: "Legal Agreement"
127
+ mergeability: not_mergeable
128
+ examples:
129
+ - "Certificate as to Arbitrage"
130
+ - "Prior Report"
131
+
132
+ - name: "location"
133
+ description: "Addresses, cities, and jurisdictions mentioned in the report."
134
+ display_name: "Location"
135
+ mergeability: not_mergeable
136
+ examples:
137
+ - "Trenton, NJ"
138
+ - "Dallas, TX"
139
+ - "New York, NY"
140
+
141
+ - name: "person"
142
+ description: "Officers, signatories, or other named individuals."
143
+ display_name: "Person"
144
+ mergeability: not_mergeable
145
+
146
+ # =============================================================================
147
+ # PROPERTIES
148
+ # =============================================================================
149
+
150
+ properties:
151
+ # --- Document-level properties ---
152
+
153
+ - name: "bny_document_id"
154
+ type: string
155
+ description: "Numeric document identifier from the PDF filename (e.g. 26889358, 5816087). Used as strong ID for document entities."
156
+ display_name: "BNY Document ID"
157
+ mergeability: not_mergeable
158
+ domain_flavors: ["document"]
159
+ passive: true
160
+
161
+ # --- Bond-level properties (document-level, one per report) ---
162
+
163
+ - name: "client_matter_number"
164
+ type: string
165
+ description: "BLX Group client matter number uniquely identifying this bond engagement (e.g. 42182-2748). Used as strong ID."
166
+ display_name: "Client Matter Number"
167
+ mergeability: not_mergeable
168
+ domain_flavors: ["financial_instrument"]
169
+ examples: ["42182-2748"]
170
+
171
+ - name: "bonds_name"
172
+ type: string
173
+ description: "The full name of the bond issue being analyzed in this report, exactly as it appears in the document title or cover page. This identifies which financial_instrument entity is the primary bond."
174
+ display_name: "Bonds Name"
175
+ mergeability: not_mergeable
176
+ domain_flavors: ["financial_instrument"]
177
+ extraction_config:
178
+ level: document
179
+ literal: {}
180
+
181
+ - name: "par_amount"
182
+ type: string
183
+ description: "Total par amount of the bond issue."
184
+ display_name: "Par Amount"
185
+ mergeability: not_mergeable
186
+ domain_flavors: ["financial_instrument"]
187
+ examples: ["$142,235,000"]
188
+
189
+ - name: "dated_date"
190
+ type: string
191
+ description: "Dated date of the bonds."
192
+ display_name: "Dated Date"
193
+ mergeability: not_mergeable
194
+ domain_flavors: ["financial_instrument"]
195
+
196
+ - name: "issue_date"
197
+ type: string
198
+ description: "Issue date of the bonds."
199
+ display_name: "Issue Date"
200
+ mergeability: not_mergeable
201
+ domain_flavors: ["financial_instrument"]
202
+
203
+ - name: "bond_yield"
204
+ type: string
205
+ description: "Arbitrage yield / allowable yield on investments (e.g. 7.420898%)."
206
+ display_name: "Bond Yield"
207
+ mergeability: not_mergeable
208
+ domain_flavors: ["financial_instrument"]
209
+
210
+ - name: "computation_period"
211
+ type: string
212
+ description: "The computation period covered by this report (e.g. October 17, 1991 through October 16, 2024)."
213
+ display_name: "Computation Period"
214
+ mergeability: not_mergeable
215
+ domain_flavors: ["financial_instrument"]
216
+
217
+ - name: "rebate_computation_date"
218
+ type: string
219
+ description: "End date of the computation period (e.g. October 16, 2024). This is the 'as of' date for all values in the report."
220
+ display_name: "Rebate Computation Date"
221
+ mergeability: not_mergeable
222
+ domain_flavors: ["financial_instrument"]
223
+ extraction_config:
224
+ level: document
225
+ literal: {}
226
+
227
+ - name: "cumulative_rebate_liability"
228
+ type: string
229
+ description: "Total cumulative rebate liability amount."
230
+ display_name: "Cumulative Rebate Liability"
231
+ mergeability: not_mergeable
232
+ domain_flavors: ["financial_instrument"]
233
+
234
+ - name: "rebate_payment_due"
235
+ type: string
236
+ description: "Rebate payment amount due to the United States."
237
+ display_name: "Rebate Payment Due"
238
+ mergeability: not_mergeable
239
+ domain_flavors: ["financial_instrument"]
240
+
241
+ - name: "return_on_investments"
242
+ type: string
243
+ description: "Weighted return on investments since the prior computation date."
244
+ display_name: "Return on Investments"
245
+ mergeability: not_mergeable
246
+ domain_flavors: ["financial_instrument"]
247
+
248
+ - name: "shortfall_pct"
249
+ type: string
250
+ description: "Shortfall percentage: return on investments minus bond yield."
251
+ display_name: "Shortfall Percentage"
252
+ mergeability: not_mergeable
253
+ domain_flavors: ["financial_instrument"]
254
+
255
+ - name: "actual_gross_earnings"
256
+ type: string
257
+ description: "Total actual gross earnings across all funds."
258
+ display_name: "Actual Gross Earnings"
259
+ mergeability: not_mergeable
260
+ domain_flavors: ["financial_instrument"]
261
+
262
+ - name: "allowable_gross_earnings"
263
+ type: string
264
+ description: "Total allowable gross earnings computed at the bond yield."
265
+ display_name: "Allowable Gross Earnings"
266
+ mergeability: not_mergeable
267
+ domain_flavors: ["financial_instrument"]
268
+
269
+ - name: "report_date"
270
+ type: string
271
+ description: "Date the report was issued."
272
+ display_name: "Report Date"
273
+ mergeability: not_mergeable
274
+ domain_flavors: ["financial_instrument"]
275
+
276
+ # --- Organization properties ---
277
+
278
+ - name: "org_type"
279
+ type: string
280
+ description: "Type of organization: government_agency, law_firm, financial_services, financial_institution, trust_company."
281
+ display_name: "Organization Type"
282
+ mergeability: not_mergeable
283
+ domain_flavors: ["organization"]
284
+
285
+ - name: "description"
286
+ type: string
287
+ description: "Short description or role of the entity in the deal."
288
+ display_name: "Description"
289
+ mergeability: not_mergeable
290
+ domain_flavors: ["organization", "legal_agreement"]
291
+
292
+ # --- Fund account properties (from Schedule A table extraction) ---
293
+
294
+ - name: "current_fund_status"
295
+ type: string
296
+ description: "Current status of the fund: Active or Inactive."
297
+ display_name: "Current Fund Status"
298
+ mergeability: not_mergeable
299
+ domain_flavors: ["fund_account"]
300
+
301
+ - name: "computation_date_valuation"
302
+ type: string
303
+ description: "Fair market value of the fund at the computation date."
304
+ display_name: "Computation Date Valuation"
305
+ mergeability: not_mergeable
306
+ domain_flavors: ["fund_account"]
307
+
308
+ - name: "gross_earnings"
309
+ type: string
310
+ description: "Total gross earnings for the fund."
311
+ display_name: "Gross Earnings"
312
+ mergeability: not_mergeable
313
+ domain_flavors: ["fund_account"]
314
+
315
+ - name: "internal_rate_of_return"
316
+ type: string
317
+ description: "Internal rate of return on the fund's investments."
318
+ display_name: "Internal Rate of Return"
319
+ mergeability: not_mergeable
320
+ domain_flavors: ["fund_account"]
321
+
322
+ - name: "excess_earnings"
323
+ type: string
324
+ description: "Excess earnings (negative means below yield). Applies to both the bond overall and individual fund accounts."
325
+ display_name: "Excess Earnings"
326
+ mergeability: not_mergeable
327
+ domain_flavors: ["financial_instrument", "fund_account"]
328
+
329
+ # --- Financial instrument properties (from security holdings tables) ---
330
+
331
+ - name: "instrument_par_amount"
332
+ type: string
333
+ description: "Par amount of the security held in a fund account."
334
+ display_name: "Par Amount"
335
+ mergeability: not_mergeable
336
+ domain_flavors: ["financial_instrument"]
337
+
338
+ - name: "coupon"
339
+ type: string
340
+ description: "Coupon rate of the security (e.g. 7.000% or Variable)."
341
+ display_name: "Coupon"
342
+ mergeability: not_mergeable
343
+ domain_flavors: ["financial_instrument"]
344
+
345
+ - name: "maturity_date"
346
+ type: string
347
+ description: "Maturity date of the security."
348
+ display_name: "Maturity Date"
349
+ mergeability: not_mergeable
350
+ domain_flavors: ["financial_instrument"]
351
+
352
+ - name: "settlement_date"
353
+ type: string
354
+ description: "Settlement date of the security."
355
+ display_name: "Settlement Date"
356
+ mergeability: not_mergeable
357
+ domain_flavors: ["financial_instrument"]
358
+
359
+ - name: "settlement_price"
360
+ type: string
361
+ description: "Settlement price of the security."
362
+ display_name: "Settlement Price"
363
+ mergeability: not_mergeable
364
+ domain_flavors: ["financial_instrument"]
365
+
366
+ - name: "yield"
367
+ type: string
368
+ description: "Yield on the security."
369
+ display_name: "Yield"
370
+ mergeability: not_mergeable
371
+ domain_flavors: ["financial_instrument"]
372
+
373
+ - name: "accreted_price"
374
+ type: string
375
+ description: "Accreted price of the security."
376
+ display_name: "Accreted Price"
377
+ mergeability: not_mergeable
378
+ domain_flavors: ["financial_instrument"]
379
+
380
+ - name: "accrued_interest"
381
+ type: string
382
+ description: "Accrued interest amount on the security."
383
+ display_name: "Accrued Interest"
384
+ mergeability: not_mergeable
385
+ domain_flavors: ["financial_instrument"]
386
+
387
+ - name: "value"
388
+ type: string
389
+ description: "Total value of the security (par + accrued interest)."
390
+ display_name: "Value"
391
+ mergeability: not_mergeable
392
+ domain_flavors: ["financial_instrument"]
393
+
394
+ # --- Legal agreement properties ---
395
+
396
+ - name: "agreement_type"
397
+ type: string
398
+ description: "Type of legal agreement: arbitrage_certificate, prior_report, engagement_letter."
399
+ display_name: "Agreement Type"
400
+ mergeability: not_mergeable
401
+ domain_flavors: ["legal_agreement"]
402
+
403
+ # --- Person properties ---
404
+
405
+ - name: "title"
406
+ type: string
407
+ description: "Person's title or role."
408
+ display_name: "Title"
409
+ mergeability: not_mergeable
410
+ domain_flavors: ["person"]
411
+
412
+ # =============================================================================
413
+ # RELATIONSHIPS
414
+ # =============================================================================
415
+
416
+ relationships:
417
+ - name: "appears_in"
418
+ description: "An entity appears in (is mentioned in) a source document."
419
+ display_name: "Appears In"
420
+ mergeability: not_mergeable
421
+ domain_flavors: ["organization", "fund_account", "financial_instrument", "legal_agreement", "location", "person"]
422
+ target_flavors: ["document"]
423
+ passive: true
424
+
425
+ - name: "issuer_of"
426
+ description: "An organization issued the bonds."
427
+ display_name: "Issuer Of"
428
+ mergeability: not_mergeable
429
+ domain_flavors: ["organization"]
430
+ target_flavors: ["financial_instrument", "legal_agreement"]
431
+
432
+ - name: "trustee_of"
433
+ description: "An organization serves as trustee of the bond issue."
434
+ display_name: "Trustee Of"
435
+ mergeability: not_mergeable
436
+ domain_flavors: ["organization"]
437
+ target_flavors: ["financial_instrument"]
438
+
439
+ - name: "advisor_to"
440
+ description: "An entity serves as advisor (rebate analyst, bond counsel) to another entity."
441
+ display_name: "Advisor To"
442
+ mergeability: not_mergeable
443
+ domain_flavors: ["organization", "person", "legal_agreement"]
444
+ target_flavors: ["financial_instrument", "legal_agreement", "organization"]
445
+
446
+ - name: "fund_of"
447
+ description: "A fund account belongs to the bond issue."
448
+ display_name: "Fund Of"
449
+ mergeability: not_mergeable
450
+ domain_flavors: ["fund_account"]
451
+ target_flavors: ["financial_instrument"]
452
+
453
+ - name: "holds_investment"
454
+ description: "A fund account holds a financial instrument as an investment."
455
+ display_name: "Holds Investment"
456
+ mergeability: not_mergeable
457
+ domain_flavors: ["fund_account"]
458
+ target_flavors: ["financial_instrument"]
459
+
460
+ - name: "party_to"
461
+ description: "An organization or person is a party to a legal agreement, bond issue, or letter of credit."
462
+ display_name: "Party To"
463
+ mergeability: not_mergeable
464
+ domain_flavors: ["organization", "person"]
465
+ target_flavors: ["legal_agreement", "financial_instrument"]
466
+
467
+ - name: "sponsor_of"
468
+ description: "An organization sponsors, develops, or is the principal behind a project, deal, fund, or another organization (e.g. real estate developer behind a housing project partnership)."
469
+ display_name: "Sponsor Of"
470
+ mergeability: not_mergeable
471
+ domain_flavors: ["organization"]
472
+ target_flavors: ["organization", "financial_instrument", "location"]
473
+
474
+ - name: "developer_of"
475
+ description: "An organization is the developer of a project, deal, fund, or another organization (e.g. real estate developer behind a housing project partnership)."
476
+ display_name: "Developer Of"
477
+ mergeability: not_mergeable
478
+ domain_flavors: ["organization"]
479
+ target_flavors: ["organization", "financial_instrument", "location"]
480
+
481
+ - name: "subsidiary_of"
482
+ description: "An organization is a subsidiary, affiliate, or controlled entity of another organization (e.g. a special purpose partnership controlled by a developer)."
483
+ display_name: "Subsidiary Of"
484
+ mergeability: not_mergeable
485
+ domain_flavors: ["organization"]
486
+ target_flavors: ["organization"]
487
+
488
+ - name: "borrower_of"
489
+ description: "An organization is the borrower, applicant, or account party on a financial instrument such as a letter of credit, loan, or bond issue."
490
+ display_name: "Borrower Of"
491
+ mergeability: not_mergeable
492
+ domain_flavors: ["organization"]
493
+ target_flavors: ["financial_instrument", "legal_agreement"]
494
+
495
+ - name: "beneficiary_of"
496
+ description: "An organization is the beneficiary of a financial instrument, letter of credit, or trust arrangement."
497
+ display_name: "Beneficiary Of"
498
+ mergeability: not_mergeable
499
+ domain_flavors: ["organization"]
500
+ target_flavors: ["financial_instrument", "legal_agreement"]
501
+
502
+ - name: "guarantor_of"
503
+ description: "An organization guarantees another organization's obligations or a financial instrument (e.g. letter of credit provider)."
504
+ display_name: "Guarantor Of"
505
+ mergeability: not_mergeable
506
+ domain_flavors: ["organization"]
507
+ target_flavors: ["organization", "financial_instrument"]
508
+
509
+ - name: "successor_to"
510
+ description: "An entity succeeded another entity in a role (e.g. successor trustee, bank name change, corporate merger)."
511
+ display_name: "Successor To"
512
+ mergeability: not_mergeable
513
+ domain_flavors: ["organization", "financial_instrument"]
514
+ target_flavors: ["organization", "financial_instrument"]
515
+
516
+ - name: "signatory_of"
517
+ description: "A person signed or executed a document or agreement on behalf of an organization."
518
+ display_name: "Signatory Of"
519
+ mergeability: not_mergeable
520
+ domain_flavors: ["person"]
521
+ target_flavors: ["legal_agreement", "financial_instrument", "organization"]
522
+
523
+ - name: "located_at"
524
+ description: "An entity is located at a geographic location."
525
+ display_name: "Located At"
526
+ mergeability: not_mergeable
527
+ domain_flavors: ["organization"]
528
+ target_flavors: ["location"]
529
+
530
+ - name: "predecessor_of"
531
+ description: "A prior report or agreement preceded the current one."
532
+ display_name: "Predecessor Of"
533
+ mergeability: not_mergeable
534
+ domain_flavors: ["legal_agreement", "financial_instrument", "organization"]
535
+ target_flavors: ["legal_agreement", "financial_instrument", "organization"]
536
+
537
+ - name: "head_of"
538
+ description: "A person is the head of an organization or location, e.g., President, CEO, or equivalent top leadership role"
539
+ display_name: "Head Of"
540
+ mergeability: not_mergeable
541
+ domain_flavors: ["person"]
542
+ target_flavors: ["organization", "location"]
543
+
544
+ - name: "is_director"
545
+ description: "A person is on the board of directors of an organization. Not to be used for heads of organizations."
546
+ display_name: "Director Of"
547
+ mergeability: not_mergeable
548
+ domain_flavors: ["person"]
549
+ target_flavors: ["organization"]
550
+
551
+ - name: "works_at"
552
+ description: "A person is employed by, or is a founder of an organization. Not to be used for heads or board members of organizations."
553
+ display_name: "Works At"
554
+ mergeability: not_mergeable
555
+ domain_flavors: ["person"]
556
+ target_flavors: ["organization"]
557
+
558
+
559
+ # =============================================================================
560
+ # EVENTS
561
+ # =============================================================================
562
+
563
+ events:
564
+ - name: "Rebate computation"
565
+ description: "Periodic computation of arbitrage rebate liability under IRC Section 148"
566
+ metadata: { severity: medium }
567
+
568
+ - name: "Bond issuance"
569
+ description: "Original issuance of the bonds"
570
+ metadata: { severity: high }
571
+
572
+ - name: "Bond refunding"
573
+ description: "Refunding or refinancing of prior bonds using proceeds from this issue"
574
+ metadata: { severity: high }
575
+
576
+ - name: "Fund valuation"
577
+ description: "Valuation of bond fund accounts at the computation date"
578
+ metadata: { severity: medium }
579
+
580
+ - name: "Rebate payment determination"
581
+ description: "Formal determination of the rebate payment amount owed to the IRS"
582
+ metadata: { severity: high }
583
+
584
+ - name: "Report issuance"
585
+ description: "Issuance of the rebate analysis report by BLX Group"
586
+ metadata: { severity: low }
587
+
588
+ - name: "LOC issuance"
589
+ description: "Issuance of a letter of credit providing credit enhancement or liquidity support"
590
+ metadata: { severity: high }
591
+
592
+ - name: "LOC amendment"
593
+ description: "Amendment to a letter of credit extending its validity, changing terms, or updating parties"
594
+ metadata: { severity: medium }
595
+
596
+ - name: "Party succession"
597
+ description: "Succession of a key deal party (e.g. trustee, bank, beneficiary) from one entity to another"
598
+ metadata: { severity: medium }
@@ -378,7 +378,7 @@ properties:
378
378
  description: "Fiscal period focus from DEI cover page (FY, Q1, Q2, Q3)"
379
379
  display_name: "Fiscal Period Focus"
380
380
  mergeability: not_mergeable
381
- domain_flavors: ["organization"]
381
+ domain_flavors: ["organization", "sec::10_k", "sec::10_q"]
382
382
  passive: true
383
383
 
384
384
  - name: "entity_incorporation_state_dei"
@@ -1,31 +1,68 @@
1
1
  ---
2
2
  name: elemental-api
3
- description: Query the Elemental API for entity discovery, search, and metadata. Use with the Lovelace News Query Server.
3
+ description: Query the Elemental API for entity discovery, search, and metadata. Use with the Lovelace News Query Server or MCP tools.
4
4
  ---
5
5
 
6
6
  # Elemental API
7
7
 
8
8
  This skill provides documentation for the Lovelace Elemental API, the primary interface for querying the Lovelace Knowledge Graph.
9
9
 
10
+ ## Two Access Paths
11
+
12
+ The knowledge graph is accessible via two complementary interfaces:
13
+
14
+ - **MCP Tools** — Agent-friendly tools with built-in entity resolution, fuzzy matching, and citation tracking. Ideal for interactive exploration and Cursor agent workflows. See `mcp.md`.
15
+ - **REST API** — Programmatic endpoints for building app features with `useElementalClient()`. See `entities.md`, `find.md`, `schema.md`, `graph.md`.
16
+
17
+ Both paths access the same data. MCP tools handle PID lookups, NEID formatting,
18
+ and name resolution automatically — the REST API requires you to manage these
19
+ yourself.
20
+
10
21
  ## When to Use This Skill
11
22
 
12
23
  Use this skill when you need to:
13
24
  - Look up entities (companies, people, organizations) by name or ID
14
- - Search for entities by type, property values, or relationships using the expression language
25
+ - Search for entities by type, property values, or relationships
26
+ - Explore relationships between entities (ownership, governance, events)
15
27
  - Get entity metadata (types/flavors, properties)
16
28
  - Build knowledge graphs of entity networks
17
29
 
18
- ## Quick Start
30
+ ## Quick Start (MCP) — Test Here First
31
+
32
+ **If MCP tools are in your tool list, always test data access with them
33
+ before writing application code.** MCP handles entity resolution, PID
34
+ lookups, and NEID formatting automatically — use it to verify what data
35
+ exists and how it's structured before committing to a REST implementation.
36
+
37
+ 1. **Explore the schema**: Call `elemental_get_schema` with no arguments to list entity types, then with a flavor to see its properties and relationships.
38
+ 2. **Look up an entity**: Call `elemental_get_entity` with a name, NEID, or structured ID to resolve it and fetch properties.
39
+ 3. **Follow relationships**: Call `elemental_get_related` to find connected entities.
40
+ 4. **Verify your assumptions**: Check that the flavor IDs, property IDs, and response shapes match what you expect before writing code.
41
+
42
+ ## Quick Start (REST)
19
43
 
20
44
  1. **Find an entity**: Use `entities.md` to look up a company or person by name and get their NEID (Named Entity ID)
21
45
  2. **Get information**: Use the NEID to query entity properties or explore the graph
22
46
  3. **Search**: Use `find.md` for expression-based entity searches
23
47
 
48
+ **Important:** The REST API has several response shape gotchas (schema
49
+ nesting, `fid` vs `findex`, form-encoded bodies). Read the "Common
50
+ Mistakes" section in `find.md` and the `findex` vs `fid` note in
51
+ `schema.md` before implementing.
52
+
24
53
  ## Files in This Skill
25
54
 
26
- See [overview.md](overview.md) for descriptions of each endpoint category:
55
+ See [overview.md](overview.md) for core concepts and how the two access paths relate:
56
+
57
+ **MCP Tools:**
58
+ - `mcp.md` - MCP tool reference: all tools, resources, prompts, capabilities
59
+
60
+ **REST API:**
27
61
  - `entities.md` - Entity search, details, and properties
28
62
  - `find.md` - Expression language for searching entities by type, property values, and relationships
29
63
  - `schema.md` - Data model: entity types (flavors), properties, and schema endpoints
30
64
  - `graph.md` - Visual graph generation
31
65
  - `server.md` - Server status and health
66
+
67
+ **Both paths:**
68
+ - `relationships.md` - Relationship traversal patterns (graph-layer and property-layer)