pointmoon · apache-2.0

Ground truth for agents acting in the physical world.

Pointmoon reads a location’s live conditions and returns each fact with its source, its timestamp, how long it stays good, and a confidence score. When the data won’t hold, it returns silence with a reason instead of a guess. Language models are strong with words and weak on the physical world. Pointmoon is the part that actually knows what’s happening at a place.

Sourced, time-stamped, or silent.

The problem

An AI can describe the weather. It can’t go outside.

A model will tell you it’s 18 degrees and partly cloudy at a place it has never queried. It sounds right. There’s no source, no timestamp, no way to check it, and the model can’t tell you which of its facts it made up.

That’s fine for a chat reply. It’s not fine when your app acts on it: planning someone’s day outdoors, advising on field conditions, deciding a window is right to be outside. A wrong fact becomes a wrong action.

The fix isn’t a smarter model. It’s giving the model a live feed of real conditions where every fact says where it came from, how fresh it is, and what’s simply unknown.

What it does

One call, the real conditions.

You send a latitude and longitude, or a place name like “Boston.” Pointmoon returns what’s actually happening there right now, pulled live from real sources: weather, air quality, sun and moon and daylight, recent wildlife nearby, and what’s in season. Every value comes with its source, the time it was measured, and how sure that source is.

1

Every fact is sourced.

No fact arrives anonymous. Each one names the feed it came from, when it was measured, and how confident that source is. If your app acts on a Pointmoon fact, it can show exactly where the fact came from.

2

Every fact has a shelf life.

Each fact says how long it stays good. Stale data is not passed off as current. Once a fact’s window is up, Pointmoon stops repeating it instead of handing you an old reading as a fresh one.

3

It tells you what it doesn’t know.

When the data is too thin, too old, or too uncertain, Pointmoon returns silence with a reason instead of a confident guess. The promise is not that it always has an answer. It is that it never gives you a wrong one.

One read, many signals

One call covers the whole picture.

A single request returns eight kinds of signal for the same moment: time, place, season, weather, sky, life (recent wildlife and what’s in season), history, and water. That includes things like UV, sun position, moon phase and days to full, daylight length, and air quality, each as its own sourced fact. You don’t stitch six APIs together and line up their timestamps.

timeplaceseason & phenologyweatherskylifehistorical & seasonalwater

Some signals are thin in much of the world. Place detail and water data are often silent, and Pointmoon marks them silent rather than inventing them. You get what the data can actually stand behind.

Why you’d use it

So your app says true things.

If your app or agent does anything with the physical world, it can’t trust the model to know it. Pointmoon is the part that actually knows, so what your app says about a place is real and you can point to where each fact came from. When the data isn’t solid, Pointmoon returns nothing for that fact rather than a guess, so your app never repeats something made up.

  • Outdoor and wellness apps that tailor what they suggest to today’s real weather, light, and season.
  • Travel and location assistants that need to say what it’s actually like somewhere right now.
  • Gardening, agriculture, and field tools, or anything that has to know the real conditions at a spot before it acts.

The proof

Grounded or silent. Measured, and live.

See it on your own coordinate.

The best proof isn’t a number on this page, it’s the live read. The /now page shows the real current conditions for your location, every value stamped with its source, its freshness, and its confidence, and every signal the data can’t back shown as silence with a reason. It’s the product, working, on your screen.

Grounded or silent, every time.

Pointmoon ships with a benchmark you can re-run, across six locations picked to stress it: a data-rich city, a coast, a high latitude, a sparse spot, a source mid-outage, and a deliberately fake coordinate. Across all six, every answer was either sourced and fresh, or an honest silence. Never a confident wrong answer.

100%grounded-or-silent
0confidently-wrong facts
6stress coordinates

Without grounding

Ask a bare model for the temperature, sky, and wind and it gives you confident numbers. No source, no timestamp. Made up, and impossible to tell apart from a real reading.

With Pointmoon

The same model answers from real facts, or says plainly what it can’t confirm. Same model, same question. One invents the world, the other reports it.

How it compares to a weather API

It sits on top of the feeds and adds what they leave out.

A weather APIPointmoon
ReturnsA numberA number, plus where it came from, when, and how sure
When data is thinA guess, or a 200 that looks fineSilence, with a reason
When a source is downHangs, errors, or quietly serves stale dataA bounded answer, honest about what’s missing, never a silent failure
ScopeOne feedWeather, air, sky, light, life, and place in one read
Built forA person reading a forecastAn app that acts on the fact and can show its work

Pointmoon isn’t competing with the feeds. It sits on top of them and adds what they leave out: where each fact came from, how fresh it is, how sure it is, and the discipline to stay quiet when it doesn’t know. There’s a backup weather source, a bounded worst-case response time, and an honest fallback when the live sources go dark. It degrades and tells you. It doesn’t hang.

Built to be called

One call, over HTTP or MCP.

Pointmoon is Apache-2.0 and made to be called by software. Reach it over plain HTTP at /api/moon?audience=facts, or add it as an MCP tool (field_truth) that any MCP client can call. A model can use it from the schema alone. The live /now read uses the same endpoint.

The exact request, the response shape, and the MCP setup are all in the docs: the quickstart to make your first call, the API reference for the contract, and the MCP server guide to wire it as a tool.

Stop letting your app guess about the physical world.

If your app only ever talks, you may not need this. If it acts, you need to know which of its facts are real. See the live read for any location, then wire it in with one call.

Sourced, time-stamped, or silent.