@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.
- package/commands/build_my_app.md +51 -4
- package/package.json +1 -1
- package/rules/api.mdc +56 -0
- package/rules/cookbook.mdc +163 -1
- package/skills/data-model/bny/DATA_DICTIONARY.md +184 -0
- package/skills/data-model/bny/schema.yaml +598 -0
- package/skills/data-model/edgar/schema.yaml +1 -1
- package/skills/elemental-api/SKILL.md +41 -4
- package/skills/elemental-api/entities.md +241 -114
- package/skills/elemental-api/find.md +59 -9
- package/skills/elemental-api/mcp.md +180 -0
- package/skills/elemental-api/overview.md +73 -20
- package/skills/elemental-api/relationships.md +163 -0
- package/skills/elemental-api/schema.md +54 -8
|
@@ -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
|
|
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
|
|
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)
|