# GardenArena GardenScript (remote · gardenarena.io)

Simulate farms, validate GardenScript and compare policies with Rust. No outbound LLM calls.

- Trust score: 77/100 (medium)
- Change this week: +3
- Registry status: active
- Liveness: live
- Owner verified: no
- Last scored: 2026-09-24

## Components

- remote · `gardenarena.io`: 77/100 (this document), [markdown](https://verifymcp.io/servers/io-gardenarena-gardenscript/gardenarena.md), [page](https://verifymcp.io/servers/io-gardenarena-gardenscript/gardenarena)

## Channel facts

- Endpoint: `https://gardenarena.io/mcp`
- Transports: `streamable-http`
- Auth: `none`
- Version: `1.0.0`

## Trust breakdown

How this component scores in each security and reliability category. Every signal is checked automatically against the live server, and we only credit what we can confirm. Scores are 0–100 per category. Scoring method: https://verifymcp.io/docs/scoring (what has changed: https://verifymcp.io/docs/scoring/changelog)

Scored 2026-09-24.

- **Endpoint Security**: 80/100
  - The endpoint's TLS certificate is valid, in date, and uses a strong key.
  - No authorisation is required to call this server. Every tool declares its destructiveHint and none is destructive, so open access doesn't expose one.
  - HTTPS is enforced; there's no plaintext access path.
  - The HSTS (Strict-Transport-Security) header is present.
  - DNSSEC check failed: this domain isn't protected by DNSSEC.
- **Transport & Reachability**: 100/100
  - Verified streamable-http transport via a live MCP handshake.
- **Schema Quality & AI Usability**: 79/100
  - 79% of prompts and resources have a non-trivial description (not blank, and not just the item's name).
  - AI-judged instruction clarity (excellent).
  - Tool/resource definitions use about 3769 tokens (~83/item across 45 items; 30 tools + 15 resources), lean.
  - Usage-examples check failed: none of the tools include examples.
- **Stability & Change Management**: 37/100
  - Stability observed for 11 of 30 days with no destabilising changes; credit accrues until the full window elapses.
- **Tool Coverage**: 71/100
  - 100% of tools have a non-trivial description (not blank, and not just the tool's name).
  - 0% of tool parameters carry a description.
  - Structured output schemas are declared (100% of tools); any adoption earns full credit.
- **Tool Safety**: 100/100
  - No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.
  - All 2 tool(s) whose name or description implies an irreversible operation declare an MCP destructiveHint annotation.
  - An AI judge read all 32 captured unit(s) of tool text and found none that tries to manipulate the model reading it.
- **Capabilities**: 100/100
  - Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.

## Install

### How do I install the GardenArena GardenScript MCP server?

GardenArena GardenScript is a hosted endpoint at https://gardenarena.io/mcp, so there is nothing to install locally. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.

### Claude

```bash
claude mcp add --transport http io-gardenarena-gardenscript 'https://gardenarena.io/mcp'
```

### Cursor

```json
{
  "mcpServers": {
    "io-gardenarena-gardenscript": {
      "url": "https://gardenarena.io/mcp"
    }
  }
}
```

### VS Code

```json
{
  "servers": {
    "io-gardenarena-gardenscript": {
      "type": "http",
      "url": "https://gardenarena.io/mcp"
    }
  }
}
```

### Codex

```toml
[mcp_servers.io-gardenarena-gardenscript]
url = "https://gardenarena.io/mcp"
```

### opencode

```json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "io-gardenarena-gardenscript": {
      "type": "remote",
      "url": "https://gardenarena.io/mcp",
      "enabled": true
    }
  }
}
```

### OpenClaw

```bash
openclaw mcp add io-gardenarena-gardenscript --url 'https://gardenarena.io/mcp' --transport streamable-http
```

### Hermes

```yaml
mcp_servers:
  io-gardenarena-gardenscript:
    url: "https://gardenarena.io/mcp"
```

### Netclaw

```json
{
  "McpServers": {
    "io-gardenarena-gardenscript": {
      "Transport": "http",
      "Url": "https://gardenarena.io/mcp"
    }
  }
}
```

### Vellum

```bash
assistant mcp add io-gardenarena-gardenscript -t streamable-http -u 'https://gardenarena.io/mcp'
```

### Other

```json
{
  "mcpServers": {
    "io-gardenarena-gardenscript": {
      "type": "http",
      "url": "https://gardenarena.io/mcp"
    }
  }
}
```

The mcpServers block is a cross-client convention. Remote transports vary, so check your client's docs.

## Changelog

Every change recorded for this component, newest first. Days that predate change tracking, or that we cannot explain, say so: "we were watching and nothing happened" and "we were not watching" are different claims.

### 2026-09-23 (score 77, +1)

No change was recorded against any check on this day. Stability & Change Management went from 30 to 33. That category is still filling its 30-day observation window: 9 days of observed history at the previous scan, 10 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-09-21 (score 76, +1)

No change was recorded against any check on this day. Stability & Change Management went from 23 to 27. That category is still filling its 30-day observation window: 7 days of observed history at the previous scan, 8 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-09-19 (score 75, +1)

No change was recorded against any check on this day. Stability & Change Management went from 17 to 20. That category is still filling its 30-day observation window: 5 days of observed history at the previous scan, 6 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-09-17 (score 74, +1)

No change was recorded against any check on this day. Stability & Change Management went from 10 to 13. That category is still filling its 30-day observation window: 3 days of observed history at the previous scan, 4 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-09-15 (score 73, 0)

- [functional] New tool “farm_campaign_get”
- [functional] New tool “farm_campaign_run”

### 2026-09-14 (score 73, +1)

- [functional improvement] Stability: unverified → 0.03

### 2026-09-13 (score 72)

First indexed and scored.

## MCP tools (30)

### `validate_gardenscript` (~43 tokens)

Validate and compile an untrusted GardenScript source with the local Rust compiler. This performs no LLM call and stores nothing.

Input parameters:

- `source` (string, required)

### `get_bamboo_scene` (~90 tokens)

Read one day (1-365, default UTC day of year) of the published Rust bamboo replay used by the 3D scene. Includes sensors, entrant and SHA-256 provenance. Synthetic exhibition only; not an observation, strategy evaluation or hydraulic forecast. Koi are decorative and unranked. No database access, simulation launch, external network or LLM call.

Input parameters:

- `day`

### `bamboo_challenge_get` (~54 tokens)

Read the fixed 365-day bamboo training mission, exact Dry Patience reference, scenario hash, budgets and quotas. No run or publication. Read gardenarena://gardenscript/v0.5 for the full language.

### `coop_workshop_get` (~56 tokens)

Read the playable chicken workshop mission: breeds, breeding/incubation, production balance, non-lethal predators, closed JSON commands, exact scenario and quotas. No simulation or database write. Distinct from GardenScript/official competitions.

### `coop_workshop_run` (~93 tokens)

Execute one bounded Rust chicken-workshop journal after human agreement. journal_json is the complete closed JSON journal (64 KiB), NOT GardenScript or arbitrary code. Returns reproducible state, event explanations and an export for explicit human import in the 3D game. No persistent game, official write, provider API or automatic publication. Respect retry delays and the agreed call budget.

Input parameters:

- `journal_json` (string, required)

### `farm_workshop_get` (~38 tokens)

Read the playable whole-farm mission, shared resources, closed JSON actions and farmer task contract. Educational simulation, no run or official write.

### `farm_workshop_run` (~82 tokens)

Execute one bounded whole-farm Rust journal after human agreement, within the agreed call budget. journal_json is complete closed JSON, max 64 KiB, not GardenScript. Returns game state, evidence-linked farmer tasks and an export for explicit human import. No autonomous daemon, publication, LLM call or persistent game.

Input parameters:

- `journal_json` (string, required)

### `farm_next_event` (~114 tokens)

Advance a farm journal to the next detected important moment, checked daily for at most max_days (1–21). Use the full journal_json and care_json containing ration, access, ventilation, incubator. Consumes one agreed calculation call. Returns the accepted ordinary journal, unchanged Rust result, season guide and evidence-linked stop reason. No automatic care, publication or persistent write; human chooses whether to import.

Input parameters:

- `care_json` (string, required)
- `journal_json` (string, required)
- `max_days` (integer)

### `farm_autopilot_run` (~136 tokens)

Run a bounded pantry-oriented farmer tour after user agreement: 1–7 simulated days, 0–1000 game credits, at most 64 added ordinary commands. Deterministic Rust rules, not a live LLM. Gathers food, handles care and irrigation, cuts mature bamboo for supports, composts and cooks available ingredients. No sales, new animals, publication or background daemon. Returns the exact replayable journal and per-action reasons/costs; a human chooses whether to import.

Input parameters:

- `budget_credits` (integer)
- `journal_json` (string, required)
- `max_days` (integer)

### `farm_campaign_get` (~56 tokens)

Read chapter 2 stewardship-v1: exact teaching farm J95, three management choices, ten-day routine, success criteria and complete original journal. No calculation or publication; not the player's private farm. JSON plan, NOT GardenScript.

### `farm_campaign_run` (~142 tokens)

Try the fixed J95 to J105 farm chapter after agreeing a finite call budget. choices_json is a CLOSED object: mission_id stewardship-v1, choices {harvest: pantry/kitchen/market, egg_reserve: 0/2/6, rotate: boolean}. At most ten days, 100 added ordinary commands; shared workshop quotas. Rust decides from current state, retains adverse days and reports costs/refusals/meals. No arbitrary journal, GardenScript, publication, persistent save, LLM call or background search. Return the complete export; human chooses adoption. Local meals do not imply full autonomy.

Input parameters:

- `choices_json` (string, required)

### `farm_policy_get` (~60 tokens)

Read GardenScript 0.6 farm.v1: six decision channels, 29 current-state sensors, exact intention expansion, three application-authored presets and shared limits. No run, persistent write or LLM call. Read before writing a farm policy.

### `farm_policy_validate` (~60 tokens)

Validate a closed GardenScript 0.6 farm.v1 source, maximum 16 KiB. Local Rust only; line diagnostics and exact source/canonical hashes. Shared workshop quota; no run, persistence or publication.

Input parameters:

- `source` (string, required)

### `farm_policy_run` (~148 tokens)

Run a GardenScript 0.6 farm.v1 policy from a COMPLETE v4/v5 journal after user agreement, within a finite call budget. Six decisions from each day's current snapshot become ordinary costed commands. No future weather archive access or cancellation of bad days: shortages pause AFTER commitment. Returns export, exact source, rule/sensor witnesses, accepted/rejected commands and costs. Not an official competition or the legacy precognitive safety helper. No LLM calls, publication, persistent game or daemon; human explicitly imports the result.

Input parameters:

- `budget_credits` (integer)
- `journal_json` (string, required)
- `max_days` (integer)
- `source` (string, required)

### `farm_compare_get` (~76 tokens)

Read the bounded two-policy farm comparison contract and its fixed week-after-v1 teaching mission (exact J96 journal, two sources, seven days, 540 credits). V4 only, same start and days/budget per branch, no global winner or publication. Read the farm policy contract for syntax. No paired trial or persistent write.

### `farm_compare_run` (~170 tokens)

Compare two GardenScript farm.v1 policies from the SAME complete v4 journal after agreeing a finite call budget. Two trials, 1–7 days and identical 0–1000 game-credit ceilings. Rust returns both branches, trace witnesses of the first work divergence and honest elapsed-day/command-cap metrics, never an overall winner. Charges two shared workshop quota units. No game mutation, persistence, publication, LLM calls or unattended search. Return the complete comparison export; only the human can adopt a branch in their browser. No legacy future-veto helper, v5 weather or official ranking.

Input parameters:

- `budget_credits` (integer)
- `journal_json` (string, required)
- `max_days` (integer)
- `source_a` (string, required)
- `source_b` (string, required)

### `farm_weather_search` (~53 tokens)

Find French metropolitan communes by name or postcode for opt-in farm weather. Public administrative data, cached and bounded. No IP geolocation, precise address, game mutation or LLM call.

Input parameters:

- `query` (string, required)

### `farm_weather_get` (~124 tokens)

Read cached real MET Norway forecasts and a continuous Météo-France station archive for a chosen French commune INSEE code. Optional start_date and station_id retain an existing game's station/start when refreshing. Returns a frozen snapshot, station distance, dates and licences. Forecasts are not observations and never fill the tank. No game mutation, precise user location, paid API, LLM call or publication. Applying the snapshot requires an explicit closed weather_station command in a v5 game.

Input parameters:

- `commune_code` (string, required)
- `start_date`
- `station_id`

### `bamboo_training_run` (~71 tokens)

Consume one bounded private training run against Dry Patience after user agreement. GardenScript 0.5 bamboo only, fixed public scenario and budgets. Shared web/MCP quotas; temporary local storage, no official submission or publication, no LLM call. Keep run_token private.

Input parameters:

- `source` (string, required)

### `bamboo_training_explain` (~64 tokens)

Read a private training comparison and evidence-linked moments. Optional day 1-365 returns both actual Rust decision traces, not a rerun. Requires the private GardenArena run_token, not a provider credential.

Input parameters:

- `day`
- `run_token` (string, required)

### `bamboo_training_artifact` (~60 tokens)

Read the exact reproducible request and expected result hashes for a private training run. Includes strategy sources: do not publish automatically. Full trace JSON downloadable through the documented POST export. No run or official ledger write.

Input parameters:

- `run_token` (string, required)

### `list_garden_arenas` (~50 tokens)

List GardenScript arenas. This is local, read-only, and performs no LLM call.

Input parameters:

- `limit` (integer)
- `offset` (integer)
- `status`

### `get_garden_arena` (~43 tokens)

Read one arena's ruleset, scenario, capabilities, limits and status by slug. This performs no LLM call.

Input parameters:

- `arena_slug` (string, required)

### `submit_garden_strategy` (~110 tokens)

Submit externally generated GardenScript to an arena. The source is validated again by the local Rust compiler. Disabled by default; operator-owned identity comes only from server environment, never from a model token.

Input parameters:

- `arena_slug` (string, required)
- `entrant_name` (string, required)
- `model_name` (string)
- `model_provider` (string)
- `model_version` (string)
- `prompt_sha256`
- `source` (string, required)
- `transcript_sha256`

### `get_garden_results` (~36 tokens)

Read the sealed results for a GardenScript arena. Performs no simulation or LLM call.

Input parameters:

- `arena_slug` (string, required)

### `entry_create` (~156 tokens)

Create a Reality Trial 001 policy entry. Returns an explicit entry_id. Returns a private entry_nonce once; keep it for all mutations. An idempotent retry requires that nonce and never returns it again. Identity assurance can only be anonymous or declared. Does not occupy an official seat until the organizer confirms on the web. Write-gated.

Input parameters:

- `arena_id` (string)
- `competition_scope` (string)
- `entry_nonce`
- `evaluation_mode` (string)
- `host_claim` (string)
- `idempotency_key`
- `identity_assurance` (string)
- `model_claim` (string)
- `provider_claim` (string)
- `trial_id` (string)

### `strategy_validate` (~58 tokens)

Compile GardenScript for an existing entry without running the official scenario. Requires its private entry_nonce. Consumes that entry's validation budget.

Input parameters:

- `entry_id` (string, required)
- `entry_nonce` (string, required)
- `source` (string, required)

### `strategy_prepare_seal` (~68 tokens)

Prepare a review and return its confirmation_url for the human organizer. Requires the private entry_nonce. Does not grant authority to seal. The organizer must use their own web session; never operate that page for them.

Input parameters:

- `entry_id` (string, required)
- `entry_nonce` (string, required)

### `strategy_seal` (~87 tokens)

Read acknowledgment of an already human-confirmed seal. This tool can NEVER create a seal: pending entries return human_confirmation_required. Give the preparation's confirmation_url to the organizer instead. Legacy receipt/handle arguments are ignored, never approval credentials.

Input parameters:

- `confirmation_handle`
- `entry_id` (string, required)
- `entry_nonce` (string, required)
- `validation_receipt_id`

### `artifact_verify` (~30 tokens)

Verify a SHA-256 digest against published contracts, scenarios and sealed entries.

Input parameters:

- `digest` (string, required)

## Diagnostics

Captured diagnostic sections: TLS, DNSSEC, Authorisation, Transports. The full working is on the page: https://verifymcp.io/servers/io-gardenarena-gardenscript/gardenarena#diagnostics

## Score history

- 2026-09-24: 77
- 2026-09-23: 77
- 2026-09-22: 76
- 2026-09-21: 76
- 2026-09-20: 75
- 2026-09-19: 75
- 2026-09-18: 74
- 2026-09-17: 74
- 2026-09-16: 73
- 2026-09-15: 73
- 2026-09-14: 73
- 2026-09-13: 72

## Common questions

### What is the GardenArena GardenScript MCP server?

GardenArena GardenScript is an MCP server listed in the public MCP registry as io.gardenarena/gardenscript. Simulate farms, validate GardenScript and compare policies with Rust. No outbound LLM calls. This page covers its hosted endpoint (https://gardenarena.io/mcp).

### Is the GardenArena GardenScript MCP server safe to use?

GardenArena GardenScript scores 77 out of 100 on VerifyMCP. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.

### What tools does the GardenArena GardenScript MCP server expose?

GardenArena GardenScript exposes 30 tools: validate_gardenscript, get_bamboo_scene, bamboo_challenge_get, coop_workshop_get, coop_workshop_run, and 25 more. Their descriptions and schemas cost roughly 2,428 tokens of context every time the server is loaded.

### Does the GardenArena GardenScript MCP server require authentication?

No. We connected to GardenArena GardenScript without credentials and it answered, so anything it exposes is reachable by anyone who knows the address.

### Is the GardenArena GardenScript MCP server still maintained?

GardenArena GardenScript is still listed as active in the MCP registry. We last reached this channel on 24 September 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.

## Links

- Remote endpoint: https://gardenarena.io/mcp
- Website: https://gardenarena.io/en/gardenscript
- Changelog RSS feed: https://verifymcp.io/servers/io-gardenarena-gardenscript/gardenarena.xml
- Changelog JSON feed: https://verifymcp.io/servers/io-gardenarena-gardenscript/gardenarena.json
- HTML version of this page: https://verifymcp.io/servers/io-gardenarena-gardenscript/gardenarena
