kids-radar-mcp
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@kids-radar-mcpSearch for kids events near Gangnam-gu this weekend"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Kids Experience Radar
초등학생 부모가 동네 중심점 주변의 무료·저가 체험, 교육, 공원·박물관 프로그램을 매일 모아 보는 정책 준수형 Python MVP입니다. 단순 링크 모음이 아니라 공식 소스 조사, 실행 커넥터, 증분 저장, 위치 필터, 일일 알림 출력까지 포함합니다.
이번 조사·구현 결과
검증 기준일은 **2026-07-15 (Asia/Seoul)**입니다.
구분 | 수량 | 의미 |
지역 포털 | 60 | 17개 시·도의 지자체·교육청 공식 포털/데이터 상품 |
국립·공공기관 | 90 | 독립 기관 89곳 + 중복 탐지용 통합 목록 1개 |
대기업·민간 | 84 | 기업 체험관, 미술관, 문화공간, 키즈 시설의 공식 후보 |
검증된 source unit | 234 | 서로 다른 스키마·갱신주기 또는 독립 운영 단위 |
고유 대표 URL | 222 | 공통 플랫폼 URL을 여러 기관이 공유하는 경우를 합친 값 |
등록 커넥터 | 100 |
|
카탈로그와 직접 연결된 행 | 70 | 69개 고유 connector ID가 공식 목록 또는 공식 데이터 대체 경로에 연결 |
수원·경기 심층 원장 | 51 | 기존 전국 원장을 보완한 기관별 소스 49개 + 기존 구현 감사 표식 2개 |
234개를 “234개 조직”이나 “모두 지금 크롤링 가능”이라고 부풀리지 않습니다. 같은 공통 플랫폼을 쓰는 기관은 source unit으로 각각 검증하되 공통 어댑터로 구현했고, robots 전면 차단·로그인·WAF·NetFunnel·제휴 전용 소스는 코드가 있어도 실행을 막거나 조사 목록으로만 남겼습니다. 수원·경기 51개 심층 원장은 전국 원장과 억지로 합산하지 않고 별도로 제공하며, 공식 URL 51개·공식 SNS 28개·구현/보류 사유를 행 단위로 남겼습니다.
전국 표준데이터는 위 234개와 별도의 집계 레이어입니다. 전국 평생학습강좌 표준데이터는 348개 제공기관 데이터셋, 전국 문화축제 표준데이터는 229개 제공기관 데이터셋을 한 API로 조회합니다. 지자체 포털과 중복될 수 있으므로 234에 더하지 않습니다.
Related MCP server: io.github.CSOAI-ORG/coppa-ferpa-mcp
구현된 커넥터 묶음
서울 공공서비스예약 2종과 서울 문화행사
문화포털 교육·체험/행사·축제/공연·전시 3종
KOPIS 아동공연, e청소년 초등 활동, 산림교육
전국 평생학습강좌·문화축제 표준 API
TourAPI 축제, 공유누리 교육·강좌, 전남도립미술관 API
ODCloud 공식 데이터 11종: 농촌체험, 국립생물·해양생물·낙동강생물자원관, 독립기념관, 국립현대미술관, 수원시립미술관, 울산어린이테마파크, 한국영화박물관, 양천구 어린이 강좌, 고려청자박물관
MODU 국립박물관 14관 공통 어댑터
한국수목원정원관리원 4기관 공통 어댑터
국립공원공단 탐방프로그램 22개 국립공원 공통 어댑터
한국청소년활동진흥원 국립청소년시설 7곳 공개 캠프 목록
인천·부산·충북·전남 계열 교육청 체험예약 4곳과 경상북도교육청 온체험
금천·김포·고양·용인·안양·청주 지자체 예약 포털 6곳(김포는 현재 robots 전면 차단으로 실행 중지)
현대 모터스튜디오 고양, 삼성 이노베이션 뮤지엄, 뮤지엄김치간, 현대어린이책미술관, 리움·호암 공개 목록
GGC 경기도 문화행사 Open API, 경기문화재단 산하기관 통합 행사·교육·전시, 컬처라운지
경기,장수원시 교육·강좌·체험, 수원문화재단 교육정보, 수원박물관·수원광교박물관·수원화성박물관
수원시도서관 통합예약, 수원 생태환경체험교육관, 경기도서관 공개 JSON
고양어린이박물관은 차단된 박물관 사이트 대신 고양시 공식 뉴스 공개 목록·상세만 수집
전체 100개의 ID·키·기본 활성 여부·정책 상태는 docs/CONNECTOR_REGISTRY.csv와 docs/CONNECTOR_REGISTRY.json에 있습니다.
안전 상태를 숫자와 분리한 이유
기본 실행: 서울 공식 sample API 3개 + GGC 공식 Open API 1개
키와 명시 선택 필요: 공식 API·공공데이터 22개(기본 실행 3개까지 합치면 key-gated 25개)
명시 선택 필요: 키 없는 공공 HTML/JSON·민간 공개 목록 74개
KOAGI 4기관: 의미상 robots 404를 RFC 9309 규칙 없음으로 처리하며 공개 목록 실조회 가능
김포시 1곳: 현재
robots.txt가 일반 User-Agent 전체를 차단해 코드가 있어도available=False안양시 1곳: fixture와 브라우저용 응답 파서는 구현했지만 현재 표준 TLS 런타임에서 안전한 연결을 맺지 못해
available=False리움·호암: 의미상 robots 404 처리는 가능하지만 민간 source 승인 없이는 실행 차단
민간 5종: 정확한 source ID를
KIDS_RADAR_APPROVED_SOURCES에 넣기 전에는--all에서도 네트워크 요청 없음삼성 이노베이션 뮤지엄: source 승인과 모호한 robots 응답에 대한 별도 운영자 확인을 모두 통과해야 하며, 명시적
Disallow는 override할 수 없음
예약 버튼 클릭, 로그인, 결제, 캡차, 대기열, 세션 쿠키, 개인 신청 정보는 다루지 않습니다. 네이버 카페·카카오 단톡·밴드에서는 대화나 작성자를 긁지 않고 주최기관의 공식 URL만 제보받습니다.
5분 실행
Python 3.11 이상과 uv가 필요합니다.
uv sync --extra dev
cp .env.example .env
uv run kidradar sources
uv run kidradar doctor서울 공식 sample API로 수집과 반경 검색을 바로 확인할 수 있습니다.
uv run kidradar crawl \
--source seoul_reservation_culture \
--source seoul_reservation_education \
--source seoul_cultural_events \
--from 2026-07-15 --to 2026-12-31
uv run kidradar nearby \
--lat 37.5665 --lon 126.9780 \
--radius-km 20 --child-score-min 0.35전체 공공 API를 쓰려면 .env에 발급 키를 넣습니다.
SEOUL_OPEN_DATA_KEY=...
DATA_GO_KR_SERVICE_KEY=...
ESHARE_API_KEY=...
KOPIS_API_KEY=...
KAKAO_REST_API_KEY=...
KIDS_RADAR_CONTACT=ops@your-domain.example민간 소스는 정책·약관 또는 서면 허용 검토 후 정확한 ID만 승인합니다. 공공 목록은 별도 승인 환경변수 없이 source ID를 선택할 수 있지만 실행 때마다 robots를 확인합니다.
KIDS_RADAR_APPROVED_SOURCES=hmoka_programs,museum_kimchikan_childrenuv run kidradar crawl --source hmoka_programs --from 2026-07-15 --to 2026-12-31삼성 이노베이션 뮤지엄은 공식 이용조건의 사전승낙 조항과 robots.txt가 규칙 대신 HTML을 반환하는 현 상태 때문에 두 개의 독립 확인이 필요합니다. 다음 값은 허가를 대신하지 않으며, 운영자가 메타데이터·링크 이용 범위를 확인한 뒤에만 설정합니다.
KIDS_RADAR_APPROVED_SOURCES=samsung_innovation_education
KIDS_RADAR_ROBOTS_OVERRIDE_SOURCES=samsung_innovation_educationuv run kidradar crawl \
--source samsung_innovation_education \
--from 2026-07-15 --to 2026-12-31키 없이 공개 공공 목록을 선택 실행하는 예시입니다. 신청·로그인·결제 엔드포인트는 호출하지 않습니다.
uv run kidradar crawl \
--source knps_jirisan_trail_programs \
--source kywa_space_camp_programs \
--source incheon_education_experience \
--source geumcheon_education_reservation \
--from 2026-07-15 --to 2026-12-31위치 기반 처리
공식 좌표가 있는 행사는 곧바로 거리순으로 검색합니다. 주소만 있는 공개 장소는 카카오 로컬 주소 검색 API를 선택적으로 사용해 한 번 지오코딩하고 SQLite에 캐시합니다. 사용자의 실시간 위치는 지오코더로 보내지 않습니다.
uv run kidradar geocode --limit 100
uv run kidradar nearby --lat 37.5665 --lon 126.9780 --radius-km 20매일 수집·알림
uv run kidradar crawl --source seoul_reservation_culture --source seoul_cultural_events
uv run kidradar geocode --limit 100
uv run kidradar digest \
--lat 37.5665 --lon 126.9780 --radius-km 20 \
--new-within-hours 26 --format markdown --output data/daily.mdconfig/com.kidsradar.daily.plist.example을 macOS launchd에 맞춰 수정하거나 같은 명령을 cron에서 하루 한 번 실행할 수 있습니다. 수원·경기는 config/com.kidsradar.suwon-gyeonggi.daily.plist.example에 GGC·경기문화재단·경기,장·수원시·수원문화재단·수원 3개 박물관·수원도서관·수원생태·경기도서관·고양시 뉴스 등 12개 공개 소스를 명시했습니다. 한 소스가 실패해도 지오코딩과 다이제스트를 만들고 원래 수집 오류를 종료 코드로 보존합니다. 좌표가 아직 없는 공식 장소도 누락되지 않게 표시하되, 48시간 넘게 갱신되지 않은 행은 기본 제외합니다.
승인 완료된 삼성 소스를 같은 일일 실행에 넣으려면 위 두 환경변수를 launchd 환경에 넣고 plist의 kidradar crawl 명령에 --source samsung_innovation_education을 추가합니다. 승인 전 공개 소스 프로필에는 의도적으로 포함하지 않았습니다. 첫 수집은 모두 신규이므로 실제 발송은 두 번째 정상 수집부터 시작하는 편이 안전합니다.
읽기 API
uv run kidradar serve --host 127.0.0.1 --port 8080GET /health
GET /sources
GET /events?lat=37.5665&lon=126.9780&radius_km=20&free_only=true
GET /events?lat=37.5665&lon=126.9780&radius_km=20&new_within_hours=26외부 공개 시 인증·속도 제한·TLS를 앞단에 추가해야 합니다.
MCP 서버
Codex·Claude Code·Claude Desktop을 포함해 표준 MCP stdio를 지원하는 호스트에서 로컬 위치 검색과 일일 수집 결과를 직접 사용할 수 있습니다. 특정 LLM API에 종속되지 않으며, 호스트가 MCP 도구를 모델에 연결하는 구조입니다.
uv sync --extra dev
uv run kidradar-mcp저장소를 복제하지 않고 GitHub 버전을 직접 실행할 수도 있습니다.
uvx --from git+https://github.com/kimtami/kids-experience-radar.git@v0.1.0 kidradar-mcp프로젝트 루트의 .mcp.json은 Claude Code용 읽기 전용 기본 설정입니다.
Codex 등록 명령, Claude Desktop 설정, 범용 stdio 서버 설정, 6개 도구·2개 리소스·1개
프롬프트, 선택적 수집 allowlist 사용법은 docs/MCP.md에 정리했습니다.
MCP 갱신은 기본 차단되며
KIDS_RADAR_MCP_ALLOW_CRAWL=1과 정확한
KIDS_RADAR_MCP_CRAWL_SOURCES를 함께 지정해야 작동합니다. 임의 URL·파일·DB 경로,
신청·로그인·결제, 웹훅은 MCP 입력으로 노출하지 않습니다.
LLM 자체가 MCP 서버에 직접 붙는 것은 아닙니다. 사용하는 앱이나 에이전트 런타임이 stdio MCP 클라이언트 기능을 제공해야 합니다. 브라우저 채팅처럼 로컬 MCP 프로세스를 실행할 수 없는 제품과 원격 HTTP 전용 클라이언트에는 이 버전을 직접 연결할 수 없습니다.
카탈로그와 연구 원문
docs/SOURCE_CATALOG.csv: 234개 전체, 우선순위·정책·구현 상태·connector IDdocs/SOURCE_CATALOG.json: 같은 내용의 JSONdocs/research/regional-portals.md: 전국 17개 시·도 60개 상세 조사docs/research/public-institutions.md: 공공기관 90개와 공통 어댑터 설계docs/research/private-brands.md: 민간 84개와 allowlist/metadata/partnership/deny 판정docs/research/gyeonggi-deep-discovery.csv: 수원·경기 51개 심층 원장과 구현/보류 상태docs/research/gyeonggi-deep-discovery.md:경기,장, 공식 SNS, 기관별 수집면 검증 기록docs/research/gyeonggi-implementation-audit.md: 수원·경기 13개 실행 커넥터와 라이브 증분 감사docs/research/blocked-source-alternatives.md: 차단·점검 소스의 공식 대체 공개면 감사docs/research/gyeonggi-manual-schema-alternatives.md: 수동 스키마 9개 공개 경로 실사docs/research/gyeonggi-adapter-candidate-feeds.md: 나머지 후보 19개 공식 반복 수집 경로 전수 감사docs/LEGAL_AND_OPERATIONS.md: 법적·운영 안전선docs/MCP.md: 범용 stdio·Codex·Claude MCP 설치, 도구, 권한 경계docs/VERIFICATION.md: 테스트와 라이브 스모크 기록
카탈로그 재생성:
python3 scripts/build_source_catalog.py
uv run python scripts/export_connector_registry.py테스트
uv run pytest
uv run ruff check src tests scripts
uv run python -m compileall -q src tests scripts
uv build라이선스와 외부 데이터
프로그램 코드는 MIT License로 공개합니다. 기관명·상표·수집 대상 사이트의 콘텐츠와 데이터는 MIT 라이선스에 포함되지 않으며 각 제공기관의 이용조건을 따릅니다. 자세한 경계는 THIRD_PARTY_NOTICES.md에 기록했습니다.
Available Tools
6 toolsget_experienceARead-onlyIdempotent
Get one stored event by its public 24-character event ID, without raw data.
| Name | Required | Description | Default |
|---|---|---|---|
| uid | Yes | Public 24-character hexadecimal event ID |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint, so safety profile is covered. The description adds a meaningful behavioral trait—the return excludes raw data—which is not in the annotations and helps the agent set expectations about the response. This goes beyond the structured data.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence, 14 words, and immediately states the action and resource. No fluff or redundant phrases. Perfectly front-loaded and efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter getter with a rich output schema and comprehensive annotations, the description fully covers what the agent needs to know: what it does, how to identify the event, and the one caveat (no raw data). No additional context is required.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, as the 'uid' parameter has a full description and pattern that matches the description's wording. The description adds no extra meaning beyond the schema—it repeats the same information ('public 24-character event ID'). Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Get') and identifies the resource ('stored event') and the exact identifier mechanism ('public 24-character event ID'). It also adds a distinguishing qualifier ('without raw data') that separates it from sibling tools. This is clear and specific.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description clearly implies the usage context: when you have a public event ID and need a single event. However, it does not explicitly name alternatives or state when not to use it. The distinction 'without raw data' hints at a differentiator but isn't an explicit exclusion.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_radar_statusARead-onlyIdempotent
Return local database counts, last runs, and MCP refresh gate state.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare read-only, idempotent, non-destructive behavior. The description adds the specific content returned (counts, last runs, gate state), which provides useful context beyond the structural annotations. No contradictions found.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence, front-loaded with the verb 'Return' and includes only essential information. It is concise and well-structured with no wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (no parameters, output schema exists), the description is sufficiently complete. It enumerates the returned data categories, and interpretation details of the gate state are likely covered by the output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so the description naturally does not need to elaborate. The baseline of 4 applies since schema coverage is trivially 100% and there is no parameter-relevant information to add.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool returns local database counts, last runs, and MCP refresh gate state. This distinguishes it from sibling tools that focus on experience data retrieval or refresh operations.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance is provided about when to use this tool versus alternatives. The description only states what it returns, leaving the agent to infer it is a status check without mentioning specific scenarios like pre-refresh validation or troubleshooting.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_experience_sourcesARead-onlyIdempotent
List registered official sources without making source HTTP requests.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum rows to return | |
| query | No | ||
| cursor | No | ||
| runnable_only | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint, so safety is covered. The description adds valuable behavioral context: the tool does NOT make source HTTP requests, which is a non-obvious trait that affects performance and data freshness. This goes beyond the schema and annotations, justifying a 4.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with clear verb and object. It contains no filler and immediately conveys the core purpose and a critical behavioral constraint. This is exemplary conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the presence of an output schema, annotations, and with 4 parameters but no required ones, the description, while brief, covers the essential distinguishing factor (no source HTTP requests). Combined with structured data, it is sufficiently complete for an agent to select and use the tool, though it lacks explicit alternative references.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is low (25%), so the description should compensate by explaining parameter meanings beyond the schema. It does not; the description only mentions listing without network requests, leaving parameters like runnable_only and cursor unexplained. The schema provides some descriptions, but the low coverage means the description fails to add needed semantics, so a 2 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('List') and names the resource ('registered official sources') plus a key constraint ('without making source HTTP requests'). This distinguishes it from sibling tools like refresh_experience_sources, which likely perform network operations, and makes the tool's scope immediately clear.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides a clear context for when to use this tool: it lists registered sources without triggering source HTTP requests. This implies a preference for offline listing, but it does not explicitly mention alternatives or when not to use it. Still, the absence of network behavior is a strong usage indicator, earning a 4 rather than a 3.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
refresh_experience_sourcesA
Run allowlisted official-source crawlers; this may take several minutes.
| Name | Required | Description | Default |
|---|---|---|---|
| to_date | No | ||
| from_date | No | ||
| max_pages | No | Maximum pages fetched per source | |
| source_ids | Yes | Exact registry source IDs already allowlisted by the operator |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already disclose the safety profile (not read-only, open-world, non-idempotent, not destructive). The description adds a critical latency warning ('may take several minutes') and the constraint that sources must be 'allowlisted', which is useful beyond the annotations. However, it does not disclose side effects like data mutations or rate-limit behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tightly written sentences, front-loaded with the verb and resource. The latency note is essential and efficiently conveyed without any wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a complex long-running crawler, the description gives the most critical operational fact (time duration) and the allowlist constraint. However, it omits any statement about what the crawl updates or how it relates to sibling tools, making the description feel incomplete for decision-making. The output schema covers return values, but the behavioral context is sparse.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description provides no parameter-level guidance whatsoever. Schema coverage is only 50%, with to_date and from_date described generically as calendar dates. Since the description does not compensate for this gap, parameter semantics are weak.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses an explicit verb 'Run' with a specific resource ('allowlisted official-source crawlers') and notes the time duration. This clearly distinguishes it from sibling tools that list, search, or render experiences rather than execute crawls.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for refreshing experience data from official sources and mentions the 'allowlisted' prerequisite, giving some context. However, it does not explicitly state when to use this tool over alternatives like get_experience or search_nearby_experiences, nor does it provide any exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
render_nearby_digestBRead-onlyIdempotent
Render a local nearby digest; this never writes files or sends webhooks.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum rows to return | |
| format | No | markdown | |
| latitude | Yes | WGS84 latitude | |
| free_only | No | ||
| longitude | Yes | WGS84 longitude | |
| radius_km | No | Search radius in kilometers, up to 300 | |
| child_score_min | No | Minimum child relevance score from 0 to 1 | |
| max_stale_hours | No | Positive lookback or freshness window in hours | |
| new_within_hours | No | ||
| include_unknown_location | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds the specific behavioral guarantee 'never writes files or sends webhooks', which goes beyond the readOnlyHint and destructiveHint annotations by naming concrete side-effect-free operations. This provides extra context without contradicting annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence that states the purpose and a key safety property. It is appropriately concise and every part earns its place, though it sacrifices detail for brevity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite having an output schema, the description is too sparse for a tool with 10 parameters and a non-trivial concept like 'nearby digest'. It lacks context on what a digest contains, how it relates to sibling search tools, or any usage prerequisites, leaving the agent under-informed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema covers about 60% of parameters with descriptions, but the tool description itself adds no parameter information. For a tool with 10 parameters, the description's silence on meaning, defaults, or interdependencies leaves a notable gap that the schema only partially fills.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb 'Render' and a clear resource 'local nearby digest', which conveys a distinct purpose from siblings like 'search_nearby_experiences'. However, 'digest' remains somewhat ambiguous and doesn't explicitly differentiate from the search tool, so it doesn't earn a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives such as search_nearby_experiences or get_experience. It only states what the tool does, not the context or exclusion criteria, so it offers minimal usage direction.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_nearby_experiencesBRead-onlyIdempotent
Search the local DB by coordinates; raw source payloads are never returned.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum rows to return | |
| cursor | No | ||
| latitude | Yes | WGS84 latitude | |
| free_only | No | ||
| longitude | Yes | WGS84 longitude | |
| radius_km | No | Search radius in kilometers, up to 300 | |
| include_closed | No | ||
| child_score_min | No | Minimum child relevance score from 0 to 1 | |
| max_stale_hours | No | Positive lookback or freshness window in hours | |
| new_within_hours | No | ||
| include_unknown_location | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare the tool as read-only, idempotent, and non-destructive. The description adds the behavioral detail that 'raw source payloads are never returned,' which is useful beyond annotations, but it does not disclose other behaviors like pagination, sorting, or filtering semantics.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise: two short sentences that state the core purpose and a key behavioral guarantee. Every word adds value, and it is front-loaded with the primary action and resource.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With 11 parameters and a rich output schema, the description is far too sparse to guide an agent on how to set parameters like radius_km, free_only, or max_stale_hours effectively. It does not mention pagination, defaults, or any selection criteria, making it incomplete for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 55%, and several parameters (free_only, include_closed, include_unknown_location) lack schema descriptions. The tool description adds no parameter-specific meaning beyond mentioning coordinates, leaving gaps that the schema alone does not fill.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's action ('Search'), resource ('local DB'), and method ('by coordinates'), making its purpose immediately understandable. It distinguishes from siblings like list_experience_sources (listing sources) and get_experience (fetching a specific experience) by emphasizing geospatial search.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance is provided on when to use this tool versus alternatives such as render_nearby_digest or get_radar_status. Usage context is only implied through the name and coordinate-based description, with no stated exclusions or comparison to sibling tools.
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.
6 tool updates
v0.1.0- First observed
get_experience - First observed
get_radar_status - First observed
list_experience_sources - First observed
refresh_experience_sources - First observed
render_nearby_digest - First observed
search_nearby_experiences
TDQS
Scored across 6 tools
Each tool has a clearly distinct purpose: listing sources, fetching by ID, searching by coordinates, rendering a digest, getting status, and refreshing sources. No two tools overlap in function, making selection unambiguous.
All tools follow a consistent verb_noun snake_case pattern (e.g., list_experience_sources, get_experience, render_nearby_digest). The verbs are descriptive and the nouns consistently name the target resource, making the toolset predictable.
With 6 tools, the server covers its core workflows without bloat. Each tool earns its place, ranging from data ingestion and query to status reporting and digest rendering.
The toolset provides a complete set of operations for the radar use case: listing/refreshing sources, fetching a specific experience, searching nearby, rendering a digest, and checking system status. There are no dead ends or obvious missing operations for this domain.
Maintenance
Related MCP Connectors
MCP server for Product Management
Hosted MCP server for Xweather weather data: conditions, forecasts, alerts, and more.
Publish and discover MCP servers via the official MCP Registry. Powered by HAPI MCP server.
This MCP server provides seamless access to Malaysia's government open data, including datasets, w…
Related MCP Servers
- AlicenseBqualityBmaintenanceThe first MCP server dedicated to families who travel with their kids. Find activities tested by families worldwide11MIT
- AlicenseNot gradedqualityDmaintenanceMCP server for children's privacy compliance, enabling checks under COPPA, FERPA, UK Age Appropriate Design Code, and EU AI Act provisions for minors.62 PyPI1MIT
- AlicenseAqualityAmaintenanceMCP server for searching and discovering 4,000+ public APIs3MIT
- AlicenseAqualityDmaintenanceMCP server for MAScope: search and analyze World MiniApps, get verified reviews and analytics data.619 npmMIT