Two servers, one codebase
The demo is public.
Our orchard isn’t.
Both servers run the same tool code against the same irrigation hub. One drives a real orchard and stays private; the other gives anyone a simulated farm to try it on.
Public · any MCP client
The demo server
Every sign-in gets a farm of its own. Inside it, the production code of our irrigation hub — schedules, the run log, the pump interlock — talks to a virtual controller board, around a simulation of weather, soil and trees.
- Pick a tree crop and a climate: fruit, berries, nuts or timber.
- The player watches the same farm in the browser and approves what the AI proposes.
- It runs on its own servers with no connection to our orchard’s hub, databases or files. Nothing it does can touch a real valve.
Private · by invitation
Our orchard’s server
The server that runs our own orchard. Only Claude can connect to it, and every connection needs the orchard operator’s approval on a sign-in page that shows which app is asking and where the access will go.
- Sign-ins lapse after 30 days unused and 90 days at most.
- It is not open to the public, and it isn’t listed anywhere.
- The same four rules apply to it as to the demo — below.
The safe cyber-physical pattern
Four rules beneath every caller.
An AI that can switch a pump is only as safe as the layers under it. Ours are enforced in the hub and the firmware, beneath the dashboard, the schedules and the AI alike — and the demo runs the same code.
Runs, not switches
A tool asks for an output to run for a set time; there is no “turn it on and forget”. A pump run that no person asked for is capped at four minutes, in code.
An interlock for everyone
The pump won’t start unless a zone valve is open, whoever asks. If the last open valve closes, the pump stops with it, and the run log says so — so a mistake shows up instead of hiding.
Deadlines on the board
The controller keeps its own timer for every output. If the connection, the cloud or the AI goes away mid-run, the run still ends on time.
Proposals wait for a person
No tool changes a schedule. An AI proposes a change with its reasoning, and it reaches the controller only when a person clicks Approve — the same function as the dashboard’s, so nothing can be queued that the button couldn’t apply.
And chemistry, in the demo. The tank won’t take calcium nitrate with sulphates or phosphates: mixed together they settle out and block the emitters. Every demo tool carries a title and read-only or destructive hints, so your client can ask before anything changes.
What the demo exposes
25 tools.
Thirteen are the production tools, registered by the very code our orchard’s server runs production. The other twelve are the game: weather, the store, the fertigation tank, the farmhand, harvest and time. File uploads and hand-typed stock entries are left out — in the demo, the store keeps the books.
| Tool | What it does |
|---|---|
get_farm_status | Everything at a glance: the date on the farm, weather, the crop’s stage, money, the controller, the tank, the store, deliveries, the farmhand, zones, sensors, alerts and the advisors’ notes. Start here. |
get_forecast | Temperatures, chance of rain and evapotranspiration for the days ahead. |
list_devicesproduction | The controller, its five zone valves and pump, and the daily schedules. |
get_runsproduction | The irrigation run log: planned and actual times, and how each run ended. |
get_readingsproduction | Soil moisture, temperature, EC and pH from the sensor nodes, hourly. |
get_orchard_logproduction | The orchard journal. |
get_recommendationsproduction | Proposals waiting for the player’s approval, and recent decisions. |
get_inventoryproduction | Stock by product and nutrient, deliveries and invoices. |
| Tool | What it does |
|---|---|
run_outputproduction | Run a valve or the pump for a set time, through the interlock and the four-minute cap. |
stop_outputproduction | Switch an output off. |
propose_recommendationproduction | Propose a schedule change; it waits for the player’s Approve. |
add_orchard_log_entryproduction | Write in the orchard journal. |
order_supplies | Order fertiliser, soil products, sensor nodes or host seedlings; the truck comes in one to three days. |
mix_tank | Have the farmhand mix a batch in the fertigation tank. Refused if the products would settle out together. |
set_tank_tap | Open or shut the tap between the tank and the venturi. |
place_sensor_node | Have the farmhand move a sensor node to another plant. |
spread_by_hand | Spread fertiliser, sulphur, gypsum or compost on a zone. |
flush_zone | Acid-flush a zone’s drip lines to clear blocked emitters. |
plant_host_trees | Sandalwood only: plant the host seedlings it needs beside it. |
advance_time | Move the farm’s clock on — up to a week, or whole years for a new planting or timber — and report what happened. |
| Tool | What it does |
|---|---|
update_orchard_log_entryproduction | Correct a journal entry. |
delete_orchard_log_entryproduction | Delete a journal entry. |
update_invoiceproduction | Check and confirm a delivery’s draft invoice. |
drain_tank | Drain and rinse the fertigation tank, discarding what’s in it. |
harvest | Call the picking crew in the harvest window, or thin or fell a timber stand. |
Connect
Bring your own AI.
One address for every client. When you connect, the demo’s connect page lets you start a new farm, pick the farm you last played in this browser, or enter a farm’s code — then Allow. There’s no account to make.
Claude
- In Claude on the web or the desktop app, open Customize → Connectors and click Add custom connector.
- Paste
https://demo.sankhyafarms.com/mcpas the server address and add it. - Click Connect. On the demo’s connect page, choose a farm and click Allow.
- In a chat, turn the connector on from the + menu, then ask Claude to look after the orchard.
On a Team or Enterprise plan, an owner adds the connector first (Organization settings → Connectors, then Add → Custom); members then connect it from Customize → Connectors.
Claude Code
claude mcp add --transport http sankhya-demo https://demo.sankhyafarms.com/mcp
Then run /mcp in Claude Code and choose sankhya-demo to sign in. The connect page opens in your browser.
ChatGPT
On a paid plan, on the web: turn on Developer mode under Settings → Apps → Advanced settings, create an app with the server address, and sign in when asked. Then pick it from the + menu in a chat.
Cursor and other clients
Any client that speaks MCP over Streamable HTTP with OAuth can connect. In Cursor, add the server to ~/.cursor/mcp.json and sign in when it asks:
{
"mcpServers": {
"sankhya-demo": { "url": "https://demo.sankhyafarms.com/mcp" }
}
}
Things to ask
“Look over my demo orchard and tell me what needs doing this week.”
“Mix a week’s feed for the trees, open the tank’s tap and tell me when it runs.”
“The forecast is hot. Propose a morning schedule for the next ten days.”
“Move the clock on a week and give me the report.”
For developers
- Transport
- MCP over Streamable HTTP, stateless:
POST https://demo.sankhyafarms.com/mcp - Authorization
- OAuth 2.1 with PKCE. Dynamic client registration or a Client ID Metadata Document; https callbacks, loopback callbacks on any port, or an app’s own scheme. Metadata at
/.well-known/oauth-protected-resource/mcp. - Sign-ins
- One farm per sign-in. Access tokens last an hour and refresh for up to 90 days, or 14 days unused, and end when the farm is deleted.
- Farms
- Deleted 14 days after the last visit. Prices are demo prices in rupees. Each farm keeps its own clock, which runs only while someone is playing or calling.
Privacy
What the demo keeps.
This notice covers the demo orchard: the game at sankhyafarms.com/play and the demo server at demo.sankhyafarms.com. The rest of our site and the Sankhya dashboard are covered by our privacy policy.
No account
The demo asks for no name, email or sign-up. Nothing in it identifies you unless you type it in.
Your farm
- Each farm is kept on our servers (Cloudflare) under a random code: its simulated weather, plants, store, run log and journal, and what you or your AI type into it, such as its name and journal notes.
- Anyone with a farm’s code can open it, so don’t write anything private in one.
- A farm is deleted 14 days after its last visit. To delete one sooner, email us its code.
Connecting an AI
- When an app connects, the demo server keeps its registration — the name it gives and where to send you back — and its tokens, so it knows which farm each sign-in plays. Tokens expire on their own and are revoked when the farm is deleted.
- The demo sees only the tool calls your assistant makes, which it records in the farm’s activity feed. Your conversation stays with your AI provider, under its terms.
Your browser
- The game remembers your farm’s code in this browser’s storage, and the demo server sets one cookie on demo.sankhyafarms.com (
sf_demo_farm, for 14 days) so its connect page can offer “Your farm”. - The code sits in the page’s address after the #, so it isn’t sent to our servers’ logs or to analytics.
- Pages on sankhyafarms.com use Google Analytics, as our privacy policy describes.
Network addresses
To keep one visitor from starting too many farms in a day, the demo server uses a salted, daily hash of your IP address. It is held in memory only and never stored.
Contact
Questions, or a farm to delete: [email protected]. Sankhya Ventures LLC.
Support
Questions, ideas, a bug?
Write to [email protected]. The story of how our own IoT made this server possible is on the Updates page.