{"server":{"name":"app.geometry/mcp","title":"GEOMETRY","$schema":"https://static.modelcontextprotocol.io/schemas/2025-12-11/server.schema.json","remotes":[{"url":"https://mcp.geometry.app/mcp","type":"streamable-http"}],"version":"0.66.0","repository":{"url":"https://github.com/goqolabs/geometry-mcp","source":"github"},"description":"Deterministic calendars and cosmic date JSON for AI agents via MCP (Gregorian 1900-2100)."},"_meta":{"io.modelcontextprotocol.registry/official":{"status":"active","isLatest":true,"updatedAt":"2026-08-28T23:41:35.066366Z","publishedAt":"2026-08-28T23:41:35.066366Z","statusChangedAt":"2026-08-28T23:41:35.066366Z"},"dev.protogrid/connectability":{"class":"R0","autonomous":true,"human_steps":[],"preferred":{"kind":"remote","idx":0},"remotes":[{"idx":0,"url":"https://mcp.geometry.app/mcp","transport":"streamable-http","templated":false,"headers":[],"auth":{"type":"none","location":null,"secret_name":null,"oauth":null},"protocol":{"supported_versions":["2025-06-18"],"stateless":true},"health":{"reachable":true,"uptime_30d":1,"latency_ms_p50":1212,"consecutive_failures":0,"last_probe_at":"2026-10-20T07:01:23.318Z","last_ok_at":"2026-10-20T07:01:23.318Z"}}],"packages":[]},"dev.protogrid/tools":[{"name":"get_age_plate","title":"Magian Age board (52 seats)","description":"USE for one Magian Grand Solar Age board by age_no (0..89; larger values wrap via mod 90). No birth date / no PII. NOT Long Range Journey; NOT get_age_spread person slice. RETURNS exactly 52 seats: card ref + age_spread_pos + planet_row + planet_col + is_fixed_card. Fixed seats: J hearts@11, 8 clubs@21, K spades@52.","annotations":{"readOnlyHint":true,"openWorldHint":false,"idempotentHint":true,"destructiveHint":false},"source":"probe","observed_at":"2026-10-20T07:01:23.318Z"},{"name":"get_age_spread","title":"Magian Age seat (birth + as-of)","description":"USE for one person's Magian Age Spread board seat: birth_date + as_of_date (completed civil years; no wall clock). NOT the 90-year Long Range Journey theme card; NOT get_date sky/calendars; NOT two-person scoring. RETURNS compact cosmic birth card + age_spread {age_civil, age_no (mod 90), age_aliases, age_spread_pos, planet_row, planet_col, is_fixed_card}. Feb-29 follows Postgres age(). Error as_of_before_birth when as_of_date < birth_date.","annotations":{"readOnlyHint":true,"openWorldHint":false,"idempotentHint":true,"destructiveHint":false},"source":"probe","observed_at":"2026-10-20T07:01:23.318Z"},{"name":"get_compatibility","title":"Compatibility (two dates)","description":"USE when comparing exactly two people by Gregorian date. NOT for one date (moon/season/Rx/weekday/leap year/day_ruler → get_date) or names → get_name. Requires date_a and date_b. RETURNS scored dyad: cosmic_card_a/b (each side is full get_date shape incl. tarot_majors.greer/tarot_school, karma, planetary_spread; Cosmic card = birth = life = sun via also_called; planetary_spread and retrogrades_active planets include planet_type/symbol/emoji + names{} 10 cultures; each planetary_spread slot carries spread_pos 1-14 — sort by spread_pos for canonical Life-spread order), connections, overall_score, Chinese zodiac + true sidereal aspects, element harmony, life paths. temporal_context.date_a/b = {band, payload_scope} (full|extended|out_of_range × full|cosmic_card_only; 1900-2100 focus).","annotations":{"readOnlyHint":true,"openWorldHint":false,"idempotentHint":true,"destructiveHint":false},"source":"probe","observed_at":"2026-10-20T07:01:23.318Z"},{"name":"get_date","title":"Date identity (any date)","description":"PRIMARY single-date tool. USE for any one Gregorian date when the ask needs moon phase (incl. blue/blood/supermoon/micromoon flags, Earth-Moon distance, phase_gmt, prev/next blue or blood dates), season/equinox anchors, classical retrogrades (retrogrades_active phase=retrograde), calendars, lunar year, Cosmic card (same card as life/sun — cosmic.also_called + planetary_spread.sun), karmic source/spirit, 14 planetary Life-spread cards, weekday or leap year (calendar_meta.weekday / is_leap_year), day_ruler (weekday planetary ruler Roman/Greek/Norse), or full date identity. NOT for two-person scoring → get_compatibility; name text → get_name. RETURNS cosmic block (incl. karma + planetary_spread) + tarot_majors (greer + tarot_school) + day_ruler (full+extended) + temporal blocks (moon_phase, season, retrogrades_active, calendar_meta, …). planetary_spread and retrogrades_active planets include planet_type/symbol/emoji + names{} (greek,norse,celtic,egyptian,sumerian,babylonian,mesopotamian,arabic,sanskrit,chinese). Each planetary_spread slot carries spread_pos (1-14 canonical Life-spread order; midheaven=13, phoenix=14 — sort by spread_pos; jsonb object keys are unordered). temporal_context={band, payload_scope} (band full|extended|out_of_range; payload_scope full|cosmic_card_only). Out-of-range responses set cosmic_card_available.","annotations":{"readOnlyHint":true,"openWorldHint":false,"idempotentHint":true,"destructiveHint":false},"source":"probe","observed_at":"2026-10-20T07:01:23.318Z"},{"name":"get_long_range","title":"Long Range Journey theme card","description":"USE for one person's 90-year Long Range Journey theme card: birth_date + as_of_date (completed civil years; no wall clock). NOT Magian Age Spread board (get_age_spread / get_age_plate); NOT get_date sky/calendars. RETURNS compact cosmic birth card + long_range {age_civil, age_no (mod 90), age_aliases, theme_card, spread_offset, planetary_period}. One theme card only — never 90 ages. Feb-29 follows Postgres age(). Error as_of_before_birth when as_of_date < birth_date.","annotations":{"readOnlyHint":true,"openWorldHint":false,"idempotentHint":true,"destructiveHint":false},"source":"probe","observed_at":"2026-10-20T07:01:23.318Z"},{"name":"get_name","title":"Name → cosmic cards","description":"USE for person or word name text only (gematria → cosmic cards + Expression / Soul Urge / Personality). NOT for any date questions (weekday, leap year, moon, season, Rx, Cosmic card, day_ruler, Life Path) → get_date; two people → get_compatibility. RETURNS Francis Bacon cards, Latin cipher suite, periodic{} + periodic_set{}, numerology (expression/soul_urge/personality plus full-name karmic_lessons / hidden_passion / cornerstone / capstone / first_vowel / echoes and number lens polarity/planet/element/color), and per-word tarot/medicine/iching/chakra/lenormand/karma/planetary_spread. Free-text input guard (Del as a name is allowed; DEL FILE and SQL verbs are not).","annotations":{"readOnlyHint":true,"openWorldHint":false,"idempotentHint":true,"destructiveHint":false},"source":"probe","observed_at":"2026-10-20T07:01:23.318Z"},{"name":"get_plays_numerology","title":"Baseball play numerology (HR/K milestones)","description":"USE when a player's season HR# or K# aligns with calendar day-of-month, jersey number, or inning on baseball.plays. NOT for roster cardology → get_team_chemistry; cosmic day card → get_date. Requires retro_id. mode=season (default) | spotlight (tier<=1) | career_summary (aggregates only). lane=both (default) | hr | k. Optional game_dt filter, tier_max (0-4), limit (1-500). RETURNS summary + events[] with pattern labels (day=HR#, HR#=jersey, day=K#=jersey, etc.). Overlay get_date(game_dt) for MCP day-card narrative.","annotations":{"readOnlyHint":true,"openWorldHint":false,"idempotentHint":true,"destructiveHint":false},"source":"probe","observed_at":"2026-10-20T07:01:23.318Z"},{"name":"get_team_chemistry","title":"Baseball team roster cardology","description":"USE for MLB team × season roster cardology (suit mix, anchor stacks, Chinese zodiac year-animal match on postseason scope). NOT for play-by-play HR/K numerology → get_plays_numerology; two-person dyads → get_compatibility; single date → get_date. Requires season_yr + team_code. scope=ws_champion (default) | postseason. RETURNS roster_size, suit_mix, anchor_stacks, season_animal; postseason adds year_animal_match_pct (CNY-aware birth animal). Apply: apply_mcp_baseball_linked.ps1.","annotations":{"readOnlyHint":true,"openWorldHint":false,"idempotentHint":true,"destructiveHint":false},"source":"probe","observed_at":"2026-10-20T07:01:23.318Z"}],"dev.protogrid/trust":{"score":90,"components":{"hygiene":100,"liveness":100,"freshness":85,"provenance":75},"drivers":["+repository","+dns-namespace","+reachable","+uptime-100%","~updated-52d-ago"],"flags":[],"blocked":false,"computed_at":"2026-10-20T07:15:33.232Z","disclaimer":"Derived from observable signals (official registry feed and our own credential-free probes); no code audit performed."},"dev.protogrid/quality":{"score":88,"label":"good","components":{"auth":null,"hygiene":93,"protocol":75,"stability":100,"dependencies":null},"checks":[{"id":"protocol.modern","detail":"newest supported version is 2025-06-18; 2026-07-28 not supported, older versions are deprecated until 2027-07-28","status":"warn","category":"protocol"},{"id":"protocol.stateless","detail":"only applies to 2026-07-28 servers","status":"na","category":"protocol"},{"id":"protocol.transport","detail":"streamable HTTP","status":"pass","category":"protocol"},{"id":"protocol.list_ttl","detail":"only applies to 2026-07-28 servers","status":"na","category":"protocol"},{"id":"auth.prm","detail":"no remote uses OAuth","status":"na","category":"auth"},{"id":"auth.as_metadata","detail":"no remote uses OAuth","status":"na","category":"auth"},{"id":"auth.cimd","detail":"no remote uses OAuth","status":"na","category":"auth"},{"id":"auth.secret_in_url","detail":"no templated URL","status":"na","category":"auth"},{"id":"tools.descriptions","detail":"every tool has a description","status":"pass","category":"hygiene"},{"id":"tools.description_length","detail":"1 tools have descriptions over 1,024 characters, which crowds the context","status":"warn","category":"hygiene"},{"id":"tools.schemas","detail":"every tool has an object input schema","status":"pass","category":"hygiene"},{"id":"tools.annotations","detail":"8 of 8 tools declare readOnlyHint or destructiveHint","status":"pass","category":"hygiene"},{"id":"tools.directory_hints","detail":"every tool declares readOnlyHint, destructiveHint, idempotentHint and openWorldHint","status":"pass","category":"hygiene"},{"id":"tools.token_cost","detail":"about 2,330 tokens to load every tool","status":"pass","category":"hygiene"},{"id":"tools.api_dump","detail":"tools are not a one-to-one API dump","status":"pass","category":"hygiene"},{"id":"stability.changes","detail":"1 tool changes in 30 days","status":"pass","category":"stability"},{"id":"stability.rug_pull","detail":"no tool changed its meaning under the same name","status":"pass","category":"stability"},{"id":"deps.known_vulns","detail":"no npm or PyPI package","status":"na","category":"dependencies"},{"id":"deps.mcp_sdk_version","detail":"no npm or PyPI package","status":"na","category":"dependencies"},{"id":"deps.resolvable","detail":"no npm or PyPI package","status":"na","category":"dependencies"}],"drivers":["~protocol.modern","~tools.description_length"],"flags":[],"tool_count":8,"token_estimate":2330,"tools_hash":"d9311050f27fe68c823d001589f32b28","tools_changed_at":"2026-10-02T01:44:37.980Z","computed_at":"2026-10-20T07:21:44.986Z","disclaimer":"Checks run on what our credential-free, read-only probes observe; tools are never called and no code audit is performed."},"dev.protogrid/identity":{"canonical_id":"app.geometry/mcp","aliases":[],"alias_count":0,"repository_key":"github:goqolabs/geometry-mcp","owner":{"verified":false,"method":null,"since":null}}},"next_actions":[{"action":"list_tools","description":"Every current tool with input schemas","href":"/v1/servers/app.geometry%2Fmcp/tools","arguments":{"name":"app.geometry/mcp"}},{"action":"get_connection","description":"Minimal connection block for the preferred remote or package","href":"/v1/servers/app.geometry%2Fmcp/connection?target=mcpServers","arguments":{"name":"app.geometry/mcp","target":"mcpServers"}},{"action":"search","description":"Find other servers by intent","href":"/v1/search?q={query}","arguments":{"q":"{query}"}}]}