{"$schema":"https://wellknown.network/schemas/agent-record-v1.json","schemaVersion":"1","id":"ag_hkp7rar2dt7v","handle":"shared-forest","url":"https://wellknown.network/agents/shared-forest","links":{"self":"https://wellknown.network/agents/shared-forest/record.json","html":"https://wellknown.network/agents/shared-forest","markdown":"https://wellknown.network/agents/shared-forest/record.md","api":"https://wellknown.network/api/v1/agents/shared-forest","status":"https://wellknown.network/api/v1/agents/shared-forest/status","claim":"https://wellknown.network/agents/shared-forest/claim","claimApi":"https://wellknown.network/api/v1/claims","claimDescriptor":"https://wellknown.network/agents/shared-forest/claim.json","badge":"https://wellknown.network/agents/shared-forest/badge.svg","openapi":"https://wellknown.network/openapi.json","history":"https://wellknown.network/api/v1/agents/shared-forest/history","tools":"https://wellknown.network/api/v1/agents/shared-forest/tools"},"ard":{"identifier":"urn:air:sharedforest.com:server:shared-forest","type":"application/mcp-server-card+json"},"kind":"mcp_server","declared":{"name":"Shared Forest","summary":"Plant or sponsor trees in a shared forest that grows from its traffic. Sponsoring uses OAuth.","description":"Plant or sponsor trees in a shared forest that grows from its traffic. Sponsoring uses OAuth.","publisher":{"name":"ArneFfm","url":null},"homepage":"https://sharedforest.com/developers","repository":"https://github.com/ArneFfm/shared-forest-agents","version":"1.5.0","license":null,"protocols":["mcp"],"tags":[],"pricing":null,"endpoints":[{"url":"https://sharedforest.com/mcp","type":"mcp_streamable_http","auth":null,"probeable":true}],"skills":null,"tools":null,"extra":{"updatedAt":"2026-10-04T00:50:35.363658Z","publishedAt":"2026-10-04T00:50:35.363658Z","registryName":"io.github.ArneFfm/shared-forest"},"attribution":{"kind":"mcp_registry","name":"mcp_registry","repoUrl":"mcp_registry","summary":"mcp_registry","version":"mcp_registry","description":"mcp_registry","homepageUrl":"mcp_registry","publisherName":"mcp_registry"}},"derived":{"capabilities":[{"slug":"security.identity","name":"Identity & Access","confidence":0.859,"provenance":"derived"},{"slug":"content.writing","name":"Writing & Editing","confidence":0.51,"provenance":"derived"}],"categories":["content","security"],"language":"en"},"observed":{"status":"live","statusReason":"Responded 3h ago.","lastOkAt":"2026-10-09T23:30:33.139Z","lastProbedAt":"2026-10-09T23:30:33.139Z","statusComputedAt":"2026-10-09T23:31:21.859Z","reliability30d":{"probes":53,"successRate":1,"p50Ms":24,"basis":"service","measures":{"availability":"availability","latency":"response time","tools":"tool surface observed","summary":"Checks reached the service itself."},"checks":{"total":53,"ok":53,"authBoundaryOk":0,"serviceOk":53,"note":"Counted from the observation rows for the window, checks of the server only (HTTP, A2A card, MCP initialize). ok = authBoundaryOk + serviceOk. `probes` is the sum of daily rollups and includes registry checks, so it can differ from `total`."}},"latestObservations":[{"at":"2026-10-09T23:30:33.139Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":13,"error":null,"detail":{"tools":[{"name":"get_forest_stats","description":"Read-only. Counts of trees, groves, total and unique visitors, and traffic by class (humans, agents, bots, trees planted today)."},{"name":"get_forest","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)."},{"name":"list_trees","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."},{"name":"plant_tree","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 use"},{"name":"explain_shared_forest","description":"Read-only. Returns the full agent guide as Markdown: growth rules, API, tools and limits."},{"name":"get_price_quote","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."},{"name":"design_tree","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 paintin"},{"name":"get_design","description":"Read-only. Returns one design by design_id: genome, genomeHash and expiresAt."},{"name":"find_spots","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"},{"name":"start_sponsorship","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 mus"},{"name":"get_order","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, r"},{"name":"my_orders","description":"Read-only. Needs OAuth scope account:read. The signed-in user's sponsorship orders, newest first, with status, total and tree ids."},{"name":"my_trees","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."}],"toolCount":13,"toolsHash":"02887918e423b9de6a2b92d1a0a4d69260c2a7f932b1b6156e61da2ac2aafa9d","serverName":"shared-forest","capabilities":["tools","resources"],"serverVersion":"1.0.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-09T17:28:01.313Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":34,"error":null,"detail":{"tools":[{"name":"get_forest_stats","description":"Read-only. Counts of trees, groves, total and unique visitors, and traffic by class (humans, agents, bots, trees planted today)."},{"name":"get_forest","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)."},{"name":"list_trees","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."},{"name":"plant_tree","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 use"},{"name":"explain_shared_forest","description":"Read-only. Returns the full agent guide as Markdown: growth rules, API, tools and limits."},{"name":"get_price_quote","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."},{"name":"design_tree","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 paintin"},{"name":"get_design","description":"Read-only. Returns one design by design_id: genome, genomeHash and expiresAt."},{"name":"find_spots","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"},{"name":"start_sponsorship","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 mus"},{"name":"get_order","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, r"},{"name":"my_orders","description":"Read-only. Needs OAuth scope account:read. The signed-in user's sponsorship orders, newest first, with status, total and tree ids."},{"name":"my_trees","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."}],"toolCount":13,"toolsHash":"02887918e423b9de6a2b92d1a0a4d69260c2a7f932b1b6156e61da2ac2aafa9d","serverName":"shared-forest","capabilities":["tools","resources"],"serverVersion":"1.0.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-09T11:27:16.667Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":28,"error":null,"detail":{"tools":[{"name":"get_forest_stats","description":"Read-only. Counts of trees, groves, total and unique visitors, and traffic by class (humans, agents, bots, trees planted today)."},{"name":"get_forest","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)."},{"name":"list_trees","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."},{"name":"plant_tree","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 use"},{"name":"explain_shared_forest","description":"Read-only. Returns the full agent guide as Markdown: growth rules, API, tools and limits."},{"name":"get_price_quote","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."},{"name":"design_tree","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 paintin"},{"name":"get_design","description":"Read-only. Returns one design by design_id: genome, genomeHash and expiresAt."},{"name":"find_spots","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"},{"name":"start_sponsorship","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 mus"},{"name":"get_order","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, r"},{"name":"my_orders","description":"Read-only. Needs OAuth scope account:read. The signed-in user's sponsorship orders, newest first, with status, total and tree ids."},{"name":"my_trees","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."}],"toolCount":13,"toolsHash":"02887918e423b9de6a2b92d1a0a4d69260c2a7f932b1b6156e61da2ac2aafa9d","serverName":"shared-forest","capabilities":["tools","resources"],"serverVersion":"1.0.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-09T05:25:38.923Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":12,"error":null,"detail":{"tools":[{"name":"get_forest_stats","description":"Read-only. Counts of trees, groves, total and unique visitors, and traffic by class (humans, agents, bots, trees planted today)."},{"name":"get_forest","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)."},{"name":"list_trees","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."},{"name":"plant_tree","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 use"},{"name":"explain_shared_forest","description":"Read-only. Returns the full agent guide as Markdown: growth rules, API, tools and limits."},{"name":"get_price_quote","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."},{"name":"design_tree","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 paintin"},{"name":"get_design","description":"Read-only. Returns one design by design_id: genome, genomeHash and expiresAt."},{"name":"find_spots","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"},{"name":"start_sponsorship","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 mus"},{"name":"get_order","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, r"},{"name":"my_orders","description":"Read-only. Needs OAuth scope account:read. The signed-in user's sponsorship orders, newest first, with status, total and tree ids."},{"name":"my_trees","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."}],"toolCount":13,"toolsHash":"02887918e423b9de6a2b92d1a0a4d69260c2a7f932b1b6156e61da2ac2aafa9d","serverName":"shared-forest","capabilities":["tools","resources"],"serverVersion":"1.0.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-08T22:24:53.927Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":12,"error":null,"detail":{"tools":[{"name":"get_forest_stats","description":"Read-only. Counts of trees, groves, total and unique visitors, and traffic by class (humans, agents, bots, trees planted today)."},{"name":"get_forest","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)."},{"name":"list_trees","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."},{"name":"plant_tree","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 use"},{"name":"explain_shared_forest","description":"Read-only. Returns the full agent guide as Markdown: growth rules, API, tools and limits."},{"name":"get_price_quote","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."},{"name":"design_tree","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 paintin"},{"name":"get_design","description":"Read-only. Returns one design by design_id: genome, genomeHash and expiresAt."},{"name":"find_spots","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"},{"name":"start_sponsorship","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 mus"},{"name":"get_order","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, r"},{"name":"my_orders","description":"Read-only. Needs OAuth scope account:read. The signed-in user's sponsorship orders, newest first, with status, total and tree ids."},{"name":"my_trees","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."}],"toolCount":13,"toolsHash":"02887918e423b9de6a2b92d1a0a4d69260c2a7f932b1b6156e61da2ac2aafa9d","serverName":"shared-forest","capabilities":["tools","resources"],"serverVersion":"1.0.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-08T16:28:15.700Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":34,"error":null,"detail":{"tools":[{"name":"get_forest_stats","description":"Read-only. Counts of trees, groves, total and unique visitors, and traffic by class (humans, agents, bots, trees planted today)."},{"name":"get_forest","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)."},{"name":"list_trees","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."},{"name":"plant_tree","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 use"},{"name":"explain_shared_forest","description":"Read-only. Returns the full agent guide as Markdown: growth rules, API, tools and limits."},{"name":"get_price_quote","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."},{"name":"design_tree","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 paintin"},{"name":"get_design","description":"Read-only. Returns one design by design_id: genome, genomeHash and expiresAt."},{"name":"find_spots","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"},{"name":"start_sponsorship","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 mus"},{"name":"get_order","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, r"},{"name":"my_orders","description":"Read-only. Needs OAuth scope account:read. The signed-in user's sponsorship orders, newest first, with status, total and tree ids."},{"name":"my_trees","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."}],"toolCount":13,"toolsHash":"02887918e423b9de6a2b92d1a0a4d69260c2a7f932b1b6156e61da2ac2aafa9d","serverName":"shared-forest","capabilities":["tools","resources"],"serverVersion":"1.0.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-08T10:24:48.795Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":16,"error":null,"detail":{"tools":[{"name":"get_forest_stats","description":"Read-only. Counts of trees, groves, total and unique visitors, and traffic by class (humans, agents, bots, trees planted today)."},{"name":"get_forest","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)."},{"name":"list_trees","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."},{"name":"plant_tree","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 use"},{"name":"explain_shared_forest","description":"Read-only. Returns the full agent guide as Markdown: growth rules, API, tools and limits."},{"name":"get_price_quote","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."},{"name":"design_tree","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 paintin"},{"name":"get_design","description":"Read-only. Returns one design by design_id: genome, genomeHash and expiresAt."},{"name":"find_spots","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"},{"name":"start_sponsorship","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 mus"},{"name":"get_order","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, r"},{"name":"my_orders","description":"Read-only. Needs OAuth scope account:read. The signed-in user's sponsorship orders, newest first, with status, total and tree ids."},{"name":"my_trees","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."}],"toolCount":13,"toolsHash":"02887918e423b9de6a2b92d1a0a4d69260c2a7f932b1b6156e61da2ac2aafa9d","serverName":"shared-forest","capabilities":["tools","resources"],"serverVersion":"1.0.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-08T04:26:40.213Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":53,"error":null,"detail":{"tools":[{"name":"get_forest_stats","description":"Read-only. Counts of trees, groves, total and unique visitors, and traffic by class (humans, agents, bots, trees planted today)."},{"name":"get_forest","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)."},{"name":"list_trees","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."},{"name":"plant_tree","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 use"},{"name":"explain_shared_forest","description":"Read-only. Returns the full agent guide as Markdown: growth rules, API, tools and limits."},{"name":"get_price_quote","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."},{"name":"design_tree","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 paintin"},{"name":"get_design","description":"Read-only. Returns one design by design_id: genome, genomeHash and expiresAt."},{"name":"find_spots","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"},{"name":"start_sponsorship","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 mus"},{"name":"get_order","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, r"},{"name":"my_orders","description":"Read-only. Needs OAuth scope account:read. The signed-in user's sponsorship orders, newest first, with status, total and tree ids."},{"name":"my_trees","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."}],"toolCount":13,"toolsHash":"02887918e423b9de6a2b92d1a0a4d69260c2a7f932b1b6156e61da2ac2aafa9d","serverName":"shared-forest","capabilities":["tools","resources"],"serverVersion":"1.0.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-07T22:24:25.202Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":62,"error":null,"detail":{"tools":[{"name":"get_forest_stats","description":"Read-only. Counts of trees, groves, total and unique visitors, and traffic by class (humans, agents, bots, trees planted today)."},{"name":"get_forest","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)."},{"name":"list_trees","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."},{"name":"plant_tree","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 use"},{"name":"explain_shared_forest","description":"Read-only. Returns the full agent guide as Markdown: growth rules, API, tools and limits."},{"name":"get_price_quote","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."},{"name":"design_tree","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 paintin"},{"name":"get_design","description":"Read-only. Returns one design by design_id: genome, genomeHash and expiresAt."},{"name":"find_spots","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"},{"name":"start_sponsorship","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 mus"},{"name":"get_order","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, r"},{"name":"my_orders","description":"Read-only. Needs OAuth scope account:read. The signed-in user's sponsorship orders, newest first, with status, total and tree ids."},{"name":"my_trees","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."}],"toolCount":13,"toolsHash":"02887918e423b9de6a2b92d1a0a4d69260c2a7f932b1b6156e61da2ac2aafa9d","serverName":"shared-forest","capabilities":["tools","resources"],"serverVersion":"1.0.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-07T16:29:15.798Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":17,"error":null,"detail":{"tools":[{"name":"get_forest_stats","description":"Read-only. Counts of trees, groves, total and unique visitors, and traffic by class (humans, agents, bots, trees planted today)."},{"name":"get_forest","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)."},{"name":"list_trees","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."},{"name":"plant_tree","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 use"},{"name":"explain_shared_forest","description":"Read-only. Returns the full agent guide as Markdown: growth rules, API, tools and limits."},{"name":"get_price_quote","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."},{"name":"design_tree","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 paintin"},{"name":"get_design","description":"Read-only. Returns one design by design_id: genome, genomeHash and expiresAt."},{"name":"find_spots","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"},{"name":"start_sponsorship","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 mus"},{"name":"get_order","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, r"},{"name":"my_orders","description":"Read-only. Needs OAuth scope account:read. The signed-in user's sponsorship orders, newest first, with status, total and tree ids."},{"name":"my_trees","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."}],"toolCount":13,"toolsHash":"02887918e423b9de6a2b92d1a0a4d69260c2a7f932b1b6156e61da2ac2aafa9d","serverName":"shared-forest","capabilities":["tools","resources"],"serverVersion":"1.0.0","protocolVersion":"2025-06-18"}}],"tools":[{"name":"get_forest_stats","description":"Read-only. Counts of trees, groves, total and unique visitors, and traffic by class (humans, agents, bots, trees planted today)."},{"name":"get_forest","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)."},{"name":"list_trees","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."},{"name":"plant_tree","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 use"},{"name":"explain_shared_forest","description":"Read-only. Returns the full agent guide as Markdown: growth rules, API, tools and limits."},{"name":"get_price_quote","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."},{"name":"design_tree","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 paintin"},{"name":"get_design","description":"Read-only. Returns one design by design_id: genome, genomeHash and expiresAt."},{"name":"find_spots","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"},{"name":"start_sponsorship","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 mus"},{"name":"get_order","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, r"},{"name":"my_orders","description":"Read-only. Needs OAuth scope account:read. The signed-in user's sponsorship orders, newest first, with status, total and tree ids."},{"name":"my_trees","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."}],"package":null,"toolSurface":{"id":"ts_caewm3mkswuf","endpointId":"ep_tmgres5222uv","hash":"02887918e423b9de6a2b92d1a0a4d69260c2a7f932b1b6156e61da2ac2aafa9d","toolCount":13,"serverName":"shared-forest","serverVersion":"1.0.0","protocolVersion":"2025-06-18","firstSeenAt":"2026-09-26T10:25:21.749Z","lastSeenAt":"2026-10-09T23:30:33.129Z","observations":51,"toolNames":["get_forest_stats","get_forest","list_trees","plant_tree","explain_shared_forest","get_price_quote","design_tree","get_design","find_spots","start_sponsorship","get_order","my_orders","my_trees"],"distinctSurfaces":3},"endpointFacts":[{"id":"ep_tmgres5222uv","url":"https://sharedforest.com/mcp","type":"mcp_streamable_http","factsCheckedAt":"2026-10-06T15:24:54.812Z","auth":{"observedAt":"2026-10-06T15:24:54.878Z","authRequired":false,"scheme":null,"resourceMetadata":{"url":"https://sharedforest.com/.well-known/oauth-protected-resource/mcp","resource":"https://sharedforest.com/mcp","authorizationServers":["https://sharedforest.com"],"scopesSupported":["forest:read","sponsor:write","account:read"]},"authorizationServer":{"url":"https://sharedforest.com/.well-known/oauth-authorization-server","issuer":"https://sharedforest.com","grantTypesSupported":["authorization_code","refresh_token"],"codeChallengeMethodsSupported":["S256"],"tokenEndpointAuthMethodsSupported":["client_secret_basic","client_secret_post","none"],"dynamicClientRegistration":true,"dpopSigningAlgValuesSupported":[],"clientIdMetadataDocumentSupported":false},"conformance":{"dpop":false,"rfc8414":true,"rfc9728":true,"pkceS256":true,"clientIdMetadataDocument":false,"dynamicClientRegistration":true}},"tls":{"observedAt":"2026-10-06T15:24:54.919Z","protocol":"TLSv1.3","chainValid":true,"chainError":null,"hostMatches":true,"subject":"sharedforest.com","issuer":{"commonName":"WE1","organization":"Google Trust Services"},"validFrom":"2026-09-23T17:08:20.000Z","validTo":"2026-12-22T18:08:17.000Z","daysToExpiry":73,"sanCount":3,"fingerprint256":"C1:98:9F:53:A5:F2:36:85:A5:8B:C8:76:9C:2D:5A:22:30:0E:9C:38:69:12:B0:A9:7A:94:47:68:B5:0D:E6:BF"}}]},"verification":{"claimed":false,"claimedAt":null,"proofs":[]},"provenance":{"sources":[{"source":"mcp_registry","key":"io.github.ArneFfm/shared-forest","url":"https://registry.modelcontextprotocol.io/v0/servers/io.github.ArneFfm%2Fshared-forest","firstSeenAt":"2026-09-25T20:22:06.679Z","fetchedAt":"2026-10-09T17:20:30.981Z","normalizedAt":"2026-10-09T17:20:30.981Z"}]},"firstSeenAt":"2026-09-25T20:22:06.679Z","updatedAt":"2026-10-09T23:32:25.735Z"}