Skip to main content
Glama
261,453 tools. Last updated 2026-07-05 12:31

"namespace:com.robot-speed" matching MCP tools:

  • Solar Arc Directions for a target date. The solar arc (progressed Sun minus natal Sun) is applied uniformly to every natal planet and angle — approximately 1° per year. Unlike secondary progressions, all planets advance at the same rate. SECTION: WHAT THIS TOOL COVERS Solar arc directions — one delta longitude applied to every natal body and the angles. Classic predictive technique for timing outer events. SECTION: WORKFLOW BEFORE: asterwise_get_western_natal. AFTER: None. SECTION: INPUT CONTRACT birth — WesternBirthData. target_date (optional YYYY-MM-DD) — defaults to today. SECTION: OUTPUT CONTRACT data.target_date, data.solar_arc, data.age_years data.natal_sun_longitude, data.progressed_sun_longitude data.directed_planets[] — 10 objects: name, natal_longitude, directed_longitude, sign, degree_in_sign, dignity, dignity_score data.directed_ascendant, data.directed_ascendant_sign data.directed_mc, data.directed_mc_sign SECTION: RESPONSE FORMAT response_format=json serialises the complete response as indented JSON. response_format=markdown renders the same data as a human-readable report. Both modes return identical underlying data. SECTION: COMPUTE CLASS MEDIUM_COMPUTE (~400ms) SECTION: ERROR CONTRACT INVALID_PARAMS (local): WesternBirthData validation failures. INTERNAL_ERROR: Any upstream API failure or timeout → MCP INTERNAL_ERROR Edge cases: All planets advance at the same rate (solar arc ≈ 1°/year). This is Solar Arc Directions — different from secondary progressions where each planet moves at its own astronomical speed. SECTION: DO NOT CONFUSE WITH asterwise_get_western_secondary_progressions — each planet moves at its own rate. asterwise_get_western_transits_daily — real-time transits, not arc directions.
    Connector
  • Live marine observations from NOAA NDBC ocean buoys — significant wave height & period, wave direction, wind speed/direction/gust, barometric pressure (+ 3-hour tendency), air & water temperature, dewpoint and visibility, each with the buoy's own observation timestamp + age. `station` = an NDBC station id (e.g. "46059", "51001", "41001") -> that one buoy. `near` = "lat,lon" (e.g. "37.7,-123.0") OR a coast preset (us west coast, us east coast, gulf of mexico, hawaii, alaska, great lakes, pacific nw, new england, florida, california, korea) -> the nearest reporting buoys (up to `limit`, default 5). No args -> a sensible default open-ocean buoy. Single bulk-file fan-out: NDBC's whole-network latest_obs file is fetched once and indexed (~1,300 stations), so every lookup is served from cache. COVERAGE: NDBC is a NOAA/US network — no Australian buoys (run by BoM/AODN). Observational data only — not a substitute for an official marine forecast/warning. Source: NOAA NDBC (ndbc.noaa.gov) — US government public domain (17 U.S.C. § 105), keyless. Every value is returned in an Ed25519-signed, provenance-stamped envelope (source and observation time) you can verify offline against /.well-known/keys, no account required.
    Connector
  • Retrieves comprehensive weather data including current conditions, hourly, and daily forecasts. **Specific Data Available:** Temperature (Current, Feels Like, Max/Min, Heat Index), Wind (Speed, Gusts, Direction), Celestial Events (Sunrise/Sunset, Moon Phase), Precipitation (Type, Probability, Quantity/QPF), Atmospheric Conditions (UV Index, Humidity, Cloud Cover, Thunderstorm Probability), and Geocoded Location Address. **Location & Location Rules (CRITICAL):** The location for which weather data is requested is specified using the `location` field. This field is a 'oneof' structure, meaning you MUST provide a value for ONLY ONE of the three location sub-fields below to ensure an accurate weather data lookup. 1. Geographic Coordinates (lat_lng) * Use it when you are provided with exact lat/lng coordinates. * Example: {"location": {"lat_lng": {"latitude": 34.0522, "longitude": -118.2437}}} // Los Angeles 2. Place ID (place_id) * An unambiguous string identifier (Google Maps Place ID). * The place_id can be fetched from the search_places tool. * Example: {"location": {"place_id": "ChIJLU7jZClu5kcR4PcOOO6p3I0"}} // Eiffel Tower 3. Address String (address) * A free-form string that requires specificity for geocoding. * City & Region: Always include region/country (e.g., "London, UK", not "London"). * Street Address: Provide the full address (e.g., "1600 Pennsylvania Ave NW, Washington, DC"). * Postal/Zip Codes: MUST be accompanied by a country name (e.g., "90210, USA", NOT "90210"). * Example: {"location": {"address": "1600 Pennsylvania Ave NW, Washington, DC"}} **Usage Modes:** * **Current Weather:** Provide `location` only. Do not specify `date` and `hour`. * **Hourly Forecast:** Provide `location`, `date`, and `hour` (0-23). Use for specific times (e.g., "at 5 PM") or terms like "next few hours" or "later today". If the user specifies minute, round down to the nearest hour. Hourly forecast beyond 120 hours from now is not supported. Historical hourly weather is supported up to 24 hours in the past. * **Daily Forecast:** Provide `location` and `date`. Do not specify `hour`. Use for general day requests (e.g., "weather for tomorrow", "weather on Friday", "weather on 12/25"). If today's date is not in the context, you should clarify it with the user. Daily forecast beyond 10 days including today is not supported. Historical weather is not supported. **Parameter Constraints:** * **Timezones:** All `date` and `hour` inputs must be relative to the **location's local time zone**, not the user's time zone. * **Date Format:** Inputs must be separated into `{year, month, day}` integers. * **Units:** Defaults to `METRIC`. Set `units_system` to `IMPERIAL` for Fahrenheit/Miles if the user implies US standards or explicitly requests it. * The grounded output must be attributed to the source using the information from the `attribution` field when available.
    Connector
  • Scan the ENS marketplace for alpha — names listed below their valuation. Returns ranked opportunities with a discount %, fair-value range, confidence rating, and comparable data. Candidates are selected by DESIRABILITY (real curated collections, short, accessibly priced above a floor that excludes 0.001-ETH floor-dumps), then each is precision-priced by the full Name Whisper valuation engine — the SAME engine behind get_valuation and the Value page — which is the sole judge of undervaluation. The returned fair-value range (estimatedValueEth), confidence and discountPct are the engine's own numbers, via the same cache-first path as get_valuation (with display-only signals disabled for speed), so they are authoritative and consistent with get_valuation. They are computed conservatively (the seller-wallet boost is off), so if anything they slightly UNDERSTATE fair value — report them as-is; do NOT inflate the fair value or upgrade the confidence. Use estimatedValueEth.mid as the fair-value anchor. Only opportunities the engine confirms are surfaced: a believable discount band (20%+, capped where valuations stop being reliable), MEDIUM+ confidence, and a REAL comparable-sale match (type/collection/word/entity/semantic — never a coarse same-length average). This means genuinely good, believable deals (typically 25–65% off) — not 99%-off junk. It will still surface a large discount when the engine confirms it with real comps; it just won't fabricate one. **Use this instead of search_ens_names + repeated get_valuation when the user asks for "best value", "best buy", "cheapest good name", "undervalued", "bargains", or any ranked-by-value query across multiple listings.** find_alpha does the search + engine valuation + ranking in a single call — you do NOT need to call get_valuation again on its results. If it returns fewer names than asked, the rest weren't genuine discounts vs the engine — say so rather than padding the list. Supports filters (minLength, maxLength, maxPriceEth, charType) so narrow queries like "4-letter names under 1 ETH, best value" are one call, not six. It has NO collection/category/club param. Do NOT use it for "floor price of the 999 club", "cheapest 10k-club names", or "floor of <collection>" — those name a specific collection, so use search_ens_names (which returns that collection's real listings sorted by price), or sweep if the user wants to buy the cheapest N. find_alpha is for value-ranked discovery across the market, not a named collection's floor.
    Connector
  • Retrieves comprehensive weather data including current conditions, hourly, and daily forecasts. **Specific Data Available:** Temperature (Current, Feels Like, Max/Min, Heat Index), Wind (Speed, Gusts, Direction), Celestial Events (Sunrise/Sunset, Moon Phase), Precipitation (Type, Probability, Quantity/QPF), Atmospheric Conditions (UV Index, Humidity, Cloud Cover, Thunderstorm Probability), and Geocoded Location Address. **Location & Location Rules (CRITICAL):** The location for which weather data is requested is specified using the `location` field. This field is a 'oneof' structure, meaning you MUST provide a value for ONLY ONE of the three location sub-fields below to ensure an accurate weather data lookup. 1. Geographic Coordinates (lat_lng) * Use it when you are provided with exact lat/lng coordinates. * Example: {"location": {"lat_lng": {"latitude": 34.0522, "longitude": -118.2437}}} // Los Angeles 2. Place ID (place_id) * An unambiguous string identifier (Google Maps Place ID). * The place_id can be fetched from the search_places tool. * Example: {"location": {"place_id": "ChIJLU7jZClu5kcR4PcOOO6p3I0"}} // Eiffel Tower 3. Address String (address) * A free-form string that requires specificity for geocoding. * City & Region: Always include region/country (e.g., "London, UK", not "London"). * Street Address: Provide the full address (e.g., "1600 Pennsylvania Ave NW, Washington, DC"). * Postal/Zip Codes: MUST be accompanied by a country name (e.g., "90210, USA", NOT "90210"). * Example: {"location": {"address": "1600 Pennsylvania Ave NW, Washington, DC"}} **Usage Modes:** * **Current Weather:** Provide `location` only. Do not specify `date` and `hour`. * **Hourly Forecast:** Provide `location`, `date`, and `hour` (0-23). Use for specific times (e.g., "at 5 PM") or terms like "next few hours" or "later today". If the user specifies minute, round down to the nearest hour. Hourly forecast beyond 120 hours from now is not supported. Historical hourly weather is supported up to 24 hours in the past. * **Daily Forecast:** Provide `location` and `date`. Do not specify `hour`. Use for general day requests (e.g., "weather for tomorrow", "weather on Friday", "weather on 12/25"). If today's date is not in the context, you should clarify it with the user. Daily forecast beyond 10 days including today is not supported. Historical weather is not supported. **Parameter Constraints:** * **Timezones:** All `date` and `hour` inputs must be relative to the **location's local time zone**, not the user's time zone. * **Date Format:** Inputs must be separated into `{year, month, day}` integers. * **Units:** Defaults to `METRIC`. Set `units_system` to `IMPERIAL` for Fahrenheit/Miles if the user implies US standards or explicitly requests it. * The grounded output must be attributed to the source using the information from the `attribution` field when available.
    Connector
  • Fetch a URL with full reliability — retry, circuit breaker, cache, and anti-bot bypass. Returns both raw HTML and clean markdown. Automatically retries on failure with exponential backoff, falls back to plain HTTP if browser fetch fails, and circuit-breaks domains that are consistently down. Args: url: The URL to fetch use_cache: Whether to use cached results (default: true, TTL 1 hour) js_render: Whether to render JavaScript (default: true, disable for speed) wait_for: CSS selector to wait for before capturing (e.g., '.results-loaded')
    Connector

Matching MCP Servers

Matching MCP Connectors

  • SEO automation MCP with 39 tools. 12 free tools (no auth): audit pages, check Core Web Vitals, validate schema, score AI visibility, generate keywords. 27 pro tools with account: manage content calendar, track GSC traffic, monitor AI bot visits (ChatGPT/Perplexity), analyze backlinks, and publish directly to WordPress, Webflow, or Wix.

  • Search 59,000+ MCP servers ranked by adoption to find the right one for any task.

  • Pro/Teams — first-pass doctrine review of agentic code/workflow against the 10-principle Agentic AI Blueprint. ON CLIENT TIMEOUT — DO NOT RETRY THIS TOOL. Long-running LLM call (60-180s typical); MCP clients commonly close the call before the server returns. Retrying re-runs the 60-180s LLM call from scratch and burns compute. RECOVERY: the run_id is emitted in the FIRST notifications/progress event at t=0s (before the LLM call begins) — capture it. On timeout, call `me.validation_history(run_id='<that-id>')` to fetch the persisted result; the server-side run completes independently within a 20-minute budget. Edge case: if the transport dropped before the first progress notification (very rare; sub-second window), call `me.validation_history(repository='<same value you passed here>')` to find your most recent run. TASK-AUGMENTED INVOCATION (MCP 2025-11-25, SEP-1686): clients that advertise the `tasks` capability can task-augment this call by including `task: {ttl: <ms>}` inside the JSON-RPC request's `params` (NOT as a tool argument; alongside `arguments`, `_meta`, etc.). The server returns a `CreateTaskResult` immediately (taskId equals the run_id above) and runs the validation in the background. Spec-correct long-running pattern: poll via `tasks/get` for state, fetch the terminal payload via `tasks/result`, listen for `notifications/tasks/status` for push updates, and cancel via `tasks/cancel`. `_meta.progressToken` from the original request stays valid for the entire task lifetime. Sync (non-augmented) calls behave exactly as before, backwards-compatible by construction. The me.validation_history(run_id=...) recovery path remains the canonical recovery handle for clients that don't yet advertise the tasks capability. Returns code_classification (autonomous_agentic_workflow vs non_agentic_component), per-principle findings (verdict, severity_score 0-100, severity_class, code-cited evidence, recommendation), severity-weighted readiness (score|null, grade|null, tier ∈ {production_ready, emerging, draft, not_applicable}), recommended examples, reproducibility envelope (model, seed, doctrine_fingerprint, prompt_template_fingerprint), persistence_status with shareable run_id/badge_url/review_url. WHEN TO CALL: the user wants a governance audit, readiness score, or production_ready badge on an agent/workflow they just built or changed. WHEN NOT TO CALL: non-agentic plumbing (math utilities, type aliases, event-loop helpers, single-shot request/response handlers) returns tier=not_applicable with score=null/grade=null — that's not a failure, the doctrine simply doesn't grade non-agentic code, and architect.certify will refuse with not_agentic_component. Submit the OWNING agentic workflow instead. BEHAVIOR: long-running LLM call (~60-180s typical at high reasoning effort, single-pass; server-side budget 20 min). Mints run_id at t=0; first notifications/progress event carries run_id as recovery handle; keepalive every 30s. Persists ValidationRun + UserValidationRun + AIValidationRunLog + LLMUsageLog atomically; on rollback, badge/review URLs are stripped. Auth: Bearer <token>, Pro/Teams plan. UK/EU residency; transient OpenAI processing (no-training); prompt-injection in code is inert. INPUTS: send FULL file contents verbatim as `implementation_context` (NO truncation, NO `...` placeholders, NO comment removal — the architect treats your `...` as literal code and hallucinates bugs that don't exist). If too large, split into MULTIPLE calls scoped by file/module; never truncate one call. Pass repository="<name>" to group runs into a project trend. Pass private_session=true to bypass server-side logging (persistence + recovery disabled). focus_area narrows scope; unmatched focus_area fails explicitly rather than silently widening. PAYLOAD COMPLETENESS (load-bearing if you intend to architect.certify this run): the validate first-pass is permissive — it scores on doctrine alignment + structural patterns visible in the submitted code. Cert's adversarial second-pass is rigorous — it scores on cert-payload-completeness as well as code correctness. A run that scores 100/A at validate can cert-reject pre-LLM with `payload_incomplete` when imported modules' surfaces aren't visible. To validate with INTENT TO CERT, also bundle verbatim public-surface stubs for every imported module: `from sqlalchemy.exc import SQLAlchemyError` → include a stub class; `from app.db import models` → include a `class models:` namespace stub with the columns/methods the code references; module-level imports of `dataclass`, `Literal`, `json`, `datetime`, `timezone` MUST also be in the payload (cert correctly catches when they're omitted — the module would NameError on import as submitted). 'Submit Like Production': the payload should be the code as it would actually run. TWO COMPLETENESS AXES. (1) IMPORTS: stub the public surface of every dependency (above). (2) ENFORCEMENT BRANCHES: the code under cert itself (approval gates, policy checks, recovery paths) must be the REAL logic, fully written. A placeholder body (`# ... execute approved action ...`, `pass # TODO`, a bare `...`) is graded as a MISSING control, not shorthand; cert scores what would actually run. Never sketch the agent you are certifying. Empirically reconfirmed PR #157 iter8 → iter9 cert downgrades. SCORE VARIANCE DISCLOSURE (anomaly #10 — empirically documented): validate scores are POINT ESTIMATES with an observed empirical variance band of ~20-67 pts on BYTE-IDENTICAL input. Runs against the same repository, same code, same deterministic seed (the seed is derived from input — same input → same seed) can produce materially different scores AND different top-blocker rankings, because OpenAI's reasoning models at reasoning_effort=high are not strictly deterministic even with the seed parameter pinned. The `reproducibility_mode='best_effort'` field on every response is the platform's honest disclosure of this property. For decisions where stability matters more than speed, call `architect.validate_consensus` (N=3-5 aggregated, median verdict + per-principle stability metrics) instead — collapses the variance, surfaces unstable principles explicitly. A single validate run is a single roll; consensus is the right tool when one score isn't enough. ITERATION LOOP — repository keying. Pass the SAME `repository` value across calls to chain iteration rounds; the validator auto-resolves the most recent prior run on (user, repository, scope) as `prior_run_baseline` and the LLM grades the new submission with iteration context (per-principle severity deltas surface in the response). Changing the `repository` string between calls — even subtly with an `iter-2` suffix — silently severs the chain and yields a fresh blind first-shot. Round numbering belongs in `task` or commit messages, never in `repository`. See the `architect-validation-orchestration` skill in the agent-asset pack for the full validate → consensus → certify sequence. VERIFICATION LAYERS (the two-layer doctrine this platform practices on itself): validate verifies DOCTRINE ALIGNMENT against the 10-principle Blueprint — design patterns, hand-off explicitness, operational-state inspectability, race/blocker handling at the architectural level. validate does NOT guarantee runtime correctness. cert verifies PAYLOAD COMPLETENESS and runs an adversarial second pass over the submitted code — catches production_blockers the first pass missed, name-errors on import, missing module surfaces, etc. cert does NOT verify runtime correctness either. Passing validate is a NECESSARY condition for production_ready, not a sufficient one. Runtime correctness (does this actually execute and behave?) is verified at the THIRD layer — your tests, types, walks. The platform's own recursive-integrity practice: every PR runs validate against its own primitives, then cert. Real bugs surfaced via this practice in PR #157 — NULL-UUID false-positive (iter3) and tie-breaker mismatch (iter5) — that 25 unit tests had missed. Two-layer verification is the discipline, not 'either/or'. TYPED FAILURES: timed_out, rate_limited, dependency_unavailable, schema_mismatch (each carries retryable + next_action). NEXT STEP: if tier=production_ready (A or B grade), the response carries certification_status='not_evaluated' — call architect.certify(run_id, code) to mint the certified production_ready badge (separate ~60-150s adversarial review, eligibility-gated). See Payload Completeness above for the common pre-cert pitfall.
    Connector
  • Shows all details of a single workout: heart rate, pace, cadence, power, intensity zones, elevation, calories, and more. Requires workout_id from get_workout_list. Also shows which sample data (HR time series, speed, GPS etc.) is available — these can be retrieved with get_workout_samples. Parameters: - workout_id: UUID of the workout from get_workout_list
    Connector
  • Active tropical cyclones from the NOAA National Hurricane Center (NHC) — tropical depressions, tropical storms, and hurricanes. Per storm: name, classification, Saffir-Simpson category, current position (lat/lon), max sustained winds (kt + km/h), minimum pressure, movement (heading + speed), and a link to the latest public advisory and cone graphic. `basin` = "all" (default) | "atlantic" (North Atlantic + Caribbean + Gulf of America) | "epac" (Eastern + Central North Pacific). Off-season or quiet periods may return zero storms — this is the correct honest state. Source: NOAA NHC (nhc.noaa.gov) — US government public domain (17 U.S.C. § 105), keyless. Coverage: Atlantic + Eastern/Central Pacific ONLY (not Australian region, Western Pacific, or Indian Ocean). Every value is returned in an Ed25519-signed, provenance-stamped envelope (source and observation time) you can verify offline against /.well-known/keys, no account required.
    Connector
  • Reframes an image to a new aspect ratio by intelligently outpainting the edges. Pass a public `imageUrl` and the target `aspectRatio` ('16:9', '9:16', '1:1', '4:3', '3:4', etc.). Three speed tiers: 'turbo' (5 cr, fast), 'balanced' (10 cr, default), 'quality' (14 cr, slowest, best edges). Returns the reframed image URL.
    Connector
  • Search the user's COMPLETE email history by querying their connected mail providers live — Gmail, Outlook AND IMAP accounts (iCloud, Yahoo and other IMAP mailboxes) — reaching years beyond Mailopoly's indexed window, and including sent mail. This is also how you reach mail a free trial hasn't imported yet: the trial fully processes only recent mail, but the rest still lives in the user's mailbox and this tool finds it. Use it when search_emails returns few or no results, or when the question concerns emails older than the indexed history (search_emails responses include indexed_history_start). Speed: Gmail/Outlook are typically 5-45 seconds; IMAP accounts (iCloud, Yahoo, …) are slower — up to a minute or two while their folders are walked — so tell the user you're searching their full history and it may take a moment, then run it (never refuse just because an account is iCloud/IMAP). start_date/end_date (YYYY-MM-DD) may span multiple years; omit both to search ALL history. If the response contains truncated_providers, the OLDEST matches may be missing — page deeper by re-running with end_date set to that provider's oldest_returned_date, or narrow the query. Returned email_id values (some of the form 'gmail:<id>:<id>' or 'imap:<id>:<uid>') work directly in get_email.
    Connector
  • Text-to-speech with 3 tiers: OmniVoice Global (602+ languages including Yoruba, Bengali, Cebuano, Twi, zero-shot voice cloning, 100 chars/sat — use 'language' parameter with ISO code), Inworld Premium (#1 ranked TTS ELO 1217, emotion control, 40+ languages, 50 chars/sat), Minimax Studio (voice cloning from reference clip, 40+ languages, 10 chars/sat). Adjustable speed (0.5-2.0x). Returns audio URL. Pay with Bitcoin Lightning — no API key or signup needed. When NOT to use: not for phone calls (use place_call for one-shot broadcasts, ai_call for AI voice agents, or open_voice_bridge to drive the call with your own LLM). For rare/underserved languages (Yoruba, Twi, Marathi, Cebuano, etc.), pick OmniVoice Global via language= — Inworld/Minimax don't cover these. Requires create_payment with toolName='text_to_speech'.
    Connector
  • Computes the annual Tajika-style solar return for a four-digit civil year and returns Muntha, Pancha Adhikari metrics, Tajika aspects, and varshaphal positions. SECTION: WHAT THIS TOOL COVERS Varshaphal engine: solar return instant, year lord, muntha block, varsha pati election, five pancha adhikaris with bala components, tajika aspect arrays, and pairwise Tajika geometry including ithsala/musaripha flags. year must mean calendar year (e.g. 2026), not biological age — not enforced locally; wrong integers chart the wrong annual return. Not lifetime Vimshottari (asterwise_get_dasha) nor generic transit ingress lists (asterwise_get_transits). SECTION: WORKFLOW BEFORE: RECOMMENDED — asterwise_get_natal_chart — baseline radix before annual overlay. AFTER: None. SECTION: INPUT CONTRACT year is a plain int sent as target_year upstream; callers must supply the true Gregorian return year, not age. SECTION: OUTPUT CONTRACT data.target_year (int) data.ayanamsa (string) data.solar_return_utc (string — ISO) data.solar_return_jd (float) data.natal_sun_longitude (float) data.natal_lagna (string) data.natal_lagna_index (int) data.year_lord (string — planet name) data.muntha: rashi_index (int) rashi (string) age_years (float) muntha_lord (string) data.planets{} — keys Sun..Ketu: longitude (float) rashi_index (int) rashi (string) degree (float) is_retrograde (bool) speed (float) data.varshaphal_ascendant_longitude (float) data.varshaphal_ascendant_sign (string — Sanskrit sign name derived from the ascendant longitude) data.varshaphal_ascendant_sign_index (int — sign index 0-11, where 0=Mesha and 11=Meena) data.varsha_pati: planet (string) role (string) pancha_vargeeya_bala (float) kshetra_bala (float) uchcha_bala (float) election_used_strongest_without_aspect (bool) data.pancha_adhikaris[] — five objects: role (string) planet (string) pancha_vargeeya_bala, kshetra_bala, uchcha_bala, hadda_bala, dreshkana_bala, navamsa_bala (floats) pending_components_note (string) aspects_ascendant (bool) tajika_aspect_angles_matched[] (array) separation_from_asc_deg (float) data.pancha_vargeeya_bala{} — keyed by role (float values) data.tajika_aspects[] — per Pancha Adhikari (structure per upstream) data.tajika_planet_pairs[] — each: planet_a, planet_b (strings) house_a, house_b (int) diff_ab, diff_ba (float) aspect_ab, aspect_ba (strings or floats per upstream) is_ithsala (bool) is_musaripha (bool) faster_planet (string) orb_degrees (float) SECTION: RESPONSE FORMAT response_format=json serialises the complete response as indented JSON — use this for programmatic parsing, typed clients, and downstream tool chaining. response_format=markdown renders the same data as a human-readable report. Both modes return identical underlying data — no fields are added, removed, or filtered by either mode. SECTION: COMPUTE CLASS MEDIUM_COMPUTE SECTION: ERROR CONTRACT INVALID_PARAMS (local — caught before upstream call): None — year not range-checked here. INVALID_PARAMS (upstream): — None — upstream rejection surfaces as MCP INTERNAL_ERROR at the tool layer. INTERNAL_ERROR: — Any upstream API failure or timeout → MCP INTERNAL_ERROR Edge cases: — Feeding age instead of civil year silently mis-orients the return — caller responsibility. SECTION: DO NOT CONFUSE WITH asterwise_get_dasha — multi-decade Vimshottari, not one solar return. asterwise_get_transits — ingress/station timeline, not annual Tajika chart.
    Connector
  • Secondary progressed chart using the day-for-a-year method. Each day after birth symbolises one year of life (1 ephemeris day = 1 tropical year = 365.2421904 days). Returns all 10 progressed planet positions, progressed Ascendant and MC, and the solar arc. SECTION: WHAT THIS TOOL COVERS Secondary directions: Moon advances ~12°/year of life, Mercury/Venus track close to Sun speed, outer planets crawl. Includes progressed lunation phases internally. SECTION: WORKFLOW BEFORE: asterwise_get_western_natal. AFTER: asterwise_get_western_solar_arc — compare uniform arc vs individual motion. SECTION: INPUT CONTRACT birth — WesternBirthData. target_date (optional YYYY-MM-DD) — the date to progress to. Defaults to today. SECTION: OUTPUT CONTRACT data.target_date, data.progressed_jd, data.age_years data.solar_arc (float — ~1° per year) data.natal_sun_longitude, data.progressed_sun_longitude data.progressed_planets[] — 10 objects: name, longitude, sign, degree_in_sign, is_retrograde, dignity, dignity_score data.progressed_ascendant, data.progressed_ascendant_sign data.progressed_mc, data.progressed_mc_sign SECTION: RESPONSE FORMAT response_format=json serialises the complete response as indented JSON. response_format=markdown renders the same data as a human-readable report. Both modes return identical underlying data. SECTION: COMPUTE CLASS MEDIUM_COMPUTE (~400ms) SECTION: ERROR CONTRACT INVALID_PARAMS (local): WesternBirthData validation failures. INTERNAL_ERROR: Any upstream API failure or timeout → MCP INTERNAL_ERROR Edge cases: Progressed ASC uses the actual house calculation at progressed JD (not solar arc approximation) for higher accuracy. Progressed MC uses natal MC + solar arc. SECTION: DO NOT CONFUSE WITH asterwise_get_western_solar_arc — all planets move by one uniform arc. asterwise_get_western_transits_daily — real-time sky, not symbolic progression.
    Connector
  • Pro/Teams — first-pass doctrine review of agentic code/workflow against the 10-principle Agentic AI Blueprint. ON CLIENT TIMEOUT — DO NOT RETRY THIS TOOL. Long-running LLM call (60-180s typical); MCP clients commonly close the call before the server returns. Retrying re-runs the 60-180s LLM call from scratch and burns compute. RECOVERY: the run_id is emitted in the FIRST notifications/progress event at t=0s (before the LLM call begins) — capture it. On timeout, call `me.validation_history(run_id='<that-id>')` to fetch the persisted result; the server-side run completes independently within a 20-minute budget. Edge case: if the transport dropped before the first progress notification (very rare; sub-second window), call `me.validation_history(repository='<same value you passed here>')` to find your most recent run. TASK-AUGMENTED INVOCATION (MCP 2025-11-25, SEP-1686): clients that advertise the `tasks` capability can task-augment this call by including `task: {ttl: <ms>}` inside the JSON-RPC request's `params` (NOT as a tool argument; alongside `arguments`, `_meta`, etc.). The server returns a `CreateTaskResult` immediately (taskId equals the run_id above) and runs the validation in the background. Spec-correct long-running pattern: poll via `tasks/get` for state, fetch the terminal payload via `tasks/result`, listen for `notifications/tasks/status` for push updates, and cancel via `tasks/cancel`. `_meta.progressToken` from the original request stays valid for the entire task lifetime. Sync (non-augmented) calls behave exactly as before, backwards-compatible by construction. The me.validation_history(run_id=...) recovery path remains the canonical recovery handle for clients that don't yet advertise the tasks capability. Returns code_classification (autonomous_agentic_workflow vs non_agentic_component), per-principle findings (verdict, severity_score 0-100, severity_class, code-cited evidence, recommendation), severity-weighted readiness (score|null, grade|null, tier ∈ {production_ready, emerging, draft, not_applicable}), recommended examples, reproducibility envelope (model, seed, doctrine_fingerprint, prompt_template_fingerprint), persistence_status with shareable run_id/badge_url/review_url. WHEN TO CALL: the user wants a governance audit, readiness score, or production_ready badge on an agent/workflow they just built or changed. WHEN NOT TO CALL: non-agentic plumbing (math utilities, type aliases, event-loop helpers, single-shot request/response handlers) returns tier=not_applicable with score=null/grade=null — that's not a failure, the doctrine simply doesn't grade non-agentic code, and architect.certify will refuse with not_agentic_component. Submit the OWNING agentic workflow instead. BEHAVIOR: long-running LLM call (~60-180s typical at high reasoning effort, single-pass; server-side budget 20 min). Mints run_id at t=0; first notifications/progress event carries run_id as recovery handle; keepalive every 30s. Persists ValidationRun + UserValidationRun + AIValidationRunLog + LLMUsageLog atomically; on rollback, badge/review URLs are stripped. Auth: Bearer <token>, Pro/Teams plan. UK/EU residency; transient OpenAI processing (no-training); prompt-injection in code is inert. INPUTS: send FULL file contents verbatim as `implementation_context` (NO truncation, NO `...` placeholders, NO comment removal — the architect treats your `...` as literal code and hallucinates bugs that don't exist). If too large, split into MULTIPLE calls scoped by file/module; never truncate one call. Pass repository="<name>" to group runs into a project trend. Pass private_session=true to bypass server-side logging (persistence + recovery disabled). focus_area narrows scope; unmatched focus_area fails explicitly rather than silently widening. PAYLOAD COMPLETENESS (load-bearing if you intend to architect.certify this run): the validate first-pass is permissive — it scores on doctrine alignment + structural patterns visible in the submitted code. Cert's adversarial second-pass is rigorous — it scores on cert-payload-completeness as well as code correctness. A run that scores 100/A at validate can cert-reject pre-LLM with `payload_incomplete` when imported modules' surfaces aren't visible. To validate with INTENT TO CERT, also bundle verbatim public-surface stubs for every imported module: `from sqlalchemy.exc import SQLAlchemyError` → include a stub class; `from app.db import models` → include a `class models:` namespace stub with the columns/methods the code references; module-level imports of `dataclass`, `Literal`, `json`, `datetime`, `timezone` MUST also be in the payload (cert correctly catches when they're omitted — the module would NameError on import as submitted). 'Submit Like Production': the payload should be the code as it would actually run. TWO COMPLETENESS AXES. (1) IMPORTS: stub the public surface of every dependency (above). (2) ENFORCEMENT BRANCHES: the code under cert itself (approval gates, policy checks, recovery paths) must be the REAL logic, fully written. A placeholder body (`# ... execute approved action ...`, `pass # TODO`, a bare `...`) is graded as a MISSING control, not shorthand; cert scores what would actually run. Never sketch the agent you are certifying. Empirically reconfirmed PR #157 iter8 → iter9 cert downgrades. SCORE VARIANCE DISCLOSURE (anomaly #10 — empirically documented): validate scores are POINT ESTIMATES with an observed empirical variance band of ~20-67 pts on BYTE-IDENTICAL input. Runs against the same repository, same code, same deterministic seed (the seed is derived from input — same input → same seed) can produce materially different scores AND different top-blocker rankings, because OpenAI's reasoning models at reasoning_effort=high are not strictly deterministic even with the seed parameter pinned. The `reproducibility_mode='best_effort'` field on every response is the platform's honest disclosure of this property. For decisions where stability matters more than speed, call `architect.validate_consensus` (N=3-5 aggregated, median verdict + per-principle stability metrics) instead — collapses the variance, surfaces unstable principles explicitly. A single validate run is a single roll; consensus is the right tool when one score isn't enough. ITERATION LOOP — repository keying. Pass the SAME `repository` value across calls to chain iteration rounds; the validator auto-resolves the most recent prior run on (user, repository, scope) as `prior_run_baseline` and the LLM grades the new submission with iteration context (per-principle severity deltas surface in the response). Changing the `repository` string between calls — even subtly with an `iter-2` suffix — silently severs the chain and yields a fresh blind first-shot. Round numbering belongs in `task` or commit messages, never in `repository`. See the `architect-validation-orchestration` skill in the agent-asset pack for the full validate → consensus → certify sequence. VERIFICATION LAYERS (the two-layer doctrine this platform practices on itself): validate verifies DOCTRINE ALIGNMENT against the 10-principle Blueprint — design patterns, hand-off explicitness, operational-state inspectability, race/blocker handling at the architectural level. validate does NOT guarantee runtime correctness. cert verifies PAYLOAD COMPLETENESS and runs an adversarial second pass over the submitted code — catches production_blockers the first pass missed, name-errors on import, missing module surfaces, etc. cert does NOT verify runtime correctness either. Passing validate is a NECESSARY condition for production_ready, not a sufficient one. Runtime correctness (does this actually execute and behave?) is verified at the THIRD layer — your tests, types, walks. The platform's own recursive-integrity practice: every PR runs validate against its own primitives, then cert. Real bugs surfaced via this practice in PR #157 — NULL-UUID false-positive (iter3) and tie-breaker mismatch (iter5) — that 25 unit tests had missed. Two-layer verification is the discipline, not 'either/or'. TYPED FAILURES: timed_out, rate_limited, dependency_unavailable, schema_mismatch (each carries retryable + next_action). NEXT STEP: if tier=production_ready (A or B grade), the response carries certification_status='not_evaluated' — call architect.certify(run_id, code) to mint the certified production_ready badge (separate ~60-150s adversarial review, eligibility-gated). See Payload Completeness above for the common pre-cert pitfall.
    Connector
  • Render an SVG chart from EPW data. Eight chart types: `diurnal` (~10 KB, monthly hourly profile), `temp_carpet` (heatmap of hour × day-of-year — ~30 KB preview / ~150 KB full), `wind_rose` (~12 KB, polar bars by direction × speed), `monthly_boxplot` (~6 KB, Q1/median/Q3 + whiskers per month), `utci_carpet` (~90 KB, outdoor heat-stress hour × day, colored by UTCI category — Bröde 2012, shaded Tmrt), `economizer_carpet` (~90 KB, air-side economizer free / integrated / locked-out hour × day under ASHRAE 90.1 high-limit), `pv_tilt_azimuth` (~60 KB, annual PV generation across full tilt × azimuth space, isotropic-sky POA at lat from EPW header — optimum orientation marked), `solar_under_events` (~12 KB, weekly GHI of the modified scenario vs the no-overlay reference; bands color event-affected weeks. Requires `config` — server runs the pipeline twice, with and without overlays), `comparison` (~10 KB, design-condition deltas across EPWs). Accepts `url` (single), `urls` (2+ for comparison), or `config` (synthesize on the fly). Config mode is anon-safe — runs pipeline, returns SVG only. No auth required. **Token budget**: SVGs are returned inline by default. Large outputs (>50 KB) auto-upload to Blob storage (when configured) and return a URL instead, keeping your context lean. Always check `svg_size_kb` in the response. **Presentation: when handing the chart to the user, just link or embed it — don't narrate what's in it. Let the chart speak.**
    Connector
  • Returns real-time AIS positions, speed, heading, ETA, and dock status for all active WSF vessels. Use for "where is the ferry now?", vessel tracking, or checking if a vessel is in service. Position data may lag by 30–60 seconds. Many fields are null for vessels not currently operating.
    Connector
  • Returns a national-level coverage profile for a specific holding company (by hoconum): states served, technologies deployed, and the number of locations covered at each download speed tier. Use fcc_search_providers to find valid hoconum values. Data is from FCC Form 477 (as of June 2021).
    Connector
  • Decode a 7-character FAA manufacturer/model/series code to aircraft specifications from the reference table — manufacturer, model, aircraft category, aircraft type, engine type, number of engines, number of seats, weight class, cruise speed, and type-certificate data sheet/holder. Use faa_search_aircraft_types first to discover a code by manufacturer or model name.
    Connector
  • Return the current position and basic information for a single vessel, identified by exactly one of: MMSI (9 digits), IMO (7 digits), or Datalastic UUID. Includes live coordinates, speed, course, heading, navigation status and the raw AIS destination text. This is the default tool for vessel lookups. For the recognized destination or origin port (name + UNLOCODE), actual departure time (ATD), a reliable estimated time of arrival (ETA), or draught, use get_vessel_pro instead.
    Connector