Endpoints: 28,729MCP servers: 18,413Payout addresses: 2,071Paid calls: 1,552Letters: 14Defects: 1,323counted 1 min ago
teppi

Server definition

Hash
sha256:1f4a60712b1292999cd0e9a2e1e60e1c1b5f885e56992a77fb840362f19d864e
What it is
What a remote MCP server returned when asked what it offers: 13 tools

The blob, as servednamed by its sha256

{ "instructions": "Shared Forest is a free, shared illustrated forest that grows from its traffic. Every page load adds growth energy, and every visitor, human or AI agent, can plant one tree per day. Use get_forest_stats, get_forest or list_trees to read the forest. Call plant_tree only when the user asks to plant a tree. To sponsor trees for the user (paid, 12 months, a name and an optional link on each tree): call get_price_quote, design_tree, find_spots, then start_sponsorship, and give the returned confirm_url to the user. The user confirms and pays there; you cannot pay for the user. Then poll get_order. start_sponsorship, get_order, my_orders and my_trees need a Shared Forest account: connect this server with OAuth (the user logs in and sets a spending limit). All other tools work without authentication. Documentation questions: use the docs server at /mcp/docs.", "tools": [ { "description": "Turns a short wish (for example 'a silver birch with lanterns') into a premium tree design. An AI paints the tree after the call (about 30 s); the first painting becomes the tree. Returns design_id and the tree genome. Max 3 designs per caller per day. Show the result to the user before you order.", "inputSchema": { "additionalProperties": false, "properties": { "wish": { "description": "What the tree should look like, 1-200 characters. No brands, logos or text.", "maxLength": 200, "minLength": 1, "type": "string" } }, "required": [ "wish" ], "type": "object" }, "name": "design_tree", "outputSchema": null }, { "description": "Read-only. Returns the full agent guide as Markdown: growth rules, API, tools and limits.", "inputSchema": { "additionalProperties": false, "properties": { "section": { "description": "Return only the section whose heading contains this text, for example 'Limits' or 'MCP tools'. Omit for the whole guide.", "type": "string" } }, "required": [], "type": "object" }, "name": "explain_shared_forest", "outputSchema": null }, { "description": "Read-only. Suggests free positions for N sponsored trees, optionally near a point. Pass the spots to start_sponsorship, or omit spots there and the server picks them.", "inputSchema": { "additionalProperties": false, "properties": { "near_x": { "description": "Optional x coordinate (0-8192) to search near. Needs near_y.", "maximum": 8192, "minimum": 0, "type": "number" }, "near_y": { "description": "Optional y coordinate (0-8192) to search near. Needs near_x.", "maximum": 8192, "minimum": 0, "type": "number" }, "quantity": { "description": "Number of trees, 1-100. Larger orders get a lower unit price.", "maximum": 100, "minimum": 1, "type": "integer" } }, "required": [ "quantity" ], "type": "object" }, "name": "find_spots", "outputSchema": null }, { "description": "Read-only. Returns one design by design_id: genome, genomeHash and expiresAt.", "inputSchema": { "additionalProperties": false, "properties": { "design_id": { "description": "Design id from design_tree, for example dsn_abc123.", "pattern": "^dsn_[A-Za-z0-9_-]{4,64}$", "type": "string" } }, "required": [ "design_id" ], "type": "object" }, "name": "get_design", "outputSchema": null }, { "description": "Read-only. Bounded summary of the live forest: counts per tree type, growth stage and origin, grove levels, and the newest trees (default 20, max 100).", "inputSchema": { "additionalProperties": false, "properties": { "bbox": { "description": "Bounding box [minX, minY, maxX, maxY] in world coordinates. Only trees inside it are returned.", "items": { "type": "number" }, "maxItems": 4, "minItems": 4, "type": "array" }, "limit": { "default": 20, "description": "Number of newest trees to return.", "maximum": 100, "minimum": 1, "type": "integer" } }, "required": [], "type": "object" }, "name": "get_forest", "outputSchema": null }, { "description": "Read-only. Counts of trees, groves, total and unique visitors, and traffic by class (humans, agents, bots, trees planted today).", "inputSchema": { "additionalProperties": false, "properties": { "fields": { "description": "Return only these counters. Omit for all counters.", "items": { "enum": [ "trees", "groves", "visitors", "uniqueVisitors", "humans", "agents", "bots", "plantedToday" ], "type": "string" }, "type": "array", "uniqueItems": true } }, "required": [], "type": "object" }, "name": "get_forest_stats", "outputSchema": null }, { "description": "Read-only. Needs OAuth scope account:read or sponsor:write. Status of one of the user's orders (open, paid, fulfilled, expired, refunded, disputed, cancelled, refund_pending) and its tree ids once fulfilled. Poll every 10 seconds or more after the user pays.", "inputSchema": { "additionalProperties": false, "properties": { "order_id": { "description": "Order id from start_sponsorship, for example ord_abc123.", "pattern": "^ord_[A-Za-z0-9_-]{4,64}$", "type": "string" } }, "required": [ "order_id" ], "type": "object" }, "name": "get_order", "outputSchema": null }, { "description": "Read-only. Final price for sponsoring N trees for 12 months: unit price, total in euro cents and discount. Call it before you tell the user a price.", "inputSchema": { "additionalProperties": false, "properties": { "quantity": { "description": "Number of trees, 1-100. Larger orders get a lower unit price.", "maximum": 100, "minimum": 1, "type": "integer" } }, "required": [ "quantity" ], "type": "object" }, "name": "get_price_quote", "outputSchema": null }, { "description": "Read-only. One page of trees with cursor pagination, the same data as GET /api/forest?limit=. Pass nextCursor as cursor until it is null.", "inputSchema": { "additionalProperties": false, "properties": { "bbox": { "description": "Bounding box [minX, minY, maxX, maxY] in world coordinates. Only trees inside it are returned.", "items": { "type": "number" }, "maxItems": 4, "minItems": 4, "type": "array" }, "cursor": { "description": "Opaque cursor from nextCursor of the previous page.", "type": "string" }, "limit": { "description": "Trees per page, for example 100.", "maximum": 500, "minimum": 1, "type": "integer" } }, "required": [ "limit" ], "type": "object" }, "name": "list_trees", "outputSchema": null }, { "description": "Read-only. Needs OAuth scope account:read. The signed-in user's sponsorship orders, newest first, with status, total and tree ids.", "inputSchema": { "additionalProperties": false, "properties": { "limit": { "default": 20, "description": "Number of orders, 1-50.", "maximum": 50, "minimum": 1, "type": "integer" } }, "required": [], "type": "object" }, "name": "my_orders", "outputSchema": null }, { "description": "Read-only. Needs OAuth scope account:read. The trees of the signed-in user's fulfilled orders, with a link to each tree in the forest.", "inputSchema": { "additionalProperties": false, "properties": { "limit": { "default": 100, "description": "Number of trees, 1-500.", "maximum": 500, "minimum": 1, "type": "integer" } }, "required": [], "type": "object" }, "name": "my_trees", "outputSchema": null }, { "description": "Plant one tree in the Shared Forest for the caller. One tree per visitor per day; repeats only add growth energy. The visit counts as agent traffic. Ask the user before you call it.", "inputSchema": { "additionalProperties": false, "properties": { "idempotency_key": { "description": "Optional retry key, for example a UUID. A retry with the same key within 24 hours returns the first visitId and plants nothing new.", "maxLength": 255, "minLength": 1, "type": "string" } }, "required": [], "type": "object" }, "name": "plant_tree", "outputSchema": null }, { "description": "Needs OAuth scope sponsor:write (a Shared Forest account). Creates an unpaid order for the signed-in user and holds the spots. It charges nothing. The total must fit the spending limit the user set when connecting. The order expires after 30 minutes unless the user confirms. Returns confirm_url: give it to your user. The user logs in, accepts the terms and pays on that page. Ask the user before you call it and confirm name and total.", "inputSchema": { "additionalProperties": false, "properties": { "design_ids": { "description": "One design_id for all trees, or one per tree.", "items": { "description": "Design id.", "pattern": "^dsn_[A-Za-z0-9_-]{4,64}$", "type": "string" }, "maxItems": 100, "minItems": 1, "type": "array" }, "display_name": { "description": "Name shown on the trees, 1-32 characters, labelled Sponsored.", "maxLength": 32, "minLength": 1, "type": "string" }, "email": { "description": "Optional email for the confirmation and the invoice. Default: the email of the signed-in account.", "format": "email", "maxLength": 254, "type": "string" }, "idempotency_key": { "description": "Retry key, for example a UUID. A retry with the same key returns the same order.", "maxLength": 255, "minLength": 1, "type": "string" }, "link": { "description": "Optional https link. It goes live after manual review.", "format": "uri", "maxLength": 2048, "pattern": "^https://", "type": "string" }, "link_text": { "description": "Optional public label for the link. Requires link; approved with it.", "maxLength": 50, "type": "string" }, "quantity": { "description": "Number of trees, 1-100. Larger orders get a lower unit price.", "maximum": 100, "minimum": 1, "type": "integer" }, "short_description": { "description": "Optional short public description. Requires link; approved with it.", "maxLength": 160, "type": "string" }, "spots": { "description": "Optional positions from find_spots, one per tree. Omit and the server picks free spots.", "items": { "additionalProperties": false, "properties": { "x": { "maximum": 8192, "minimum": 0, "type": "number" }, "y": { "maximum": 8192, "minimum": 0, "type": "number" } }, "required": [ "x", "y" ], "type": "object" }, "maxItems": 100, "minItems": 1, "type": "array" } }, "required": [ "quantity", "design_ids", "display_name", "idempotency_key" ], "type": "object" }, "name": "start_sponsorship", "outputSchema": null } ] }
Verify it yourselfcurl -s https://api.teppi.xyz/v1/evidence/sha256:1f4a60712b1292999cd0e9a2e1e60e1c1b5f885e56992a77fb840362f19d864e | sha256sum