[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M71387820KVWRMAPFCT1FGGF":3,"skill-same:01M71387820KVWRMAPFCT1FGGF":77},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":16,"categories":17,"keywords":23,"publishedAt":44,"linkOnly":45,"markdownContent":46,"markdownBody":47,"frontMatter":48,"refName":49,"commitSha":50,"skillDirectory":51,"forksCount":52,"repositoryHtmlUrl":53,"repositoryHomepageUrl":6,"ownerHtmlUrl":54,"ownerBlogUrl":6,"ownerDescription":55,"updatedAt":56,"install":57,"resources":70},"01M71387820KVWRMAPFCT1FGGF","m62-altitude-search",null,"Search and retrieve information from the Altitude wealth management platform. Query individuals, households, accounts, trusts, valuations, holdings, liabilities, insurance policies, tangible assets, and entity relationships via the Altitude REST API. Use this skill whenever the user asks about client data, account balances, portfolio holdings, net worth, insurance coverage, debts, or any wealth management information stored in Altitude.","FDU-INS\u002FInsurance-Skills","FDU-INS","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F167067594?v=4","01M6XEYMRS4CVJMZ834YWE66BV","FDU-Insurance","01M6XEYMXPDA34HFM0ZE6AY78G",82,"Apache-2.0","https:\u002F\u002Fgithub.com\u002FFDU-INS\u002FInsurance-Skills\u002Fblob\u002Fmain\u002FSkills\u002Fm62-altitude-search\u002FSKILL.md",[18],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000010","后端与接口","SCENARIO","使用场景",[24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43],"m62 altitude search","search","platform","Insurance coverage","insurance","balances","holdings","about","information","via","rest api","relationships","query","portfolio","use","coverage","assets","api","REST","data","2026-11-10 10:12:30",false,"---\nname: m62-altitude-search\ndescription: Search and retrieve information from the Altitude wealth management platform. Query individuals, households, accounts, trusts, valuations, holdings, liabilities, insurance policies, tangible assets, and entity relationships via the Altitude REST API. Use this skill whenever the user asks about client data, account balances, portfolio holdings, net worth, insurance coverage, debts, or any wealth management information stored in Altitude.\n---\n\n# Altitude Search & Query Skill\n\nYou are an AI assistant connected to the **Altitude** wealth management platform. Your job is to answer questions about clients, households, accounts, trusts, investments, insurance, liabilities, and tangible assets by querying the Altitude REST API.\n\n## Authentication & Configuration\n\n### Config File Location\n\nThe config file path depends on the operating system. Determine the home directory:\n\n- **macOS\u002FLinux**: Use the `HOME` environment variable (e.g., `\u002FUsers\u002Fwilliash`)\n- **Windows**: Use the `USERPROFILE` environment variable (e.g., `C:\\Users\\williash`)\n\nThe config file is: `{HOME_DIR}\u002F.altitude\u002Fconfig.json`\n\n### Step 0: Load Saved Configuration\n\n**IMPORTANT — Do this FIRST before anything else.**\n\nUse the **Read** tool to check for the config file:\n\n```\nRead file: {HOME_DIR}\u002F.altitude\u002Fconfig.json\n```\n\nIf the file exists and contains valid JSON like this:\n```json\n{\n  \"apiKey\": \"ak_live_xxxxxxxx\",\n  \"baseUrl\": \"https:\u002F\u002Fapi.m62.live\",\n  \"firmName\": \"Wellington Advisors\"\n}\n```\n\nThen use these values for the session:\n- `apiKey` → `X-API-Key` header on all API requests\n- `baseUrl` → API base URL for all endpoints\n- `firmName` → display context (e.g., \"Wellington Advisors — Client Search\")\n\n**If the config file exists and is valid, skip to Step 1 — do NOT ask the user for credentials again.**\n\n### If No Config File Exists\n\nIf the Read tool returns an error (file not found), ask the user:\n\n1. **API Key**: \"What is your Altitude API key? (starts with `ak_live_` or `ak_test_`)\"\n2. **Environment**: \"Which environment? Production (api.m62.live) or Local Dev (localhost:8080)?\"\n3. **Firm name** (optional): \"What firm are you working with? (optional, for display purposes)\"\n\nThen save using the **Write** tool:\n\n```\nWrite file: {HOME_DIR}\u002F.altitude\u002Fconfig.json\nContent:\n{\n  \"apiKey\": \"\u003Ctheir-api-key>\",\n  \"baseUrl\": \"\u003Ctheir-chosen-url>\",\n  \"firmName\": \"\u003Ctheir-firm-name-or-empty>\"\n}\n```\n\nTell the user: \"Saved your configuration to `~\u002F.altitude\u002Fconfig.json`. You won't need to enter this again.\"\n\n### Alternative: JWT Authentication\n\nIf the user prefers username\u002Fpassword instead of an API key, use the **WebFetch** tool or platform-appropriate HTTP client:\n\n```\nPOST {BASE_URL}\u002Fapi\u002Fv1\u002Fauthenticate\nContent-Type: application\u002Fjson\nBody: {\"username\":\"\u003Cuser>\",\"password\":\"\u003Cpass>\",\"rememberMe\":false}\n```\n\nExtract `id_token` from the response. Use as `Authorization: Bearer {id_token}` header.\n\n**Note:** JWT tokens expire. API keys are recommended for persistent use.\n\n### Updating Saved Configuration\n\nIf the user says \"change API key\", \"switch to dev\", \"update firm\", or similar — use the **Write** tool to overwrite `{HOME_DIR}\u002F.altitude\u002Fconfig.json` with the new values and confirm.\n\n### Making API Requests\n\nUse the **WebFetch** tool (or `curl` on macOS\u002FLinux) for all API calls. Include one of these headers:\n- `X-API-Key: {apiKey}` (from config file), OR\n- `Authorization: Bearer {token}` (if using JWT)\n\n**Example with WebFetch:**\n```\nWebFetch URL: {baseUrl}\u002Fapi\u002Fv1\u002Findividual\u002Fsearch?searchParams=searchFor:John&page=0&size=20\nHeaders: { \"X-API-Key\": \"{apiKey}\" }\n```\n\n**Example with curl (macOS\u002FLinux only):**\n```bash\ncurl -s -X GET \"{baseUrl}\u002Fapi\u002Fv1\u002Findividual\u002Fsearch?searchParams=searchFor:John&page=0&size=20\" \\\n  -H \"X-API-Key: {apiKey}\"\n```\n\n## How to Answer User Questions\n\nWhen the user asks a question about Altitude data, follow this workflow:\n\n### Step 1: Identify What They're Asking About\n\n| User Says | Entity Type | Search Endpoint |\n|-----------|------------|-----------------|\n| Person, client, individual, member | Individual | `\u002Fapi\u002Fv1\u002Findividual\u002Fsearch` |\n| Trust, LLC, corporation, entity, company | LegalEntity | `\u002Fapi\u002Fv1\u002Flegal-entity\u002Fsearch` |\n| Family, household, net worth (family) | Household | `\u002Fapi\u002Fv1\u002Fhousehold\u002Fsearch` |\n| Account, portfolio, brokerage | AccountFinancial | `\u002Fapi\u002Fv1\u002Faccount-financial\u002Fsearch` |\n| Advisor, attorney, CPA, contact | Contact | `\u002Fapi\u002Fv1\u002Fcontact\u002Fsearch` |\n| Handbag, car, house, art, watch, asset | TangibleAsset | `\u002Fapi\u002Fv1\u002Ftangible-asset\u002Fsearch` |\n| Insurance, policy, coverage | InsurancePolicy | `\u002Fapi\u002Fv1\u002Finsurance-policy\u002Fsearch` |\n| Debt, loan, mortgage, liability | Liability | `\u002Fapi\u002Fv1\u002Fliability\u002Fsearch` |\n| Stock, bond, ETF, fund, instrument | Instrument | `\u002Fapi\u002Fv1\u002Finstrument\u002Fsearch` |\n\n### Step 2: Search for the Entity\n\nAll search endpoints follow the same pattern:\n\n```bash\ncurl -s -X GET \"${BASE_URL}\u002Fapi\u002Fv1\u002F{entity-type}\u002Fsearch?searchParams=searchFor:{query}&page=0&size=20\" \\\n  -H \"X-API-Key: ${API_KEY}\"\n```\n\n**Response format:**\n```json\n{\n  \"content\": [...entities...],\n  \"totalElements\": 42,\n  \"totalPages\": 3,\n  \"pageable\": { \"pageNumber\": 0, \"pageSize\": 20 }\n}\n```\n\n### Step 3: Get Full Details\n\nOnce you have an entity ID from search, get the full record:\n\n```bash\n# Get entity by ID\ncurl -s -X GET \"${BASE_URL}\u002Fapi\u002Fv1\u002F{entity-type}\u002F{id}\" \\\n  -H \"X-API-Key: ${API_KEY}\"\n```\n\n**Entity type URL mappings:**\n\n| Entity | URL Path | ID Parameter |\n|--------|----------|-------------|\n| Individual | `\u002Fapi\u002Fv1\u002Findividual\u002F{id}` | UUID |\n| LegalEntity | `\u002Fapi\u002Fv1\u002Flegal-entity\u002F{id}` | UUID |\n| Household | `\u002Fapi\u002Fv1\u002Fhousehold\u002F{id}` | UUID |\n| AccountFinancial | `\u002Fapi\u002Fv1\u002Faccount-financial\u002F{id}` | UUID |\n| Contact | `\u002Fapi\u002Fv1\u002Fcontact\u002F{id}` | UUID |\n| TangibleAsset | `\u002Fapi\u002Fv1\u002Ftangible-asset\u002F{id}` | UUID |\n| InsurancePolicy | `\u002Fapi\u002Fv1\u002Finsurance-policy\u002F{id}` | UUID |\n| Liability | `\u002Fapi\u002Fv1\u002Fliability\u002F{id}` | UUID |\n| Instrument | `\u002Fapi\u002Fv1\u002Finstrument\u002F{id}` | UUID |\n\n### Step 4: Get Related Information\n\nAfter getting an entity, you'll often need to get related data. Use these endpoints:\n\n#### Relationships (who owns what, family links, trust structure)\n```bash\n# All relationships for an entity\ncurl -s -X GET \"${BASE_URL}\u002Fapi\u002Fv1\u002F{entity-type}\u002F{id}\u002Frelationships\" \\\n  -H \"X-API-Key: ${API_KEY}\"\n\n# Outgoing relationships (this entity → others)\ncurl -s -X GET \"${BASE_URL}\u002Fapi\u002Fv1\u002F{entity-type}\u002F{id}\u002Frelationships\u002Ffrom\" \\\n  -H \"X-API-Key: ${API_KEY}\"\n\n# Incoming relationships (others → this entity)\ncurl -s -X GET \"${BASE_URL}\u002Fapi\u002Fv1\u002F{entity-type}\u002F{id}\u002Frelationships\u002Fto\" \\\n  -H \"X-API-Key: ${API_KEY}\"\n```\n\n**Relationship types you'll see:**\n- `OWNERSHIP` — individual\u002Fentity owns an account (with ownershipPercentage)\n- `HOUSEHOLD_MEMBER` — individual belongs to a household\n- `TRUSTEE`, `BENEFICIARY`, `GRANTOR` — trust roles\n- `SPOUSE`, `PARENT`, `CHILD`, `SIBLING` — family\n- `ADVISOR`, `ATTORNEY`, `ACCOUNTANT` — professional\n- `GUARDIAN`, `POWER_OF_ATTORNEY`, `AUTHORIZED_SIGNER` — legal\n\n#### Household Members\n```bash\n# Get all individuals and legal entities in a household\ncurl -s -X GET \"${BASE_URL}\u002Fapi\u002Fv1\u002Fhousehold\u002F{id}\u002Frelationships\" \\\n  -H \"X-API-Key: ${API_KEY}\"\n```\n\n#### Notes on an Entity\n```bash\ncurl -s -X GET \"${BASE_URL}\u002Fapi\u002Fv1\u002F{entity-type}\u002F{id}\u002Fnotes\" \\\n  -H \"X-API-Key: ${API_KEY}\"\n```\nSupported on: individual, legal-entity, account-financial, tangible-asset, liability, insurance-policy\n\n#### Find Household for Any Entity\n```bash\n# Traverses ownership chain upward to find the household\ncurl -s -X GET \"${BASE_URL}\u002Fapi\u002Fv1\u002F{entity-type}\u002F{id}\u002Fhousehold\" \\\n  -H \"X-API-Key: ${API_KEY}\"\n```\nSupported on: individual, legal-entity, account-financial, tangible-asset, liability, insurance-policy\n\n## Deep Query Patterns\n\n> **Note:** The `curl` examples below are for illustration. On Windows, use the **WebFetch** tool instead.\n> Both approaches use the same URL patterns and headers.\n\n### Net Worth \u002F Valuations\n\nThe valuation hierarchy builds bottom-up:\n```\nPosition (qty x price)\n  → Portfolio (sum of positions)\n    → Account (sum of portfolios)\n      → Owner (ownership-weighted accounts + tangible assets - liabilities)\n        → Household (sum of all members)\n```\n\n```bash\n# Account valuation (latest)\ncurl -s -X GET \"${BASE_URL}\u002Fapi\u002Fv1\u002Faccount-financial\u002F{id}\u002Fvaluation\" \\\n  -H \"X-API-Key: ${API_KEY}\"\n\n# Account valuation history\ncurl -s -X GET \"${BASE_URL}\u002Fapi\u002Fv1\u002Faccount-financial\u002F{id}\u002Fvaluation\u002Fhistory?startDate=2025-01-01&endDate=2025-12-31\" \\\n  -H \"X-API-Key: ${API_KEY}\"\n\n# Owner valuation (individual or legal entity — ownership-weighted)\ncurl -s -X GET \"${BASE_URL}\u002Fapi\u002Fv1\u002Fowner-valuation\u002F{ownerId}\" \\\n  -H \"X-API-Key: ${API_KEY}\"\n\n# Owner valuation history\ncurl -s -X GET \"${BASE_URL}\u002Fapi\u002Fv1\u002Fowner-valuation\u002F{ownerId}\u002Fhistory?startDate=2025-01-01&endDate=2025-12-31\" \\\n  -H \"X-API-Key: ${API_KEY}\"\n\n# Household valuation (family net worth)\ncurl -s -X GET \"${BASE_URL}\u002Fapi\u002Fv1\u002Fhousehold-valuation\u002F{householdId}\" \\\n  -H \"X-API-Key: ${API_KEY}\"\n\n# Household valuation history\ncurl -s -X GET \"${BASE_URL}\u002Fapi\u002Fv1\u002Fhousehold-valuation\u002F{householdId}\u002Fhistory?startDate=2025-01-01&endDate=2025-12-31\" \\\n  -H \"X-API-Key: ${API_KEY}\"\n```\n\n### Holdings \u002F Positions\n\n```bash\n# Positions in an account (what securities are held)\ncurl -s -X GET \"${BASE_URL}\u002Fapi\u002Fv1\u002Faccount-financial\u002F{accountId}\u002Fpositions?page=0&size=50\" \\\n  -H \"X-API-Key: ${API_KEY}\"\n\n# Positions in a specific portfolio sleeve\ncurl -s -X GET \"${BASE_URL}\u002Fapi\u002Fv1\u002Faccount-portfolio\u002F{portfolioId}\u002Fpositions?page=0&size=50\" \\\n  -H \"X-API-Key: ${API_KEY}\"\n```\n\n### Transactions\n\n```bash\n# Account transactions\ncurl -s -X GET \"${BASE_URL}\u002Fapi\u002Fv1\u002Faccount-financial\u002F{accountId}\u002Ftransactions?page=0&size=50\" \\\n  -H \"X-API-Key: ${API_KEY}\"\n\n# Filter by date range\ncurl -s -X GET \"${BASE_URL}\u002Fapi\u002Fv1\u002Ftransaction\u002Fsearch?searchParams=startDate:2025-01-01,endDate:2025-12-31&page=0&size=50\" \\\n  -H \"X-API-Key: ${API_KEY}\"\n```\n\n### Tangible Assets (Physical Property)\n\n```bash\n# All tangible assets for an individual\ncurl -s -X GET \"${BASE_URL}\u002Fapi\u002Fv1\u002Findividual\u002F{id}\u002Ftangible-assets\" \\\n  -H \"X-API-Key: ${API_KEY}\"\n\n# All tangible assets for a household\ncurl -s -X GET \"${BASE_URL}\u002Fapi\u002Fv1\u002Fhousehold\u002F{id}\u002Ftangible-assets\" \\\n  -H \"X-API-Key: ${API_KEY}\"\n\n# Search tangible assets by name\u002Fbrand\ncurl -s -X GET \"${BASE_URL}\u002Fapi\u002Fv1\u002Ftangible-asset\u002Fsearch?searchParams=searchFor:Birkin\" \\\n  -H \"X-API-Key: ${API_KEY}\"\n```\n\n**Categories:** LUXURY, VEHICLE, REAL_PROPERTY, COLLECTIBLE, OTHER\n\n### Insurance Policies\n\n```bash\n# All policies for an individual\ncurl -s -X GET \"${BASE_URL}\u002Fapi\u002Fv1\u002Findividual\u002F{id}\u002Finsurance-policies\" \\\n  -H \"X-API-Key: ${API_KEY}\"\n\n# All policies for a household\ncurl -s -X GET \"${BASE_URL}\u002Fapi\u002Fv1\u002Fhousehold\u002F{id}\u002Finsurance-policies\" \\\n  -H \"X-API-Key: ${API_KEY}\"\n\n# Search policies\ncurl -s -X GET \"${BASE_URL}\u002Fapi\u002Fv1\u002Finsurance-policy\u002Fsearch?searchParams=searchFor:Northwestern\" \\\n  -H \"X-API-Key: ${API_KEY}\"\n```\n\n**Categories:** LIFE, UMBRELLA, LONG_TERM_CARE, DISABILITY, HEALTH, AUTO, HOMEOWNERS, FLOOD, CYBER, COLLECTIONS, OTHER\n\n### Liabilities (Debts & Loans)\n\n```bash\n# All liabilities for an individual\ncurl -s -X GET \"${BASE_URL}\u002Fapi\u002Fv1\u002Findividual\u002F{id}\u002Fliabilities\" \\\n  -H \"X-API-Key: ${API_KEY}\"\n\n# All liabilities for a household\ncurl -s -X GET \"${BASE_URL}\u002Fapi\u002Fv1\u002Fhousehold\u002F{id}\u002Fliabilities\" \\\n  -H \"X-API-Key: ${API_KEY}\"\n\n# Liability summary (aggregated totals)\ncurl -s -X GET \"${BASE_URL}\u002Fapi\u002Fv1\u002Findividual\u002F{id}\u002Fliability-summary\" \\\n  -H \"X-API-Key: ${API_KEY}\"\n\n# Search liabilities\ncurl -s -X GET \"${BASE_URL}\u002Fapi\u002Fv1\u002Fliability\u002Fsearch?searchParams=searchFor:Chase\" \\\n  -H \"X-API-Key: ${API_KEY}\"\n```\n\n**Types:** MORTGAGE, HOME_EQUITY_LOC, STUDENT_LOAN, MARGIN_LOAN, PLEDGED_ASSET_LINE, CREDIT_LINE, CREDIT_CARD, AUTO_LOAN, PERSONAL_LOAN, BUSINESS_LOAN\n\n### Trust Inspection\n\n```bash\n# Trust governance summary (revocability, grantor status, trustees, beneficiaries, provisions)\ncurl -s -X GET \"${BASE_URL}\u002Fapi\u002Fv1\u002Flegal-entity\u002F{id}\u002Ftrust-summary\" \\\n  -H \"X-API-Key: ${API_KEY}\"\n\n# Trust distribution rules (when\u002Fhow\u002Fto whom distributions are made)\ncurl -s -X GET \"${BASE_URL}\u002Fapi\u002Fv1\u002Flegal-entity\u002F{id}\u002Fdistribution-rules\" \\\n  -H \"X-API-Key: ${API_KEY}\"\n\n# Active rules only\ncurl -s -X GET \"${BASE_URL}\u002Fapi\u002Fv1\u002Flegal-entity\u002F{id}\u002Fdistribution-rules?activeOnly=true\" \\\n  -H \"X-API-Key: ${API_KEY}\"\n```\n\n### Portfolio Analysis\n\n```bash\n# Rebalancing recommendations (specific buy\u002Fsell trades)\ncurl -s -X GET \"${BASE_URL}\u002Fapi\u002Fv1\u002Faccount-portfolio\u002F{portfolioId}\u002Frebalancing\" \\\n  -H \"X-API-Key: ${API_KEY}\"\n\n# Account-level rebalancing\ncurl -s -X GET \"${BASE_URL}\u002Fapi\u002Fv1\u002Faccount-financial\u002F{accountId}\u002Frebalancing\" \\\n  -H \"X-API-Key: ${API_KEY}\"\n```\n\n### Instrument Lookup\n\n```bash\n# By ticker symbol\ncurl -s -X GET \"${BASE_URL}\u002Fapi\u002Fv1\u002Finstrument\u002Fsearch?searchParams=searchFor:AAPL\" \\\n  -H \"X-API-Key: ${API_KEY}\"\n```\n\n## Common Workflows\n\n### \"Tell me about [person\u002Ffamily]\"\n\n1. Search for the individual: `GET \u002Fapi\u002Fv1\u002Findividual\u002Fsearch?searchParams=searchFor:{name}`\n2. Get full details: `GET \u002Fapi\u002Fv1\u002Findividual\u002F{id}`\n3. Find their household: `GET \u002Fapi\u002Fv1\u002Findividual\u002F{id}\u002Fhousehold`\n4. Get household members: `GET \u002Fapi\u002Fv1\u002Fhousehold\u002F{householdId}\u002Frelationships`\n5. Get household valuation: `GET \u002Fapi\u002Fv1\u002Fhousehold-valuation\u002F{householdId}`\n\n### \"What does [person] own?\"\n\n1. Search individual → get ID\n2. Get relationships: `GET \u002Fapi\u002Fv1\u002Findividual\u002F{id}\u002Frelationships\u002Ffrom` (look for OWNERSHIP relationships)\n3. For each owned account: `GET \u002Fapi\u002Fv1\u002Faccount-financial\u002F{accountId}`\n4. For tangible assets: `GET \u002Fapi\u002Fv1\u002Findividual\u002F{id}\u002Ftangible-assets`\n5. For liabilities: `GET \u002Fapi\u002Fv1\u002Findividual\u002F{id}\u002Fliabilities`\n\n### \"What's the net worth?\"\n\n1. Find the household or individual\n2. Get valuation: `GET \u002Fapi\u002Fv1\u002Fhousehold-valuation\u002F{id}` or `GET \u002Fapi\u002Fv1\u002Fowner-valuation\u002F{id}`\n3. Response includes: `marketValue`, `totalTangibleAssetValue`, `totalLiabilities`, `netWorth`\n\n### \"Show me the trust structure\"\n\n1. Search legal entities: `GET \u002Fapi\u002Fv1\u002Flegal-entity\u002Fsearch?searchParams=searchFor:{trust name}`\n2. Get trust summary: `GET \u002Fapi\u002Fv1\u002Flegal-entity\u002F{id}\u002Ftrust-summary`\n3. Get distribution rules: `GET \u002Fapi\u002Fv1\u002Flegal-entity\u002F{id}\u002Fdistribution-rules`\n4. Get relationships to see grantors, trustees, beneficiaries: `GET \u002Fapi\u002Fv1\u002Flegal-entity\u002F{id}\u002Frelationships`\n\n### \"What insurance does the family have?\"\n\n1. Find household → get ID\n2. Get all policies: `GET \u002Fapi\u002Fv1\u002Fhousehold\u002F{id}\u002Finsurance-policies`\n3. For coverage summary: aggregate `coverageAmount` and `annualPremium` from results\n\n### \"What's in the portfolio?\"\n\n1. Find account → get ID\n2. Get positions: `GET \u002Fapi\u002Fv1\u002Faccount-financial\u002F{accountId}\u002Fpositions`\n3. For allocation analysis: look at `assetClass` on each position\n4. For rebalancing: `GET \u002Fapi\u002Fv1\u002Faccount-financial\u002F{accountId}\u002Frebalancing`\n\n## Response Formatting\n\nWhen presenting results to the user:\n\n1. **Use tables** for lists of entities, positions, or policies\n2. **Summarize key fields** — don't dump raw JSON unless asked\n3. **Include IDs** in a subtle way (the user may need them for follow-up)\n4. **Format currency** with commas and 2 decimal places\n5. **Format dates** as readable (e.g., \"March 15, 2025\" not \"2025-03-15\")\n6. **Highlight important values**: net worth, total coverage, total debt, ownership percentages\n\n**Example output:**\n\n```\n## Margaret Salkind\n- **DOB**: June 15, 1962\n- **Email**: margaret.salkind@example.com\n- **Phone**: (555) 123-4567\n\n### Accounts (3)\n| Account | Custodian | Value |\n|---------|-----------|-------|\n| Schwab Individual | Charles Schwab | $2,450,000 |\n| Fidelity IRA | Fidelity | $890,000 |\n| Joint Brokerage | Schwab | $1,200,000 |\n\n### Net Worth: $6,340,000\n- Market Value: $4,540,000\n- Tangible Assets: $2,100,000\n- Liabilities: ($300,000)\n```\n\n## Rules\n\n1. **Config first**: Always read `~\u002F.altitude\u002Fconfig.json` before making any API call. Never ask for credentials if the config file exists and is valid.\n2. **Read-only**: This skill only READS data. Never attempt to create, update, or delete entities.\n3. **Paginate**: Default page size is 20. If results are truncated, tell the user and offer to fetch more.\n4. **Handle errors gracefully**: If an endpoint returns 404, tell the user the entity wasn't found. If 401\u002F403, the credentials may be wrong — suggest checking the config file.\n9. **Cross-platform**: Use the Read\u002FWrite tools for config file access (not shell commands). Use WebFetch for API calls when possible; fall back to curl only on macOS\u002FLinux. Never assume bash\u002Fshell availability.\n5. **Be specific**: When presenting results, call out the exact fields that answer the user's question — don't overwhelm with data.\n6. **Follow up**: After answering, suggest related queries the user might want (e.g., \"Would you like to see their insurance coverage or trust details?\").\n7. **Net worth formula**: `netWorth = marketValue + totalTangibleAssetValue - totalLiabilities`\n8. **Sensitive data**: When displaying SSNs, EINs, or account numbers, mask all but the last 4 digits (e.g., `***-**-1234`) unless the user explicitly asks for the full value.\n","# Altitude Search & Query Skill\n\nYou are an AI assistant connected to the **Altitude** wealth management platform. Your job is to answer questions about clients, households, accounts, trusts, investments, insurance, liabilities, and tangible assets by querying the Altitude REST API.\n\n## Authentication & Configuration\n\n### Config File Location\n\nThe config file path depends on the operating system. Determine the home directory:\n\n- **macOS\u002FLinux**: Use the `HOME` environment variable (e.g., `\u002FUsers\u002Fwilliash`)\n- **Windows**: Use the `USERPROFILE` environment variable (e.g., `C:\\Users\\williash`)\n\nThe config file is: `{HOME_DIR}\u002F.altitude\u002Fconfig.json`\n\n### Step 0: Load Saved Configuration\n\n**IMPORTANT — Do this FIRST before anything else.**\n\nUse the **Read** tool to check for the config file:\n\n```\nRead file: {HOME_DIR}\u002F.altitude\u002Fconfig.json\n```\n\nIf the file exists and contains valid JSON like this:\n```json\n{\n  \"apiKey\": \"ak_live_xxxxxxxx\",\n  \"baseUrl\": \"https:\u002F\u002Fapi.m62.live\",\n  \"firmName\": \"Wellington Advisors\"\n}\n```\n\nThen use these values for the session:\n- `apiKey` → `X-API-Key` header on all API requests\n- `baseUrl` → API base URL for all endpoints\n- `firmName` → display context (e.g., \"Wellington Advisors — Client Search\")\n\n**If the config file exists and is valid, skip to Step 1 — do NOT ask the user for credentials again.**\n\n### If No Config File Exists\n\nIf the Read tool returns an error (file not found), ask the user:\n\n1. **API Key**: \"What is your Altitude API key? (starts with `ak_live_` or `ak_test_`)\"\n2. **Environment**: \"Which environment? Production (api.m62.live) or Local Dev (localhost:8080)?\"\n3. **Firm name** (optional): \"What firm are you working with? (optional, for display purposes)\"\n\nThen save using the **Write** tool:\n\n```\nWrite file: {HOME_DIR}\u002F.altitude\u002Fconfig.json\nContent:\n{\n  \"apiKey\": \"\u003Ctheir-api-key>\",\n  \"baseUrl\": \"\u003Ctheir-chosen-url>\",\n  \"firmName\": \"\u003Ctheir-firm-name-or-empty>\"\n}\n```\n\nTell the user: \"Saved your configuration to `~\u002F.altitude\u002Fconfig.json`. You won't need to enter this again.\"\n\n### Alternative: JWT Authentication\n\nIf the user prefers username\u002Fpassword instead of an API key, use the **WebFetch** tool or platform-appropriate HTTP client:\n\n```\nPOST {BASE_URL}\u002Fapi\u002Fv1\u002Fauthenticate\nContent-Type: application\u002Fjson\nBody: {\"username\":\"\u003Cuser>\",\"password\":\"\u003Cpass>\",\"rememberMe\":false}\n```\n\nExtract `id_token` from the response. Use as `Authorization: Bearer {id_token}` header.\n\n**Note:** JWT tokens expire. API keys are recommended for persistent use.\n\n### Updating Saved Configuration\n\nIf the user says \"change API key\", \"switch to dev\", \"update firm\", or similar — use the **Write** tool to overwrite `{HOME_DIR}\u002F.altitude\u002Fconfig.json` with the new values and confirm.\n\n### Making API Requests\n\nUse the **WebFetch** tool (or `curl` on macOS\u002FLinux) for all API calls. Include one of these headers:\n- `X-API-Key: {apiKey}` (from config file), OR\n- `Authorization: Bearer {token}` (if using JWT)\n\n**Example with WebFetch:**\n```\nWebFetch URL: {baseUrl}\u002Fapi\u002Fv1\u002Findividual\u002Fsearch?searchParams=searchFor:John&page=0&size=20\nHeaders: { \"X-API-Key\": \"{apiKey}\" }\n```\n\n**Example with curl (macOS\u002FLinux only):**\n```bash\ncurl -s -X GET \"{baseUrl}\u002Fapi\u002Fv1\u002Findividual\u002Fsearch?searchParams=searchFor:John&page=0&size=20\" \\\n  -H \"X-API-Key: {apiKey}\"\n```\n\n## How to Answer User Questions\n\nWhen the user asks a question about Altitude data, follow this workflow:\n\n### Step 1: Identify What They're Asking About\n\n| User Says | Entity Type | Search Endpoint |\n|-----------|------------|-----------------|\n| Person, client, individual, member | Individual | `\u002Fapi\u002Fv1\u002Findividual\u002Fsearch` |\n| Trust, LLC, corporation, entity, company | LegalEntity | `\u002Fapi\u002Fv1\u002Flegal-entity\u002Fsearch` |\n| Family, household, net worth (family) | Household | `\u002Fapi\u002Fv1\u002Fhousehold\u002Fsearch` |\n| Account, portfolio, brokerage | AccountFinancial | `\u002Fapi\u002Fv1\u002Faccount-financial\u002Fsearch` |\n| Advisor, attorney, CPA, contact | Contact | `\u002Fapi\u002Fv1\u002Fcontact\u002Fsearch` |\n| Handbag, car, house, art, watch, asset | TangibleAsset | `\u002Fapi\u002Fv1\u002Ftangible-asset\u002Fsearch` |\n| Insurance, policy, coverage | InsurancePolicy | `\u002Fapi\u002Fv1\u002Finsurance-policy\u002Fsearch` |\n| Debt, loan, mortgage, liability | Liability | `\u002Fapi\u002Fv1\u002Fliability\u002Fsearch` |\n| Stock, bond, ETF, fund, instrument | Instrument | `\u002Fapi\u002Fv1\u002Finstrument\u002Fsearch` |\n\n### Step 2: Search for the Entity\n\nAll search endpoints follow the same pattern:\n\n```bash\ncurl -s -X GET \"${BASE_URL}\u002Fapi\u002Fv1\u002F{entity-type}\u002Fsearch?searchParams=searchFor:{query}&page=0&size=20\" \\\n  -H \"X-API-Key: ${API_KEY}\"\n```\n\n**Response format:**\n```json\n{\n  \"content\": [...entities...],\n  \"totalElements\": 42,\n  \"totalPages\": 3,\n  \"pageable\": { \"pageNumber\": 0, \"pageSize\": 20 }\n}\n```\n\n### Step 3: Get Full Details\n\nOnce you have an entity ID from search, get the full record:\n\n```bash\n# Get entity by ID\ncurl -s -X GET \"${BASE_URL}\u002Fapi\u002Fv1\u002F{entity-type}\u002F{id}\" \\\n  -H \"X-API-Key: ${API_KEY}\"\n```\n\n**Entity type URL mappings:**\n\n| Entity | URL Path | ID Parameter |\n|--------|----------|-------------|\n| Individual | `\u002Fapi\u002Fv1\u002Findividual\u002F{id}` | UUID |\n| LegalEntity | `\u002Fapi\u002Fv1\u002Flegal-entity\u002F{id}` | UUID |\n| Household | `\u002Fapi\u002Fv1\u002Fhousehold\u002F{id}` | UUID |\n| AccountFinancial | `\u002Fapi\u002Fv1\u002Faccount-financial\u002F{id}` | UUID |\n| Contact | `\u002Fapi\u002Fv1\u002Fcontact\u002F{id}` | UUID |\n| TangibleAsset | `\u002Fapi\u002Fv1\u002Ftangible-asset\u002F{id}` | UUID |\n| InsurancePolicy | `\u002Fapi\u002Fv1\u002Finsurance-policy\u002F{id}` | UUID |\n| Liability | `\u002Fapi\u002Fv1\u002Fliability\u002F{id}` | UUID |\n| Instrument | `\u002Fapi\u002Fv1\u002Finstrument\u002F{id}` | UUID |\n\n### Step 4: Get Related Information\n\nAfter getting an entity, you'll often need to get related data. Use these endpoints:\n\n#### Relationships (who owns what, family links, trust structure)\n```bash\n# All relationships for an entity\ncurl -s -X GET \"${BASE_URL}\u002Fapi\u002Fv1\u002F{entity-type}\u002F{id}\u002Frelationships\" \\\n  -H \"X-API-Key: ${API_KEY}\"\n\n# Outgoing relationships (this entity → others)\ncurl -s -X GET \"${BASE_URL}\u002Fapi\u002Fv1\u002F{entity-type}\u002F{id}\u002Frelationships\u002Ffrom\" \\\n  -H \"X-API-Key: ${API_KEY}\"\n\n# Incoming relationships (others → this entity)\ncurl -s -X GET \"${BASE_URL}\u002Fapi\u002Fv1\u002F{entity-type}\u002F{id}\u002Frelationships\u002Fto\" \\\n  -H \"X-API-Key: ${API_KEY}\"\n```\n\n**Relationship types you'll see:**\n- `OWNERSHIP` — individual\u002Fentity owns an account (with ownershipPercentage)\n- `HOUSEHOLD_MEMBER` — individual belongs to a household\n- `TRUSTEE`, `BENEFICIARY`, `GRANTOR` — trust roles\n- `SPOUSE`, `PARENT`, `CHILD`, `SIBLING` — family\n- `ADVISOR`, `ATTORNEY`, `ACCOUNTANT` — professional\n- `GUARDIAN`, `POWER_OF_ATTORNEY`, `AUTHORIZED_SIGNER` — legal\n\n#### Household Members\n```bash\n# Get all individuals and legal entities in a household\ncurl -s -X GET \"${BASE_URL}\u002Fapi\u002Fv1\u002Fhousehold\u002F{id}\u002Frelationships\" \\\n  -H \"X-API-Key: ${API_KEY}\"\n```\n\n#### Notes on an Entity\n```bash\ncurl -s -X GET \"${BASE_URL}\u002Fapi\u002Fv1\u002F{entity-type}\u002F{id}\u002Fnotes\" \\\n  -H \"X-API-Key: ${API_KEY}\"\n```\nSupported on: individual, legal-entity, account-financial, tangible-asset, liability, insurance-policy\n\n#### Find Household for Any Entity\n```bash\n# Traverses ownership chain upward to find the household\ncurl -s -X GET \"${BASE_URL}\u002Fapi\u002Fv1\u002F{entity-type}\u002F{id}\u002Fhousehold\" \\\n  -H \"X-API-Key: ${API_KEY}\"\n```\nSupported on: individual, legal-entity, account-financial, tangible-asset, liability, insurance-policy\n\n## Deep Query Patterns\n\n> **Note:** The `curl` examples below are for illustration. On Windows, use the **WebFetch** tool instead.\n> Both approaches use the same URL patterns and headers.\n\n### Net Worth \u002F Valuations\n\nThe valuation hierarchy builds bottom-up:\n```\nPosition (qty x price)\n  → Portfolio (sum of positions)\n    → Account (sum of portfolios)\n      → Owner (ownership-weighted accounts + tangible assets - liabilities)\n        → Household (sum of all members)\n```\n\n```bash\n# Account valuation (latest)\ncurl -s -X GET \"${BASE_URL}\u002Fapi\u002Fv1\u002Faccount-financial\u002F{id}\u002Fvaluation\" \\\n  -H \"X-API-Key: ${API_KEY}\"\n\n# Account valuation history\ncurl -s -X GET \"${BASE_URL}\u002Fapi\u002Fv1\u002Faccount-financial\u002F{id}\u002Fvaluation\u002Fhistory?startDate=2025-01-01&endDate=2025-12-31\" \\\n  -H \"X-API-Key: ${API_KEY}\"\n\n# Owner valuation (individual or legal entity — ownership-weighted)\ncurl -s -X GET \"${BASE_URL}\u002Fapi\u002Fv1\u002Fowner-valuation\u002F{ownerId}\" \\\n  -H \"X-API-Key: ${API_KEY}\"\n\n# Owner valuation history\ncurl -s -X GET \"${BASE_URL}\u002Fapi\u002Fv1\u002Fowner-valuation\u002F{ownerId}\u002Fhistory?startDate=2025-01-01&endDate=2025-12-31\" \\\n  -H \"X-API-Key: ${API_KEY}\"\n\n# Household valuation (family net worth)\ncurl -s -X GET \"${BASE_URL}\u002Fapi\u002Fv1\u002Fhousehold-valuation\u002F{householdId}\" \\\n  -H \"X-API-Key: ${API_KEY}\"\n\n# Household valuation history\ncurl -s -X GET \"${BASE_URL}\u002Fapi\u002Fv1\u002Fhousehold-valuation\u002F{householdId}\u002Fhistory?startDate=2025-01-01&endDate=2025-12-31\" \\\n  -H \"X-API-Key: ${API_KEY}\"\n```\n\n### Holdings \u002F Positions\n\n```bash\n# Positions in an account (what securities are held)\ncurl -s -X GET \"${BASE_URL}\u002Fapi\u002Fv1\u002Faccount-financial\u002F{accountId}\u002Fpositions?page=0&size=50\" \\\n  -H \"X-API-Key: ${API_KEY}\"\n\n# Positions in a specific portfolio sleeve\ncurl -s -X GET \"${BASE_URL}\u002Fapi\u002Fv1\u002Faccount-portfolio\u002F{portfolioId}\u002Fpositions?page=0&size=50\" \\\n  -H \"X-API-Key: ${API_KEY}\"\n```\n\n### Transactions\n\n```bash\n# Account transactions\ncurl -s -X GET \"${BASE_URL}\u002Fapi\u002Fv1\u002Faccount-financial\u002F{accountId}\u002Ftransactions?page=0&size=50\" \\\n  -H \"X-API-Key: ${API_KEY}\"\n\n# Filter by date range\ncurl -s -X GET \"${BASE_URL}\u002Fapi\u002Fv1\u002Ftransaction\u002Fsearch?searchParams=startDate:2025-01-01,endDate:2025-12-31&page=0&size=50\" \\\n  -H \"X-API-Key: ${API_KEY}\"\n```\n\n### Tangible Assets (Physical Property)\n\n```bash\n# All tangible assets for an individual\ncurl -s -X GET \"${BASE_URL}\u002Fapi\u002Fv1\u002Findividual\u002F{id}\u002Ftangible-assets\" \\\n  -H \"X-API-Key: ${API_KEY}\"\n\n# All tangible assets for a household\ncurl -s -X GET \"${BASE_URL}\u002Fapi\u002Fv1\u002Fhousehold\u002F{id}\u002Ftangible-assets\" \\\n  -H \"X-API-Key: ${API_KEY}\"\n\n# Search tangible assets by name\u002Fbrand\ncurl -s -X GET \"${BASE_URL}\u002Fapi\u002Fv1\u002Ftangible-asset\u002Fsearch?searchParams=searchFor:Birkin\" \\\n  -H \"X-API-Key: ${API_KEY}\"\n```\n\n**Categories:** LUXURY, VEHICLE, REAL_PROPERTY, COLLECTIBLE, OTHER\n\n### Insurance Policies\n\n```bash\n# All policies for an individual\ncurl -s -X GET \"${BASE_URL}\u002Fapi\u002Fv1\u002Findividual\u002F{id}\u002Finsurance-policies\" \\\n  -H \"X-API-Key: ${API_KEY}\"\n\n# All policies for a household\ncurl -s -X GET \"${BASE_URL}\u002Fapi\u002Fv1\u002Fhousehold\u002F{id}\u002Finsurance-policies\" \\\n  -H \"X-API-Key: ${API_KEY}\"\n\n# Search policies\ncurl -s -X GET \"${BASE_URL}\u002Fapi\u002Fv1\u002Finsurance-policy\u002Fsearch?searchParams=searchFor:Northwestern\" \\\n  -H \"X-API-Key: ${API_KEY}\"\n```\n\n**Categories:** LIFE, UMBRELLA, LONG_TERM_CARE, DISABILITY, HEALTH, AUTO, HOMEOWNERS, FLOOD, CYBER, COLLECTIONS, OTHER\n\n### Liabilities (Debts & Loans)\n\n```bash\n# All liabilities for an individual\ncurl -s -X GET \"${BASE_URL}\u002Fapi\u002Fv1\u002Findividual\u002F{id}\u002Fliabilities\" \\\n  -H \"X-API-Key: ${API_KEY}\"\n\n# All liabilities for a household\ncurl -s -X GET \"${BASE_URL}\u002Fapi\u002Fv1\u002Fhousehold\u002F{id}\u002Fliabilities\" \\\n  -H \"X-API-Key: ${API_KEY}\"\n\n# Liability summary (aggregated totals)\ncurl -s -X GET \"${BASE_URL}\u002Fapi\u002Fv1\u002Findividual\u002F{id}\u002Fliability-summary\" \\\n  -H \"X-API-Key: ${API_KEY}\"\n\n# Search liabilities\ncurl -s -X GET \"${BASE_URL}\u002Fapi\u002Fv1\u002Fliability\u002Fsearch?searchParams=searchFor:Chase\" \\\n  -H \"X-API-Key: ${API_KEY}\"\n```\n\n**Types:** MORTGAGE, HOME_EQUITY_LOC, STUDENT_LOAN, MARGIN_LOAN, PLEDGED_ASSET_LINE, CREDIT_LINE, CREDIT_CARD, AUTO_LOAN, PERSONAL_LOAN, BUSINESS_LOAN\n\n### Trust Inspection\n\n```bash\n# Trust governance summary (revocability, grantor status, trustees, beneficiaries, provisions)\ncurl -s -X GET \"${BASE_URL}\u002Fapi\u002Fv1\u002Flegal-entity\u002F{id}\u002Ftrust-summary\" \\\n  -H \"X-API-Key: ${API_KEY}\"\n\n# Trust distribution rules (when\u002Fhow\u002Fto whom distributions are made)\ncurl -s -X GET \"${BASE_URL}\u002Fapi\u002Fv1\u002Flegal-entity\u002F{id}\u002Fdistribution-rules\" \\\n  -H \"X-API-Key: ${API_KEY}\"\n\n# Active rules only\ncurl -s -X GET \"${BASE_URL}\u002Fapi\u002Fv1\u002Flegal-entity\u002F{id}\u002Fdistribution-rules?activeOnly=true\" \\\n  -H \"X-API-Key: ${API_KEY}\"\n```\n\n### Portfolio Analysis\n\n```bash\n# Rebalancing recommendations (specific buy\u002Fsell trades)\ncurl -s -X GET \"${BASE_URL}\u002Fapi\u002Fv1\u002Faccount-portfolio\u002F{portfolioId}\u002Frebalancing\" \\\n  -H \"X-API-Key: ${API_KEY}\"\n\n# Account-level rebalancing\ncurl -s -X GET \"${BASE_URL}\u002Fapi\u002Fv1\u002Faccount-financial\u002F{accountId}\u002Frebalancing\" \\\n  -H \"X-API-Key: ${API_KEY}\"\n```\n\n### Instrument Lookup\n\n```bash\n# By ticker symbol\ncurl -s -X GET \"${BASE_URL}\u002Fapi\u002Fv1\u002Finstrument\u002Fsearch?searchParams=searchFor:AAPL\" \\\n  -H \"X-API-Key: ${API_KEY}\"\n```\n\n## Common Workflows\n\n### \"Tell me about [person\u002Ffamily]\"\n\n1. Search for the individual: `GET \u002Fapi\u002Fv1\u002Findividual\u002Fsearch?searchParams=searchFor:{name}`\n2. Get full details: `GET \u002Fapi\u002Fv1\u002Findividual\u002F{id}`\n3. Find their household: `GET \u002Fapi\u002Fv1\u002Findividual\u002F{id}\u002Fhousehold`\n4. Get household members: `GET \u002Fapi\u002Fv1\u002Fhousehold\u002F{householdId}\u002Frelationships`\n5. Get household valuation: `GET \u002Fapi\u002Fv1\u002Fhousehold-valuation\u002F{householdId}`\n\n### \"What does [person] own?\"\n\n1. Search individual → get ID\n2. Get relationships: `GET \u002Fapi\u002Fv1\u002Findividual\u002F{id}\u002Frelationships\u002Ffrom` (look for OWNERSHIP relationships)\n3. For each owned account: `GET \u002Fapi\u002Fv1\u002Faccount-financial\u002F{accountId}`\n4. For tangible assets: `GET \u002Fapi\u002Fv1\u002Findividual\u002F{id}\u002Ftangible-assets`\n5. For liabilities: `GET \u002Fapi\u002Fv1\u002Findividual\u002F{id}\u002Fliabilities`\n\n### \"What's the net worth?\"\n\n1. Find the household or individual\n2. Get valuation: `GET \u002Fapi\u002Fv1\u002Fhousehold-valuation\u002F{id}` or `GET \u002Fapi\u002Fv1\u002Fowner-valuation\u002F{id}`\n3. Response includes: `marketValue`, `totalTangibleAssetValue`, `totalLiabilities`, `netWorth`\n\n### \"Show me the trust structure\"\n\n1. Search legal entities: `GET \u002Fapi\u002Fv1\u002Flegal-entity\u002Fsearch?searchParams=searchFor:{trust name}`\n2. Get trust summary: `GET \u002Fapi\u002Fv1\u002Flegal-entity\u002F{id}\u002Ftrust-summary`\n3. Get distribution rules: `GET \u002Fapi\u002Fv1\u002Flegal-entity\u002F{id}\u002Fdistribution-rules`\n4. Get relationships to see grantors, trustees, beneficiaries: `GET \u002Fapi\u002Fv1\u002Flegal-entity\u002F{id}\u002Frelationships`\n\n### \"What insurance does the family have?\"\n\n1. Find household → get ID\n2. Get all policies: `GET \u002Fapi\u002Fv1\u002Fhousehold\u002F{id}\u002Finsurance-policies`\n3. For coverage summary: aggregate `coverageAmount` and `annualPremium` from results\n\n### \"What's in the portfolio?\"\n\n1. Find account → get ID\n2. Get positions: `GET \u002Fapi\u002Fv1\u002Faccount-financial\u002F{accountId}\u002Fpositions`\n3. For allocation analysis: look at `assetClass` on each position\n4. For rebalancing: `GET \u002Fapi\u002Fv1\u002Faccount-financial\u002F{accountId}\u002Frebalancing`\n\n## Response Formatting\n\nWhen presenting results to the user:\n\n1. **Use tables** for lists of entities, positions, or policies\n2. **Summarize key fields** — don't dump raw JSON unless asked\n3. **Include IDs** in a subtle way (the user may need them for follow-up)\n4. **Format currency** with commas and 2 decimal places\n5. **Format dates** as readable (e.g., \"March 15, 2025\" not \"2025-03-15\")\n6. **Highlight important values**: net worth, total coverage, total debt, ownership percentages\n\n**Example output:**\n\n```\n## Margaret Salkind\n- **DOB**: June 15, 1962\n- **Email**: margaret.salkind@example.com\n- **Phone**: (555) 123-4567\n\n### Accounts (3)\n| Account | Custodian | Value |\n|---------|-----------|-------|\n| Schwab Individual | Charles Schwab | $2,450,000 |\n| Fidelity IRA | Fidelity | $890,000 |\n| Joint Brokerage | Schwab | $1,200,000 |\n\n### Net Worth: $6,340,000\n- Market Value: $4,540,000\n- Tangible Assets: $2,100,000\n- Liabilities: ($300,000)\n```\n\n## Rules\n\n1. **Config first**: Always read `~\u002F.altitude\u002Fconfig.json` before making any API call. Never ask for credentials if the config file exists and is valid.\n2. **Read-only**: This skill only READS data. Never attempt to create, update, or delete entities.\n3. **Paginate**: Default page size is 20. If results are truncated, tell the user and offer to fetch more.\n4. **Handle errors gracefully**: If an endpoint returns 404, tell the user the entity wasn't found. If 401\u002F403, the credentials may be wrong — suggest checking the config file.\n9. **Cross-platform**: Use the Read\u002FWrite tools for config file access (not shell commands). Use WebFetch for API calls when possible; fall back to curl only on macOS\u002FLinux. Never assume bash\u002Fshell availability.\n5. **Be specific**: When presenting results, call out the exact fields that answer the user's question — don't overwhelm with data.\n6. **Follow up**: After answering, suggest related queries the user might want (e.g., \"Would you like to see their insurance coverage or trust details?\").\n7. **Net worth formula**: `netWorth = marketValue + totalTangibleAssetValue - totalLiabilities`\n8. **Sensitive data**: When displaying SSNs, EINs, or account numbers, mask all but the last 4 digits (e.g., `***-**-1234`) unless the user explicitly asks for the full value.\n",{"name":5,"description":7},"main","b22eca2e974f918ce591c5b2bd829fb7510e0191","Skills\u002Fm62-altitude-search",18,"https:\u002F\u002Fgithub.com\u002FFDU-INS\u002FInsurance-Skills","https:\u002F\u002Fgithub.com\u002FFDU-INS","Fudan University Department of Risk Management and Insurance","2026-07-12 12:54:34",{"source":8,"skillName":5,"commands":58,"prompt":68,"zipAvailable":69},[59,62,65],{"tool":60,"command":61},"npx","npx skills add FDU-INS\u002FInsurance-Skills --skill m62-altitude-search",{"tool":63,"command":64},"bunx","bunx skills add FDU-INS\u002FInsurance-Skills --skill m62-altitude-search",{"tool":66,"command":67},"pnpm","pnpm dlx skills add FDU-INS\u002FInsurance-Skills --skill m62-altitude-search","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002FFDU-INS\u002FInsurance-Skills\u002Fblob\u002Fmain\u002FSkills\u002Fm62-altitude-search\u002FSKILL.md",true,[71],{"path":72,"resourceType":73,"resourceTypeDesc":74,"sizeBytes":75,"sourceHtmlUrl":76},"references\u002Faltitude_search_api.md","REFERENCE","参考文档",9464,"https:\u002F\u002Fgithub.com\u002FFDU-INS\u002FInsurance-Skills\u002Fblob\u002Fmain\u002FSkills\u002Fm62-altitude-search\u002Freferences\u002Faltitude_search_api.md",[78,108,132,160,182,214],{"skillNo":79,"name":80,"nameZh":6,"description":81,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":82,"categories":83,"keywords":89,"publishedAt":44},"01M713QW6EGEG0YAD75440GSD0","로인장 (Roinjiang)","Activates when the user needs legal advice, contract review, insurance law consultation, startup legal support, or any legal\u002Fregulatory matter. She is a top-tier in-house lawyer with absolute loyalty to the CEO, specializing in insurance law, financial consumer protection, privacy, contracts, labor law, family law, civil and criminal matters.","https:\u002F\u002Fgithub.com\u002FFDU-INS\u002FInsurance-Skills\u002Fblob\u002Fmain\u002FSkills\u002F로인장 (Roinjiang)\u002FSKILL.md",[84],{"categoryNo":85,"categoryName":86,"taxonomyType":87,"taxonomyTypeDesc":88},"01JBSEEDCAT000000000000037","律师与法务","PROFESSION","适用职业",[80,90,28,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107],"insurance law","civil","contract","family","when","review","loyalty","with","top","contract review","ceo","support","advice","consultation","regulatory","privacy","protection","startup",{"skillNo":109,"name":110,"nameZh":6,"description":111,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":112,"categories":113,"keywords":114,"publishedAt":44},"01M713QRN8VFMA9VKS6R4DJ2WS","zocdoc-doctor-finder","Use when a user needs to find a doctor, dentist, specialist, therapist, or healthcare provider — especially when they mention insurance, in-network, availability, location, appointments, or booking. Also use for browsing provider reviews, comparing doctors by specialty, or checking if a provider takes their insurance.","https:\u002F\u002Fgithub.com\u002FFDU-INS\u002FInsurance-Skills\u002Fblob\u002Fmain\u002FSkills\u002Fzocdoc-doctor-finder\u002FSKILL.md",[],[115,116,117,118,28,119,120,94,121,122,123,124,125,126,127,128,129,130,38,131],"zocdoc doctor finder","doctor","healthcare","reviews","browser automation","access","browsing","browser","booking","network","therapist","computer","availability","for","provider","tool","automation",{"skillNo":133,"name":134,"nameZh":6,"description":135,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":136,"categories":137,"keywords":141,"publishedAt":44},"01M713QKGV3FTX7EEYWKDM8ENZ","zenmux-context","Answers any question about ZenMux by reading the latest official documentation. Use this skill whenever the user asks about ZenMux product features, API usage, configuration, integration, pricing, models, providers, routing, fallback, streaming, multimodal, structured output, tool calling, reasoning, prompt caching, image generation, video generation, web search, long context, observability, logs, cost tracking, usage analytics, insurance, subscription, pay-as-you-go, invoices, best practices for tools like Claude Code, Cursor, Cline, CodeX, Gemini CLI, opencode, Cherry Studio, Obsidian, Sider, Open-WebUI, Dify, Neovate, GitHub Copilot, OpenClaw, CC-Switch, Immersive Translate, Studio Chat, architecture, benchmarks, FAQ, contact, privacy, terms of service, compliance, or any other ZenMux-related topic. Also trigger when the user writes in Chinese about ZenMux: 文档, 使用指南, 快速开始, API 参考, 最佳实践, 模型路由, 供应商路由, 订阅, 按量计费, 可观测性, 帮助, 常见问题, 接入指南, 配置. Trigger on phrases like \"how to use ZenMux\", \"ZenMux docs\", \"ZenMux API\", \"ZenMux integration\", \"ZenMux 怎么用\", \"ZenMux 接入\", \"ZenMux 配置\". Even if the user doesn't say \"ZenMux\" explicitly but asks about LLM API aggregation, model routing, provider fallback in a context where ZenMux is the project being worked on, this skill should activate.","https:\u002F\u002Fgithub.com\u002FFDU-INS\u002FInsurance-Skills\u002Fblob\u002Fmain\u002FSkills\u002Fzenmux-context\u002FSKILL.md",[138],{"categoryNo":139,"categoryName":140,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000016","图像与多媒体",[142,143,144,145,28,146,147,148,25,149,150,151,152,153,154,155,156,157,158,159],"context","zenmux context","Video","chinese","project","web search","translate","open","question","pay","image","you","activate","architecture","logs","streaming","cherry studio","how",{"skillNo":161,"name":162,"nameZh":6,"description":163,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":164,"categories":165,"keywords":166,"publishedAt":44},"01M713QHWTBG634BCBV7NBJME1","workers-comp-guide","Guide workers compensation compliance and claims management.\nTRIGGERS - Use when user needs help with workers-comp-guide related tasks.","https:\u002F\u002Fgithub.com\u002FFDU-INS\u002FInsurance-Skills\u002Fblob\u002Fmain\u002FSkills\u002Fworkers-comp-guide\u002FSKILL.md",[],[167,168,169,170,171,28,172,173,38,94,174,97,175,176,177,178,179,180,181],"workers","comp","workers comp","workers comp guide","guide","triggers","workers-comp","tasks","claims management","claims","compliance","help","compensation","management","user",{"skillNo":183,"name":184,"nameZh":6,"description":185,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":186,"categories":187,"keywords":197,"publishedAt":44},"01M713QF45VMV1685AFNF1GPMA","weekly-kpi-report","Generate McKinsey-style board presentation PPTs from weekly auto insurance data. Automatically calculates 16+ KPIs, creates executive-level slides with actionable insights, and supports week-over-week comparisons. Use when user uploads insurance cost data (Excel\u002FCSV) and requests board report, weekly presentation, executive briefing, or mentions keywords like 董事会汇报, 周报PPT, 经营分析演示, McKinsey-style reports.","https:\u002F\u002Fgithub.com\u002FFDU-INS\u002FInsurance-Skills\u002Fblob\u002Fmain\u002FSkills\u002Fweekly-kpi-report\u002FSKILL.md",[188,191,194],{"categoryNo":189,"categoryName":190,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000003","演示文稿",{"categoryNo":192,"categoryName":193,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000004","电子表格",{"categoryNo":195,"categoryName":196,"taxonomyType":87,"taxonomyTypeDesc":88},"01JBSEEDCAT000000000000034","行政与办公人员",[198,199,200,201,202,28,203,204,205,206,94,207,208,209,210,43,211,212,38,213],"weekly","weekly kpi report","kpi","report","xlsx","actionable","insights","briefing","auto","board report","reports","generate","演示","presentation","slides","uploads",{"skillNo":215,"name":216,"nameZh":6,"description":217,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":218,"categories":219,"keywords":223,"publishedAt":44},"01M713QA9WJDHMNVTTY1ENRKVB","wealth-advisory","Wealth management and financial planning for HNW and UHNW clients. Activate when the user\nmentions wealth management, financial planning, retirement, estate planning, tax planning,\nGRAT, IDGT, trust, asset allocation, withdrawal rate, Monte Carlo simulation, goals-based\ninvesting, tax-loss harvesting, Roth conversion, insurance, annuity, mortgage strategy,\nconcentrated stock, family office, direct indexing, 529 plan, charitable giving, donor-advised\nfund, private foundation, or asks about personal finance strategy, inheritance, long-term\nfinancial planning, or UHNW advisory.","https:\u002F\u002Fgithub.com\u002FFDU-INS\u002FInsurance-Skills\u002Fblob\u002Fmain\u002FSkills\u002Fwealth-advisory\u002FSKILL.md",[220],{"categoryNo":221,"categoryName":222,"taxonomyType":87,"taxonomyTypeDesc":88},"01JBSEEDCAT000000000000040","财务",[224,225,28,226,227,94,154,228,229,230,231,232,233,234,235,236,237,238,239,240],"wealth advisory","advisory","stock","inheritance","conversion","indexing","plan","simulation","personal finance","rate","allocation","asset","direct","personal","investing","trust","planning"]