# VALUE Verdicts and Celestial Geometry > Safety checks before an agent pays; computable world context that gives every place and moment a stable, story-ready identity (ROAST-78); plus factual computed celestial geometry. > Pay per call: x402 v2, USDC on Base. No account, no API key. Every check returns the same shape: `{ "verdict": "pass"|"caution"|"fail", "proceed": boolean, "summary": string, "findings": [{ "code", "severity", "message" }] }` Do not proceed when `proceed` is false. Treat "caution" as: proceed only if the findings are acceptable for the task. ## Checks ### Payment address check ($0.01) Before sending crypto: checks an EVM, Solana or Bitcoin address for a valid checksum, the right network, dead/burn/program addresses, a mismatch with the expected payee, and address-poisoning lookalikes of addresses you already trust. Live on-chain lookup: has the address ever been used, is it a wallet, contract or program. Returns pass / caution / fail with reasons. - GET https://value-verdicts.mcfulltime.workers.dev/v1/address-check?address=0x5aAeb6053F3E94C9b9A09f33669435E7Ef1BeAed&known=0x5aAeb6053F3E94C9b9A09f33669435E7Ef1BeAed - POST https://value-verdicts.mcfulltime.workers.dev/v1/address-check with JSON body {"address":"0x5aAeb6053F3E94C9b9A09f33669435E7Ef1BeAed","known":["0x5aAeb6053F3E94C9b9A09f33669435E7Ef1BeAed"]} - Parameters: address (required): The address you are about to pay. | network: Optional. Network you intend to use. | expected: Optional. The address you were told to pay, e.g. from an invoice. | known: Optional. Addresses you have paid or trust before (max 200). GET: comma-separated. ### Phishing link check ($0.01) Before opening a link or entering credentials: detects lookalike domains (homoglyphs, mixed alphabets, typosquats), brand impersonation in domains and subdomains, hidden destinations (user@host), unsafe schemes, and risky TLDs across 70+ commonly impersonated brands. Live lookups: does the domain exist (DNS) and how old is it (registration date), since most phishing domains are days old. The page itself is never visited. - GET https://value-verdicts.mcfulltime.workers.dev/v1/link-check?url=https%3A%2F%2Fpaypal.com.verify-account.net%2Flogin&expectedBrand=paypal - POST https://value-verdicts.mcfulltime.workers.dev/v1/link-check with JSON body {"url":"https://paypal.com.verify-account.net/login","expectedBrand":"paypal"} - Parameters: url (required): The link to check. | expectedBrand: Optional. The brand this link claims to be, e.g. "paypal". Fails if the domain is not official. ### x402 payment check ($0.01) Before you sign an x402 payment to another service: pass the 402 payment request you received and get one verdict on the whole thing. Checks the price against your limit, that the token is real USDC with the right signing name, the payee address (checksum, poisoning lookalikes, on-chain history), whether the request claims a different site than the one you called, and the site itself (lookalike domains, domain age). One call, one price. - GET https://value-verdicts.mcfulltime.workers.dev/v1/payment-check?paymentRequired=%3CPAYMENT-REQUIRED+header+from+the+402+response%3E&requestedUrl=https%3A%2F%2Fapi.example.com%2Fdata&maxPrice=0.05 - POST https://value-verdicts.mcfulltime.workers.dev/v1/payment-check with JSON body {"paymentRequired":"","requestedUrl":"https://api.example.com/data","maxPrice":"0.05"} - Parameters: paymentRequired (required): The PAYMENT-REQUIRED header value (base64) or the 402 JSON body. GET: base64 only. | requestedUrl: Optional. The URL you called that returned the 402. | maxPrice: Optional. Your price limit in US dollars, e.g. "0.05". | knownPayees: Optional. Payee addresses you have paid before (max 200). GET: comma-separated. ### Live x402 endpoint preflight ($0.01) Before paying an x402 service: safely makes one unauthenticated HTTPS request, confirms the endpoint is live and returns a current 402 challenge, then checks its price, USDC token, payee and site. Never signs or settles a payment. HTTPS only; redirects and private/local targets are refused. - GET https://value-verdicts.mcfulltime.workers.dev/v1/x402-preflight?url=https%3A%2F%2Fapi.example.com%2Fv1%2Fdata&maxPrice=0.05 - POST https://value-verdicts.mcfulltime.workers.dev/v1/x402-preflight with JSON body {"url":"https://api.example.com/v1/data","maxPrice":"0.05"} - Parameters: url (required): The public HTTPS x402 endpoint to preflight. | maxPrice: Optional. Your maximum acceptable US-dollar price, e.g. "0.05". | knownPayees: Optional. Payee addresses you have paid before (max 200). GET: comma-separated. ### Celestial body state ($0.01) Computes compact, factual ecliptic positions and motion for selected planets, dwarf planets, or supported minor bodies at an Earth coordinate and local civil time. The result is calculated by the configured ephemeris service; it is not a static lookup or an interpretation. - GET https://value-verdicts.mcfulltime.workers.dev/v1/celestial-state?dateTime=2026-11-02T21%3A30&latitude=-36.8485&longitude=174.7633&timezoneId=Pacific%2FAuckland&bodies=Sun%2CMoon%2CMars%2CCeres - POST https://value-verdicts.mcfulltime.workers.dev/v1/celestial-state with JSON body {"dateTime":"2026-11-02T21:30","latitude":-36.8485,"longitude":174.7633,"timezoneId":"Pacific/Auckland","bodies":["Sun","Moon","Mars","Ceres"]} - Parameters: dateTime (required): Local civil time, exactly YYYY-MM-DDTHH:mm. | latitude (required): Observer latitude from -90 to 90. | longitude (required): Observer longitude from -180 to 180. | timezoneId (required): IANA timezone at the observer, e.g. Pacific/Auckland. | bodies (required): One to 20 supported body names. ### Celestial angular relations ($0.02) Computes the selected bodies, then returns every pairwise angular separation in degrees. Useful for astronomy, historical reconstruction, rendering, research, and event-planning agents. It returns geometry only, with no predictive or interpretive claims. - GET https://value-verdicts.mcfulltime.workers.dev/v1/celestial-relations?dateTime=2026-11-02T21%3A30&latitude=-36.8485&longitude=174.7633&timezoneId=Pacific%2FAuckland&bodies=Moon%2CMars%2CCeres - POST https://value-verdicts.mcfulltime.workers.dev/v1/celestial-relations with JSON body {"dateTime":"2026-11-02T21:30","latitude":-36.8485,"longitude":174.7633,"timezoneId":"Pacific/Auckland","bodies":["Moon","Mars","Ceres"]} - Parameters: dateTime (required): Local civil time, exactly YYYY-MM-DDTHH:mm. | latitude (required): Observer latitude from -90 to 90. | longitude (required): Observer longitude from -180 to 180. | timezoneId (required): IANA timezone at the observer, e.g. Pacific/Auckland. | bodies (required): Two to 20 supported body names. ### Celestial angular event window ($0.02) Searches a bounded UTC range for the requested angular separation between exactly two selected bodies, then refines each detected crossing to the calculator minute. It uses a fixed, owner-operated ephemeris calculator with at most 48 samples and four concurrent requests. Geometry only: no prediction or interpretation. - GET https://value-verdicts.mcfulltime.workers.dev/v1/celestial-event-window?startUtc=2026-11-02T00%3A00Z&endUtc=2026-11-05T00%3A00Z&bodies=Moon%2CMars&targetDegrees=0&stepMinutes=120 - POST https://value-verdicts.mcfulltime.workers.dev/v1/celestial-event-window with JSON body {"startUtc":"2026-11-02T00:00Z","endUtc":"2026-11-05T00:00Z","bodies":["Moon","Mars"],"targetDegrees":0,"stepMinutes":120} - Parameters: startUtc (required): UTC start time, exactly YYYY-MM-DDTHH:mmZ. | endUtc (required): UTC end time, exactly YYYY-MM-DDTHH:mmZ; within seven days. | bodies (required): Exactly two distinct supported body names. | targetDegrees (required): Requested angular separation from 0 to 180 degrees. | stepMinutes: Optional sampling interval from 60 to 1440 minutes; default 240. Range and step may not exceed 48 samples. ### Global celestial geometry projection ($0.02) Calculates bounded GeoJSON loci on Earth where each selected major body is at a named angular condition at one UTC minute: AC (rising horizon), MC (upper meridian), DC (setting horizon), or IC (lower meridian). Useful for mapping, visualization, geographic research, and location-aware planning. It returns calculated geometry only, with no interpretation or prediction. - GET https://value-verdicts.mcfulltime.workers.dev/v1/celestial-earth-projection?instantUtc=2026-11-02T08%3A30Z&bodies=Sun%2CMoon - POST https://value-verdicts.mcfulltime.workers.dev/v1/celestial-earth-projection with JSON body {"instantUtc":"2026-11-02T08:30Z","bodies":["Sun","Moon"]} - Parameters: instantUtc (required): UTC instant, exactly YYYY-MM-DDTHH:mmZ. | bodies (required): One to four supported major-body names. ### Spatial identity (ROAST-78 world tile) ($0.01) Gives any Earth coordinate a stable identity: its ~19 m world tile (Web Mercator zoom 21, the Anagramic globe grid), tile bounds and centre, and the deterministic ROAST-78 card that tile holds (Roast-78 character, card, keyword, upright/reversed, element, rune, hieroglyph, I Ching hexagram, math and navigation symbols), plus the eight neighbouring tiles. The same coordinate always returns the same identity, so agents can anchor games, stories, AR scenes and shared worlds to real places. Includes a replayable receipt hash. - GET https://value-verdicts.mcfulltime.workers.dev/v1/spatial-identity?latitude=29.9792&longitude=31.1342 - POST https://value-verdicts.mcfulltime.workers.dev/v1/spatial-identity with JSON body {"latitude":29.9792,"longitude":31.1342} - Parameters: latitude (required): Latitude from -90 to 90 (Web Mercator clamps beyond ±85.05). | longitude (required): Longitude from -180 to 180. | includeNeighbours: Optional. Include the eight surrounding tiles (default true). ### Time portal (moment card and portal minutes) ($0.01) Reads the clock at a place and instant and returns the moment card (digit-reduced local HH:MM read as a Major Arcana number), whether this minute is a portal, and the previous and next portal minutes (mirrors, triples, ascending/descending sequences, pi 3:14, phi 6:18, and 12-hour echoes) with exact UTC instants and countdowns. Clock: civil timezone (given, or looked up from the coordinate), mean solar time, or UTC. DST-aware. Same input and "at" always give the same result, with a receipt hash. - GET https://value-verdicts.mcfulltime.workers.dev/v1/time-portal?latitude=29.9792&longitude=31.1342&timezoneId=Africa%2FCairo&at=2026-11-02T09%3A30Z - POST https://value-verdicts.mcfulltime.workers.dev/v1/time-portal with JSON body {"latitude":29.9792,"longitude":31.1342,"timezoneId":"Africa/Cairo","at":"2026-11-02T09:30Z"} - Parameters: latitude (required): Latitude from -90 to 90. | longitude (required): Longitude from -180 to 180. | timezoneId: Optional IANA timezone, e.g. "Africa/Cairo". If omitted, it is looked up from the coordinate (falls back to solar time). | clock: Optional. civil (default), solar (mean solar time at the longitude) or utc. | at: Optional UTC instant, e.g. 2026-11-02T08:30Z. Defaults to now. ### Location context (place + time + sky + story seed) ($0.02) Everything an agent needs to ground a scene, NPC, quest or prompt in a real place and moment, in one call: the spatial identity with the tile card's full context (meanings, story catalyst, imagery, inspiration prompt, story function and archetype, spread templates, geometry, navigation, correspondences, names in six languages), the time portal with the moment card's full context, the eight neighbouring tiles, approximate sun altitude/daylight and moon phase, and a structured narrative seed ready to hand to a model. No text is generated. Deterministic for a given input and "at", with a receipt hash. - GET https://value-verdicts.mcfulltime.workers.dev/v1/location-context?latitude=-36.8485&longitude=174.7633&timezoneId=Pacific%2FAuckland&at=2026-11-02T08%3A30Z - POST https://value-verdicts.mcfulltime.workers.dev/v1/location-context with JSON body {"latitude":-36.8485,"longitude":174.7633,"timezoneId":"Pacific/Auckland","at":"2026-11-02T08:30Z"} - Parameters: latitude (required): Latitude from -90 to 90. | longitude (required): Longitude from -180 to 180. | timezoneId: Optional IANA timezone. If omitted, it is looked up from the coordinate (falls back to solar time). | clock: Optional. civil (default), solar or utc. | at: Optional UTC instant, e.g. 2026-11-02T08:30Z. Defaults to now. ### Situated draw (verifiable cards for a place and intent) ($0.01) Draws 1-10 ROAST-78 cards for a world tile and an optional intent, using the public drand beacon (League of Entropy, including Cloudflare; a new BLS-signed value every 3 s). Nobody, including this service, can steer the outcome before the beacon round is published, and anyone can replay it from the receipt (round + tile + intent hash). Positions are named from the place card's own spread template when one exists for that count. Each card includes orientation, meaning, keyword, element, story catalyst and prompt. The intent text is hashed, never stored or returned. - GET https://value-verdicts.mcfulltime.workers.dev/v1/situated-draw?latitude=29.9792&longitude=31.1342&intent=What+does+this+place+ask+of+the+traveller%3F&count=3 - POST https://value-verdicts.mcfulltime.workers.dev/v1/situated-draw with JSON body {"latitude":29.9792,"longitude":31.1342,"intent":"What does this place ask of the traveller?","count":3} - Parameters: latitude (required): Latitude from -90 to 90. | longitude (required): Longitude from -180 to 180. | intent: Optional question or intent (max 500 characters). Only its SHA-256 hash is used and returned. | count: Optional number of cards, 1 to 10 (default 1). | reversals: Optional. Allow reversed cards (default true). | round: Optional drand round, to replay or verify an earlier draw. Omit for a fresh, unpredictable draw. | at: Optional past UTC instant (e.g. 2026-11-02T08:30Z) to draw with the beacon round of that moment. Omit for now. ### Contextual pairing (places and names, related) ($0.02) Relates 2-8 world places and up to 8 named entities, deterministically. For each place: its ROAST-78 tile card and element. For every pair: elemental dignity (Golden Dawn rules: strengthening, friendly, opposing or neutral), same suit, lattice step, great-circle distance and initial bearing, and the card of the midpoint tile. Each name is turned into a card sequence with the Anagramic alphabet cipher (A-V = Major Arcana, W-Z = the four Aces), with its dominant element and its dignity with each place. For games, matchmaking, travel stories and multi-location worldbuilding. Includes a receipt hash. - GET https://value-verdicts.mcfulltime.workers.dev/v1/contextual-pairing?places=%5Bobject+Object%5D%2C%5Bobject+Object%5D&entities=Isis%2CMerlin - POST https://value-verdicts.mcfulltime.workers.dev/v1/contextual-pairing with JSON body {"places":[{"latitude":29.9792,"longitude":31.1342,"label":"Giza"},{"latitude":51.1789,"longitude":-1.8262,"label":"Stonehenge"}],"entities":["Isis","Merlin"]} - Parameters: places (required): 2 to 8 places. GET: flat "lat,lon,lat,lon". | entities: Optional. Up to 8 names (people, characters, places, brands), max 64 characters each. GET: comma-separated. ## How to pay 1. Call the check. You get HTTP 402 with a `PAYMENT-REQUIRED` header (base64 JSON, also in the body) listing `accepts`. 2. Sign an x402 v2 "exact" payment for that requirement and retry with the `PAYMENT-SIGNATURE` header. 3. You get HTTP 200 with the verdict and a `PAYMENT-RESPONSE` header containing the settlement transaction. Invalid input returns 400 before any payment is requested. Payment is only settled if the check runs. ## MCP Streamable HTTP MCP server at https://value-verdicts.mcfulltime.workers.dev/mcp with tools address_check, link_check, payment_check, x402_preflight, celestial_state, celestial_relations, celestial_event_window, celestial_earth_projection, spatial_identity, time_portal, location_context, situated_draw, contextual_pairing. A small free daily allowance applies; after it, pass an x402 payment in the `_payment` argument. ## Machine-readable - OpenAPI: https://value-verdicts.mcfulltime.workers.dev/openapi.json - x402 resources: https://value-verdicts.mcfulltime.workers.dev/.well-known/x402 - Service index (JSON): https://value-verdicts.mcfulltime.workers.dev/ with Accept: application/json ## Live data - Addresses: on-chain lookup (EVM chains, Solana, Bitcoin) of whether the address has ever been used, and whether it is a wallet, contract or program. - Links: DNS existence and domain registration date (RDAP). Pages are never visited. - If a live source is unreachable, the check still answers from its static analysis and says which data was unavailable. ## Credits - Celestial calculations use the Swiss Ephemeris (Astrodienst AG). ## Limits - A scam on an established, innocent-looking domain with no brand in its name can pass the link check. - Address checks cannot tell whether the owner of a valid, active address is honest. - Some registries (for example .io) do not publish registration dates, so domain age is unknown there. Usage counters: https://value-verdicts.mcfulltime.workers.dev/v1/stats