Skip to main content
Glama

Occulytics MCP Server

헬스케어 REIT 자산운용팀(Omega Healthcare Investors)을 위해 AI 어시스턴트가 포트폴리오 질문에 답할 수 있게 해주는 MCP 서버로, 두 가지 공개 소스(Omega의 SEC 10-K 보고서와 CMS Nursing Home Provider Information 파일)에 근거합니다.

브리프에 따른 설계 목표: 서버는 아무 근거도 없는 확신에 찬 숫자를 만들어 내는 대신, 답변이 완전함, 불확실함, 또는 근거 없음 — 그리고 그 이유를 말할 수 있어야 합니다. 모든 도구는 계산된 상태, 주의사항, 출처 정보를 담은 봉투(envelope) 안에 결정적(deterministic) 데이터를 반환합니다.

빠른 시작

모든 것이 오프라인으로 실행됩니다 — 데이터 아티팩트는 커밋되어 있습니다.

npm install
npm run build
npm test          # 41 tests: curated-data checksums, domain units, full e2e over MCP

UI에서 사용해 보기(MCP Inspector가 브라우저에서 열립니다):

npm run inspect

Claude Code에 연결: 프로젝트 범위의 .mcp.json이 포함되어 있습니다 — npm run build 후 Claude Code에서 이 저장소를 열면 occulytics 서버를 사용할 수 있습니다. 또는 전역으로 등록하세요:

claude mcp add occulytics -- node /absolute/path/to/occulytics-mcp/dist/src/server/index.js

Claude Desktop에 연결(claude_desktop_config.json):

{
  "mcpServers": {
    "occulytics": {
      "command": "node",
      "args": ["/absolute/path/to/occulytics-mcp/dist/src/server/index.js"]
    }
  }
}

데모 전에 컴파일된 서버가 실제 stdio에서 작동하는지 확인: npm run smoke. 실시간 소스에서 데이터를 새로 고치려면: npm run ingest (데이터 파이프라인 참조).

Related MCP server: filings-search

무엇을 물어볼 수 있나

다섯 가지 대상 질문과 서버가 실제로 수행하는 작업:

질문

답변 경로

정직한 결과

투자 비중 기준 상위 5개 운영사와 각각이 운영하는 시설 수는?

operator_concentration + operator_facilities

설계상 부분적(Partial): Omega는 FY2020 10-K 이후 전체 운영사 표를 공개하지 않았습니다. 완전한 FY2020 순위(리스/모기지 분해 포함 — 모기지를 포함하면 Consulate가 아니라 Ciena가 실제로 1위였다는 사실 포함) 그리고 FY2025 명시 공개 사항(Maplewood ≥10%, CommuniCare 7.2%)을 각각 날짜를 표기하여 제공하며, 절대 혼합하지 않습니다. "실제 운영" = 실시간 CMS 체인 수치입니다.

상위 운영사 시설 중 전국 평균 인력 기준 미달 시설의 비중은?

operator_metrics (다중 운영사)

운영사별로 계산하고 전국 평균(보고된 간호사 HPRD 3.86) 대비 서버 측에서 통합 계산합니다. 매핑 불가한 운영사는 이름을 명시하고 제외하며, 조용히 누락하지 않습니다.

최대 운영사의 평균 별점과 2년 방향성은?

operator_metrics

Maplewood에 대해서는 근거 없음(Unsupported) (투자 기준 최대): 이 운영사는 CMS 인증 요양원이 아닌 시니어 리빙 커뮤니티를 운영합니다 — 서버는 그 사실과 이유를 명시합니다. CommuniCare(매출 기준 최대)의 경우: 평균 3.05점, 117개 시설 상수 패널(2024년 7월 → 2026년 7월)에서 2.26 → 3.04로 개선.

포트폴리오 점유율은?

portfolio_occupancy

라벨이 붙은 프록시(labeled proxy): Omega는 점유율도 시설 목록도 공개하지 않습니다. 매핑된 운영사 체인의 병상 가중 점유율(전국 80.5% 대비 83.5%)과 커버리지 회계 — 프록시가 실제로 대표하는 포트폴리오 비중과 제외 대상(영국 운영사, Maplewood, 신뢰도 낮은 매핑)을 제공합니다.

최대 운영사에 대한 한 문단 분량의 노출 브리핑은?

portfolio_overview + resolve_operator (+ 집중도)

모델이 문단을 작성합니다; 서버는 결정적 사실만 제공합니다: 투자 비중 ≥10%, 매출 추세 6.6%/5.2%/5.4%, $12.5M 해지 수수료 메모, CMS 커버리지 격차.

아키텍처

세 계층, 단일 의존성 방향, 데이터베이스 없음, 런타임 네트워크 없음:

scripts/ingest.ts      CMS download → validate → project → data/processed/*.json  (committed)
data/curated/*.json    Hand-transcribed 10-K facts + operator→CMS map, per-fact citations
        │
src/domain/            Pure, deterministic, unit-tested: store, resolve, metrics
        │
src/server/            MCP wiring: 9 tools + 1 resource → envelope responses (stdio)
  • data/curated/omega-10k.json — FY2025 포트폴리오 요약 + 집중도 메모, FY2020 운영사 투자 표. 모든 블록은 해당 보고서/섹션을 인용합니다.

  • data/curated/operator-map.json — 정직성의 중추: 각 Omega 운영사의 CMS 매핑과 method(체인 정확 / 법적 이름 패턴 / 큐레이션된 별칭), confidence(높음/중간/낮음), 주의사항; 매핑 불가한 운영사는 그 이유를 기록합니다.

  • src/domain/metrics.ts — 모든 산술 연산: 순위, 점유율, 벤치마크 비교, 상수 패널 별점 추세. 어떤 숫자도 모델에 맡기지 않습니다.

  • src/server/tools.ts — 얇은 계층: 입력 검증(zod), 도메인 호출, 봉투로 감싸기.

답변 봉투(Envelope)

모든 도구가 반환하는 것:

{
  "status": "complete" | "partial" | "unsupported",   // brief's complete / uncertain / unsupported
  "data": { /* deterministic numbers & records, never prose */ },
  "caveats": [ /* why partial; staleness; method notes — computed, not decorative */ ],
  "provenance": [ { "source", "asOf", "detail", "url" } ],
  "cost": { "chars", "estTokens", "basis" }   // self-reported payload size, labeled estimate
}

status는 하드코딩이 아니라 데이터 경로에서 계산됩니다: 매핑되지 않은 운영사는 매핑 항목에 기록된 이유와 함께 unsupported를 산출하고, FY2020 표와 관련된 모든 것은 오래됨 주의사항과 함께 partial이며, 점유율 프록시는 항상 partial입니다.

도구 표면

도구

반환 내용

원시 또는 해석?

portfolio_overview

FY2025 총계, 구성, 지역 + 명시된 운영사 집중도

보고된 대로 해석된 사실

operator_concentration

두 개의 날짜가 표시된 순위 블록(FY2020 전체 / FY2025 명시)

해석됨; %는 보고된 달러에서 계산

resolve_operator

이름 → 정식 운영사 + CMS 매핑 + 신뢰도 + 10-K 맥락(FY2020 순위/%, FY2025 공개 %)

메타데이터

operator_facilities

페이지 처리된 시설 행 + 전체 모집단 요약

원시 행 + 해석된 요약

operator_metrics

별점(평균 + 별점별 분포), 전국 대비 인력, 점유율, 2년 상수 패널 추세(세 운영사 모두); 다중 운영사용 통합 블록

해석됨(모든 산술은 서버 측)

find_facility

CCN/이름으로 시설 드릴다운: 현재 지표, 스냅샷별 이력, 역방향 Omega 운영사 소속

원시 상세 + 해석된 소속

portfolio_occupancy

프록시 점유율 + 2년 추세 + 커버리지 회계

해석됨, 명시적으로 프록시로 라벨링

national_benchmarks

전국 인력/별점/점유율 참조 + 방법론

해석됨

data_coverage

소스, 빈티지, 매핑, 알려진 격차(coverage://data-sources 리소스도 포함)

메타데이터

세분화 근거: 도구는 질문 형태로 만들어졌지만 구성 가능합니다 — 결정적 집계(100개 이상의 행에 대한 LLM 산술이 정확성 위험이 되는 경우)는 도구의 책임이고, 서술적 종합은 모델의 책임입니다. 운영사를 받는 모든 도구는 자유 텍스트를 받아 내부적으로 해석하므로 클라이언트가 2단계 프로토콜을 필요로 하지 않습니다; 해석 실패는 오류가 아니라 unsupported 답변(후보와 알려진 전체 집합 포함)입니다.

교차 소스 질문(10-K 부분 ↔ CMS 부분)은 일급 시민입니다: 운영사 정체성이 조인 키이며 왕복 검증됩니다(10-K 순위의 모든 이름이 모든 CMS 기반 도구에서 해석됨 — e2e 테스트됨), 그리고 모든 해석된 운영사 블록에는 10-K 맥락(omegaContext: FY2020 순위와 포트폴리오 비중, FY2025 공개 집중도)이 내장되어 있어 "우리 최대 운영사는 얼마나 좋은가?" 같은 질문이 두 번째 호출 없이 해결됩니다.

주요 결정 및 트레이드오프

1. 두 빈티지, 절대 혼합하지 않음. 결정적 연구 발견: Omega의 FY2020 이후 10-K에는 운영사별 투자 표가 없습니다 — FY2025 보고서는 Maplewood(투자 비중 ≥10%)와 CommuniCare(7.2%)만 명시합니다. 따라서 현재 "상위 5개"는 명시된 소스만으로는 완전히 뒷받침될 수 없으며, 서버는 정확히 그렇게 말합니다: 순위는 별도로 날짜가 표시된 두 블록으로 제공되고 상태는 이유와 함께 partial입니다. 트레이드오프: 하나의 깔끔한 목록보다 덜 만족스럽지만, 혼합된 목록은 수치적으로 모순되기 때문입니다(2020년 달러 vs 2025년 백분율, 서로 다른 분모).

2. 수기로 큐레이션된 SEC 사실, 기계로 수집된 CMS 데이터. Omega 사실은 서로 다른 형식의 두 보고서에 있는 두 표에 걸친 약 30개의 숫자입니다. 이 범위에서 일반적인 10-K 파서는 이 브리프에 가능한 최악의 실패 모드를 가집니다 — 조용히 잘못된 추출. 대신: 사실별 인용이 있는 큐레이션된 JSON, 체크섬 테스트로 보호됩니다(모든 합산 가능한 열은 보고서 자체의 소계와 합계를 재현해야 함 — 오타 하나가 빌드를 실패시킵니다). CMS 측(14,693행 × 3개 월별 빈티지)은 검증과 함께 완전 자동화되어 있습니다. 규모상 자동화가 더 안전한 선택이기 때문입니다. 트레이드오프: 새 10-K에 대한 새로 고침은 수동 편집입니다; 연간 제출 문서에 대해서는 수용된 선택입니다.

3. 운영사→CMS 조인은 큐레이션되고 신뢰도가 태그된 아티팩트입니다. 두 데이터셋 모두 서로를 참조하지 않습니다. 조인(10-K 운영사 이름 → CMS 체인)은 시스템에서 가장 위험한 추론이므로 코드가 아닌 데이터입니다: 각 매핑은 어떻게 만들어졌고 얼마나 신뢰할 수 있는지 기록하며, 매핑 불가한 운영사는 이유를 기록합니다(Maplewood: 시니어 리빙, CMS 범위 밖; Healthcare Homes: 영국). 낮은 신뢰도 매핑(Agemo → Signature)은 기본적으로 통합 집계에서 제외되고 포함 시 표면화됩니다. 트레이드오프: 수백 개의 REIT로 확장되지는 않습니다; 한 REIT의 약 11개 명시된 운영사에는 정확하며, 메커니즘(매핑별 method/confidence/caveat)이 확장 가능한 부분입니다.

4. 체인 지표는 상위 집합이며 그렇게 명시합니다. Omega의 시설 수준 포트폴리오는 공개되지 않습니다(검증됨: Schedule III는 주별로 집계). 따라서 CMS 지표는 Omega 건물만이 아니라 운영사의 전체 운영을 설명합니다 — 영향을 받는 모든 응답은 그 주의사항을 담고, 점유율 프록시는 커버리지가 (FY2020) 포트폴리오의 어느 비중을 대표하는지 보고합니다(약 40%). 트레이드오프: CMS Ownership 파일에서 시설 수준 재구성이 가능했지만 며칠이 걸리는 퍼지 매칭 작업입니다; 커버리지 회계가 있는 정직한 프록시가 4시간짜리 답변입니다. 그 재구성이 자연스러운 다음 단계입니다.

5. 방법론도 답의 일부입니다. 별점 추세 = 고정 패널(두 엔드포인트 스냅샷 모두에서 평가된 시설), 패널 크기, 제외 기준, 그리고 알려진 편향(체인 소속은 현재 시점 기준)이 응답에 포함됩니다. 인력 벤치마크 = 보고된 총 간호사 HPRD, 시설 평균(질문이 묻는 그대로, 보정되지 않음; 케이스믹스 보정값도 존재하며 그렇게 명시됨). 점유율 = 평균 입소자 수/일 ÷ 인증 병상 수로, 이는 운영상 점유율을 과소평가합니다(인증 병상 > 가동 병상). 이 모든 사항은 여기뿐 아니라 페이로드에도 명시되어 있습니다.

6. 인메모리 JSON, 데이터베이스 없음, 산출물 커밋됨. 15,000개 행은 밀리초 단위로 로드됩니다. DB는 쿼리 요구가 전혀 없는데 운영 표면만 추가합니다. 커밋된 산출물(~6MB) 덕분에 설치 → 빌드 → 데모가 네트워크 없이 동작합니다 — 라이브 데모가 CMS 장애나 변경된 다운로드 URL로 깨질 수 없습니다. 대가: 저장소가 데이터를 보유하며, 수집 파이프라인은 언제든 소스에서 이를 다시 도출합니다.

7. 출력 크기 제한. 시설 목록은 페이지 처리(기본 25개)되며 항상 완전한 요약 블록과 총 개수가 함께 제공됩니다 — 185개 시설 체인도 클라이언트 컨텍스트를 넘치게 하지 않습니다.

테스팅

  • tests/curated.test.ts — 제출 서류 자체 합계에 대한 전사 체크섬.

  • tests/metrics.test.ts, tests/resolve.test.ts — 픽스처에 대한 도메인 단위 테스트(정확한 값).

  • tests/e2e.test.ts — 인메모리 전송 위에서 실제 데이터를 대상으로 하는 실제 MCP 클라이언트: 데모 질문당 하나의 테스트, 지원되지 않는 경로 포함.

  • npm run smoke — 외부 작업 디렉터리에서 실제 stdio를 통한 컴파일된 서버.

효율성 및 토큰 비용

npm run cost는 LLM 클라이언트가 데모 질문당 컨텍스트에서 지불하는 비용(도구 결과 텍스트 + 일회성 도구 스키마)을 완전히 오프라인으로 측정합니다. 토큰 수치는 추정치입니다(문자 수 ÷ 4; 실제 토크나이저는 ±20% 편차). 핵심 가치는 상대 비용과 회귀 추적입니다.

현재 측정값(커밋된 산출물):

질문

호출 수

추정 토큰

Q1 상위 5개 + 시설 수

2

~4.1k

Q2 전국 평균 미만 인력

1

~3.0k

Q3 최대 운영사 별점 + 추세

2

~1.9k

Q4 포트폴리오 점유율

1

~1.0k

Q5 익스포저 브리핑

2

~1.4k

5개 질문 세션

8

~11.4k (+ ~3.2k 일회성 스키마)

모든 응답은 자체 cost 블록({chars, estTokens, basis})을 함께 기록하므로 어시스턴트가 답변의 컨텍스트 비용을 인용할 수 있습니다 — 실제 토큰화는 클라이언트 측에서 이루어지고 서버는 이를 볼 수 없으므로 추정치로 표시됩니다(Claude Code에서 /cost와 /context는 세션 수준에서 여전히 근거 자료입니다).

이를 간결하게 유지하는 두 가지 의도적 최적화가 있습니다(측정 기준, 단순 버전 대비 31% 감소): 모델 노출용 텍스트 미러는 컴팩트 JSON이며(들여쓰기 공백만 해도 페이로드의 ~26%였음), 반복되는 방법론 문자열은 모든 추세 블록이 아닌 응답의 봉투 주의사항에 한 번만 포함됩니다. 시설 목록은 페이지 처리되고, 요약은 항상 전체 모집단 기준입니다. 비용 스탬프 자체는 응답당 ~21토큰을 추가합니다 — 측정된 수치이며, 가시성을 위해 그만한 가치가 있습니다.

데이터 파이프라인

npm run ingest는 data/processed/를 다운로드하고 재구축합니다:

  1. CMS PDC 메타스토어 API에서 현재 Provider Information CSV URL을 확인하고(파일 URL은 매월 변경됨), 이를 다운로드하고 추세 분석용 아카이브 스냅샷 2개(2024년 7월, 2025년 7월)도 함께 다운로드합니다.

  2. 검증(행 수, CMS의 2024→2025 열 이름 변경에 대한 헤더 별칭을 포함한 필수 열, 등급 범위, null 비율) — 실패 시 명확히 오류를 내고 부분 산출물을 절대 쓰지 않습니다.

  3. 세 가지 산출물로 프로젝션: 시설별 슬라이스, CCN→등급 이력, 전국 벤치마크(방법론은 파일에 기록됨).

원시 다운로드는 data/raw/에 캐시됩니다(gitignore 처리됨). --force는 재다운로드합니다.

저장소 구조

data/curated/     hand-verified 10-K facts + operator map (source-cited, checksummed)
data/processed/   generated CMS artifacts (committed; rebuild with npm run ingest)
scripts/          ingest.ts, stdio-smoke.mjs
src/domain/       types, store, resolve, metrics — pure & unit-tested
src/server/       MCP tools + entry (stdio)
tests/            checksums, units, e2e
docs/             PLAN.md (build plan + audit trail), DEMO.md (presentation script)

알려진 한계 및 다음 단계

  • Omega 소유 시설은 개별 식별이 불가능 → 운영사 체인 프록시 사용(다음 단계: CMS Ownership 파일의 부동산 회사 기록과 교차 매핑).

  • 당해 연도 운영사 순위는 본질적으로 불완전합니다(2020 회계연도에 공시 중단). Omega의 분기별 보충 자료가 이를 좁힐 수 있지만, 브리핑의 소스 범위를 벗어납니다.

  • 추세(별점, 인력, 점유율)는 두 개의 엔드포인트 스냅샷 + 중간 지점을 사용합니다. 월별 스냅샷을 더 추가하면 더 부드러워질 것입니다.

  • 영국 시설(부동산의 17.7%)은 CMS에 상응하는 수집 경로가 없습니다(CQC가 이에 상응하는 영국 소스가 될 것입니다).

Available Tools

9 tools
data_coverageData sources, vintages and known gapsA
Read-only

What this server knows, from where, as of when — and what it cannot know. Call this when asked about data freshness, reliability, methodology, or why an answer is qualified. Mirrored as MCP resource coverage://data-sources.

NameRequiredDescriptionDefault

No parameters

Output Schema

NameRequiredDescription
costYes
dataYes
statusYes
caveatsYes
provenanceYes

TDQS

A4.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations provide readOnlyHint=true, so the description doesn't need to disclose side effects. It does add value by explaining that the tool reveals 'known gaps' and 'what it cannot know,' which is beyond the annotation. It also implies the tool is safe to call given read-only nature. No contradiction with annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences with a dash-separated clause, front-loaded with 'What this server knows.' It packs a lot of meaning efficiently—sources, timing, limitations, and when to use—without redundancy. Slightly wordy but appropriate for the scope; not overly verbose, but could be trimmed. Still earns a 4.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool has an output schema, so return values are documented elsewhere. The description covers what data it exposes, when to call it, and what limitations exist. Nothing important is missing given the complexity and the presence of an output schema. It's fully sufficient for an agent to decide whether and when to invoke it.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has zero parameters, and the schema is empty with 100% coverage (nothing to cover). The description adds no parameter-specific information because there are none to document. Baseline for 0 params is 4, and the description doesn't need to compensate for missing schema documentation.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: it tells about the server's data sources, vintages, and known gaps. This distinguishes it from sibling tools like portfolio_overview or national_benchmarks, which are about data content rather than metadata/health. The phrase 'What this server knows, from where, as of when — and what it cannot know' is specific and descriptive.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides explicit usage guidance: 'Call this when asked about data freshness, reliability, methodology, or why an answer is qualified.' This is clear when-to-use instruction. It also mentions the mirrored resource, which adds context for alternative access, though it doesn't explicitly mention sibling tools for exclusion—but the guidance is sufficient.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

find_facilityFind a specific facilityA
Read-only

Look up individual CMS-certified nursing facilities by CCN (exact) or name fragment, optionally filtered by state. Returns full current metrics, the two-year metric history per snapshot, and — when the facility's chain or legal name maps back to one of Omega's known operators — that affiliation (which indicates the operator relationship, NOT proof that Omega owns the building). Use for drill-downs like 'tell me about their Dayton facility'.

NameRequiredDescriptionDefault
limitNo
queryNoCCN (e.g. '365914') or part of a facility name (e.g. 'Maplewood Healthcare')
stateNoOptional two-letter state filter

Output Schema

NameRequiredDescription
costYes
dataYes
statusYes
caveatsYes
provenanceYes

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With readOnlyHint=true in annotations, the safety profile is already declared. The description adds valuable context: it states the tool returns full metrics, two-year history, and affiliation, and importantly clarifies that affiliation is not ownership proof. This goes beyond structured annotations and helps the agent interpret results correctly.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three sentences with no filler. The main purpose and method are front-loaded, followed by return details and a usage example. Every sentence earns its place, and the structure is efficient and scannable.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a read-only lookup with an output schema present, the description covers all essential aspects: query method, optional filter, what is returned (including the affiliation caveat), and a concrete usage example. No critical missing information such as pagination or error handling, which the output schema likely handles. The description is sufficient for an agent to call it correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema descriptions already cover query (CCN or name fragment) and state (optional 2-letter). The description restates these without adding new meaning; limit's constraints are encoded in the schema (default, max, min). Since schema coverage is 67% and the most relevant parameters are described, the description does not significantly enhance semantics beyond the structured data.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb ('Look up'), a precise resource (CMS-certified nursing facilities), and the lookup methods (CCN exact or name fragment). It also indicates the scope ('individual facilities') and differentiates from broader tools by referencing drill-downs, making it clear this is for single-facility lookups.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides a clear when-to-use example ('Use for drill-downs like...') and notes the optional state filter. However, it does not explicitly mention when not to use it or name alternatives among the many sibling tools (e.g., operator_facilities), so exclusion guidance is missing.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

national_benchmarksNational CMS benchmarksA
Read-only

National reference values computed from the current CMS Provider Information file: mean reported total nurse staffing HPRD, star-rating mean and distribution, and bed-weighted national occupancy — each with method and sample size. Use these to contextualize operator metrics.

NameRequiredDescriptionDefault

No parameters

Output Schema

NameRequiredDescription
costYes
dataYes
statusYes
caveatsYes
provenanceYes

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With only readOnlyHint=true in annotations, the description adds meaningful behavioral context: it is computed from the current CMS Provider Information file and includes method and sample size with each value. This reassures the agent about data provenance and the nature of the output. No contradiction with annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single dense sentence that front-loads the key value (national reference values) and packs specific metrics without fluff. It could be broken into two sentences for readability, but it is efficient and every clause conveys needed information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a no-parameter tool with an output schema, the description sufficiently covers what the agent needs to know: what data is computed, from what source, and how to use it. It doesn't need to detail return formats because the output schema exists. This is complete for the tool's simplicity.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has zero parameters, so per the rubric the baseline is 4. The description need not explain parameters, and it doesn't. It does explain what the result contains, which is sufficient for a parameter-less read-only query tool.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly identifies what the tool does: it returns national reference values for specific staffing and occupancy metrics computed from a named data source. It enumerates the exact outputs (mean HPRD, star-rating mean/distribution, bed-weighted occupancy) and notes method/sample size, making it unambiguous and distinct from sibling tools that cover operator-level data.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly states the intended use: 'Use these to contextualize operator metrics.' This gives the agent clear when-to-use guidance. It doesn't name alternatives or exclusion conditions, but the purpose is specific enough that confusion with siblings like portfolio_overview or operator_metrics is unlikely.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

operator_concentrationOperator concentration rankingA
Read-only

Omega's operators ranked by share of total investments. Returns two separately-dated blocks that must not be blended: (1) fy2025Disclosed — the current filing's named concentrations (Maplewood ≥10% of investments, CommuniCare 7.2%; largest-by-revenue vs largest-by-investment differ); (2) fy2020FullRanking — the last complete per-operator table Omega ever filed (Dec 31, 2020), with lease vs mortgage decomposition and computed percentages. Use this for any 'top N operators' question and always report each block's as-of date.

NameRequiredDescriptionDefault
topNNoHow many FY2020-ranked operators to return (named operators only; max 15)

Output Schema

NameRequiredDescription
costYes
dataYes
statusYes
caveatsYes
provenanceYes

TDQS

A4.7/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations only provide readOnlyHint=true, but the description goes far beyond that by disclosing the two-block structure, the exact dates (Dec 31, 2020), the nature of each block (disclosed vs full ranking), example concentrations (Maplewood ≥10%, CommuniCare 7.2%), the difference between largest-by-revenue and largest-by-investment, and the decomposition (lease vs mortgage). This is rich behavioral context with no contradiction.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Although the description is long, every sentence conveys essential information: purpose, block structure, examples, and usage warnings. It is front-loaded with the core purpose, then systematically explains each block in numbered format. No fillers or redundancies; the length is justified by the tool's complexity.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool has an output schema (per context), so return format is covered externally. The description covers all necessary operational details: when to use, what the blocks are, specific examples, and usage warnings. The only minor omission is explicit mention of the topN parameter's effect, but that's in the schema. For a read-only ranking tool, this is fully complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description covers 100% of the single parameter topN, and the description adds no extra semantics beyond what the schema explains ('How many FY2020-ranked operators to return'). The baseline of 3 applies because the schema carries the meaning; the description's mention of two blocks doesn't clarify which block topN applies to (implicitly the FY2020 one).

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb ('ranked by share of total investments') and resource ('Omega's operators'), and immediately clarifies that it returns two distinct blocks with different dates. It distinguishes itself from siblings by explicitly targeting 'top N operators' questions, which is not covered by the other tools like portfolio_overview or operator_facilities.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives an explicit directive: 'Use this for any "top N operators" question', and provides critical usage constraints — 'must not be blended' and 'always report each block's as-of date'. This clearly tells the agent when and how to use it, though it doesn't enumerate alternatives, the explicit use case is sufficient.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

operator_facilitiesList an operator's CMS facilitiesA
Read-only

The CMS-certified nursing facilities affiliated with an operator (via its CMS chain), each with star rating, staffing hours, beds and occupancy, plus an aggregate summary. Output is paged (default 25 rows) — the summary block always covers ALL matching facilities. Accepts free-text operator names.

NameRequiredDescriptionDefault
limitNo
stateNoOptional two-letter state filter, e.g. 'OH'
offsetNo
operatorYesOperator name (free text; resolved internally)

Output Schema

NameRequiredDescription
costYes
dataYes
statusYes
caveatsYes
provenanceYes

TDQS

A3.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already mark this as read-only, so the description's job is to add behavioral detail. It discloses paging behavior (default 25 rows), that the summary block always covers ALL matching facilities regardless of pagination, and that operator names are resolved internally from free text. These are meaningful details beyond the readOnlyHint and help an agent anticipate behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences, front-loaded with the core purpose, then a concise note on paging and summary scope. Every sentence adds useful information with no fluff. It is efficient and easy to scan.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a list-oriented tool with an output schema (present, though not detailed here), the description covers the essential behaviors: what is listed, the paging semantics, the summary coverage, and the free-text handling. It omits explicit mention of the state filter, but that is already in the schema description. Overall, an agent can invoke this tool correctly based on the description alone.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 50%: operator and state have descriptions, while limit and offset do not. The description adds value by explaining free-text resolution for operator and clarifying the default page size, but it does not elaborate on how limit/offset interact or what offset means. It partially compensates for the schema gaps but not completely.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'list' and the resource 'CMS-certified nursing facilities affiliated with an operator', and enumerates specific output fields (star rating, staffing hours, beds, occupancy) plus an aggregate summary. It distinguishes itself by focusing on an operator's facilities via its CMS chain, though it does not explicitly contrast with sibling tools like portfolio_overview or find_facility.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides practical context: it accepts free-text operator names, is paged with a default of 25 rows, and the summary covers all matches. However, it offers no explicit guidance on when to use this tool versus alternatives (e.g., when to use portfolio_overview or operator_metrics), nor any exclusions. Usage context is implied but not directly stated.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

operator_metricsOperator quality/staffing/occupancy metricsA
Read-only

Deterministic CMS metrics for one or more operators (1–10, free-text names): average star rating with per-star distribution, share of facilities below the national average on reported nurse staffing hours per resident day, bed-weighted occupancy, and two-year constant-panel trends (Jul 2024 → Jul 2026) for star rating, staffing HPRD, and occupancy. When multiple operators are given, a server-computed pooled block (union of facilities, deduplicated) is included — do not sum per-operator numbers yourself. Operators without CMS coverage are reported as unsupported with the reason, never silently dropped.

NameRequiredDescriptionDefault
operatorsYesOperator names, e.g. ['CommuniCare', 'Saber', 'Maplewood']

Output Schema

NameRequiredDescription
costYes
dataYes
statusYes
caveatsYes
provenanceYes

TDQS

A3.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, and the description adds valuable behavioral detail: it is deterministic, the pooled block is server-computed to avoid client-side aggregation, and unsupported operators are reported rather than silently omitted. This goes beyond the annotation and clarifies non-obvious behaviors.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is dense but well-formed: it leads with the core purpose, then lists metrics, then addresses the pooling caveat and unsupported-operator behavior. It is a single paragraph but stays on-topic with no filler; every sentence carries essential information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool has an output schema, the return format does not need to be explained. The description covers the metrics, the input constraints, pooling behavior, and error handling. It is adequately complete for an agent to invoke it correctly, though it does not mention any prerequisites or typical usage against siblings.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema covers 100% of parameters with a description and example for 'operators'. The description adds meaning by specifying free-text names (1-10), the pooling behavior for multiple operators, and the error-handling for unsupported operators. This is valuable beyond the schema's basic array definition.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool computes deterministic CMS metrics for operators and enumerates the specific metrics (star rating distribution, staffing HPRD benchmark, occupancy, and constant-panel trends). It does not explicitly distinguish itself from sibling metrics tools like portfolio_overview or operator_concentration, but the described scope is specific enough for an agent to infer the primary use case.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives operational guidance for the multi-operator case (the server-computed pooled block and a caution not to sum per-operator numbers) and for unsupported operators (report with a reason, never drop). However, it does not explain when to choose this tool over its siblings, such as when to use portfolio_overview or national_benchmarks instead. The guidance is present but the alternative-selection context is missing.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

portfolio_occupancyPortfolio occupancy (CMS proxy)A
Read-only

Best-supported occupancy estimate for Omega's portfolio. Omega's 10-K discloses neither occupancy nor a facility list, so this is a defined PROXY: bed-weighted occupancy (avg residents/day ÷ certified beds) across the US nursing facilities of Omega's mapped operator chains, with explicit coverage accounting (who is included, who is excluded and why, and what share of Omega's last fully-disclosed portfolio that covers). Low-confidence operator mappings are excluded unless includeLowConfidence is true.

NameRequiredDescriptionDefault
includeLowConfidenceNoInclude operators whose CMS mapping confidence is 'low' (e.g. Agemo→Signature)

Output Schema

NameRequiredDescription
costYes
dataYes
statusYes
caveatsYes
provenanceYes

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, and the description does not contradict that. The description adds significant behavioral context beyond the annotation: it discloses the proxy definition, inclusion/exclusion logic, the fact that low-confidence mappings are excluded by default, and that it provides coverage accounting. This transparently sets expectations for what the returned estimate represents and its limitations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is information-dense but every sentence earns its place. It front-loads the core purpose ('Best-supported occupancy estimate'), then elaborates on methodology and coverage reasoning. No fluff, no repetition of schema details, and the logical flow from purpose to proxy definition to parameter behavior is clean.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool has an output schema (signal: true), so the description needn't explain return values. Given the complexity of a proxy with inclusion/exclusion logic, the description fully covers what the estimate is, how it is computed, who is included/excluded and why, and what share of the portfolio it covers. It is complete enough for an agent to decide when to call it and what to expect.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% for the single parameter, so the baseline is 3. The description adds value by explaining the practical implication: low-confidence operators are excluded unless the flag is true, and it even provides a concrete example ('Agemo→Signature') that clarifies the kind of mapping involved. This goes beyond the schema's generic parameter description.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a clear purpose: providing a defined, best-supported occupancy estimate for Omega's portfolio, with explicit methodology (bed-weighted proxy). It distinguishes itself from siblings by framing itself as 'best-supported' and explaining exactly what is and isn't covered, which differentiates it from portfolio_overview or operator_metrics without needing to open their schemas.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It implies usage by calling itself the 'best-supported occupancy estimate,' suggesting this is the go-to tool for occupancy. However, it never explicitly mentions when to use another tool (e.g., operator_facilities, national_benchmarks) or provides exclusions. The only usage-related guidance is about the includeLowConfidence parameter, not tool selection context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

portfolio_overviewPortfolio overview (Omega 10-K)A
Read-only

Omega Healthcare Investors' portfolio as disclosed in the latest 10-K (FY2025): total investments by property type, facility mix, geographic concentration, and the operators named in the concentration note. For a ranked list of operators use operator_concentration — this overview names only the two operators the FY2025 filing discloses.

NameRequiredDescriptionDefault

No parameters

Output Schema

NameRequiredDescription
costYes
dataYes
statusYes
caveatsYes
provenanceYes

TDQS

A4.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, so safety is covered. The description adds context about the data source (latest 10-K for FY2025) and a limitation (only two operators from the concentration note), which is useful behavioral information beyond the annotation. It does not contradict the annotation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences: the first defines the tool and its contents, the second routes the agent to a sibling for a different need. It is concise, front-loaded, and contains no fluff. Every sentence earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given that this tool has no parameters, has an output schema available, and is a simple read-only overview, the description provides all necessary context: what data it returns, the source, the limitation on operators, and an alternative for the ranked list. Nothing important is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has zero parameters, so the baseline score is 4. The description adds context about the tool's source and scope, but there are no parameters to explain. The schema is empty with 100% coverage, so no additional parameter semantics are needed.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states what the tool does: provides Omega's portfolio overview from the latest 10-K with specific components (property type, facility mix, geographic concentration, and operators). It explicitly differentiates from operator_concentration by noting this overview names only two operators, so an agent can immediately tell them apart.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly names the alternative operator_concentration and the condition that selects it: when a ranked list of operators is needed. It clearly states that this overview only includes the two operators disclosed in the filing, leaving no ambiguity about when to use this tool versus its sibling.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

resolve_operatorResolve an operator nameA
Read-only

Resolve a free-text operator name to the curated Omega operator record and its CMS chain mapping (method, confidence, caveats). Use to disambiguate names or check whether CMS metrics are even possible for an operator before asking for them. Other tools resolve names internally, so calling this first is optional.

NameRequiredDescriptionDefault
queryYesOperator name, e.g. 'Maplewood', 'CommuniCare', 'Saber Health'

Output Schema

NameRequiredDescription
costYes
dataYes
statusYes
caveatsYes
provenanceYes

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate readOnlyHint=true, so the description's added value is disclosing the return structure (method, confidence, caveats) and noting that it is an optional pre-step because other tools resolve internally. This goes beyond the annotation without contradicting it.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is only two sentences, front-loaded with the core purpose and followed by usage context. Every sentence earns its place; there is no redundancy or fluff.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema present, the description does not need to detail return values. It covers purpose, usage, and optionality sufficiently for a single-parameter tool. The guidance about other tools resolving internally is valuable context.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and the parameter already includes examples and a clear description. The tool description adds little beyond the schema—it reaffirms 'free-text' but does not introduce new semantics. Baseline of 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action (resolve) and the resource (free-text operator name to curated Omega record and CMS chain mapping). It explicitly mentions the output includes method, confidence, and caveats, and differentiates from siblings by noting that other tools resolve names internally, making this tool for disambiguation and feasibility checks.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It provides explicit when-to-use guidance: disambiguate names or check whether CMS metrics are possible. It also states that other tools resolve names internally, so calling this first is optional, which effectively tells when not to use it. This is clear and actionable.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 9 tool updatesv1.0.0
    • First observeddata_coverage
    • First observedfind_facility
    • First observednational_benchmarks
    • First observedoperator_concentration
    • First observedoperator_facilities
    • First observedoperator_metrics
    • First observedportfolio_occupancy
    • First observedportfolio_overview
    • First observedresolve_operator

TDQS

A4.4/5.0

Scored across 9 tools

Disambiguation5/5

Each tool has a clearly distinct purpose: resolving names, viewing portfolio overview, ranking operators, listing facilities, computing metrics, estimating occupancy, individual facility lookup, national benchmarks, and data coverage. Even the overlapping facility tools differ by entry point (operator vs. CCN/name).

Naming Consistency5/5

All tool names follow a consistent verb_noun or noun_noun pattern in lowercase snake_case (e.g., resolve_operator, portfolio_overview, find_facility, data_coverage). There is no mixing of conventions or vague verbs.

Tool Count5/5

With 9 tools, the server is well-scoped for its domain of analyzing Omega's portfolio and CMS facility metrics. Each tool addresses a specific need without redundancy or bloat, falling comfortably in the ideal range.

Completeness5/5

The tool surface covers the full analytical workflow: operator disambiguation, portfolio perspective, concentration rankings, facility-level data, aggregated metrics with trends, occupancy estimation, national context, and data transparency. No obvious gaps exist for the domain.

Maintenance

ActivityStale
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • F
    license
    Not graded
    quality
    C
    maintenance
    Enables AI agents to search, retrieve, and analyze SEC 10-K filings with hybrid BM25+kNN retrieval, per-claim citations, and strict numeric grounding verification.
    -
  • F
    license
    Not graded
    quality
    B
    maintenance
    Enables AI agents to answer questions about Japanese long-term care supply and demand, such as whether a municipality has enough special nursing homes, using public data.
    -
  • F
    license
    A
    quality
    C
    maintenance
    Enables AI assistants to perform institutional research and due diligence by retrieving, extracting, validating, and citing data from public sources, then generating reports in markdown, HTML, or PDF.
    23
    -