Shared Forest
Server Details
Plant or sponsor trees in a shared forest that grows from its traffic. Sponsoring uses OAuth.
- Status
- Healthy
- Uptime
- 100.0% over 21 days
- Last Tested
- Transport
- Streamable HTTP ยท MCP 2025-06-18
- URL
- Repository
- ArneFfm/shared-forest-agents
- GitHub Stars
- 0
TDQS
Scored across 13 tools
Each tool targets a distinct resource or action: designs, forest summaries, stats, paginated tree lists, orders, and sponsorship. get_forest, get_forest_stats, and list_trees are related but their descriptions clearly separate summary counts from paginated detail. No two tools appear to do the same job.
Most tools use a consistent verb_noun pattern (design_tree, get_design, get_forest, list_trees, start_sponsorship), and the get_* family is especially consistent. my_orders and my_trees break the verb-first pattern slightly, but they are readable and parallel to each other.
13 tools is well within the ideal 3-15 range and each tool covers a distinct part of the forest and sponsorship lifecycle. Nothing feels redundant or unnecessary for the server's purpose.
The surface covers design creation and retrieval, forest viewing and stats, tree planting, and the sponsorship order flow from spot finding through price quote and order status. Minor gaps exist, such as no way to list all designs or cancel an order, but the core workflows do not have dead ends.
Available Tools
13 toolsdesign_treeDesign a sponsored treeInspect
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 design attempts per caller per day (including rejected or interrupted generation). Show the result to the user before you order.
| Name | Required | Description | Default |
|---|---|---|---|
| wish | Yes | What the tree should look like, 1-200 characters. No brands, logos or text. |
find_spotsFind free spotsARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| near_x | No | Optional x coordinate (0-8192) to search near. Needs near_y. | |
| near_y | No | Optional y coordinate (0-8192) to search near. Needs near_x. | |
| quantity | Yes | Number of trees, 1-100. Larger orders get a lower unit price. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint, and the description's 'Read-only' largely restates that. It adds useful integration context about passing results to start_sponsorship, but it does not describe the return shape or any positional constraints beyond the schema. This is adequate but not rich.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two compact sentences with the core behavior front-loaded and the workflow note following. Every clause contributes meaning: the read-only guarantee, the optional proximity search, and the routing to start_sponsorship.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-only query with a fully described input schema and safe annotations, the description is nearly complete. The only gap is that no output schema exists and the description does not specify the exact format of the returned spots, such as x/y coordinate pairs.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and each parameter already has a descriptive explanation, including the near_x/near_y mutual dependency. The prose adds 'N sponsored trees' and the lower unit price for larger orders, but most parameter semantics are already carried by the schema, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('suggests') and resource ('free positions for N sponsored trees'), and it clearly distinguishes the tool from start_sponsorship by explaining how its output feeds into that sibling. This makes the tool's role unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives clear workflow context: find spots first, then pass them to start_sponsorship, or omit them and let the server choose. It does not exhaustively compare against other siblings, but the alternative path is explicit enough for an agent to decide when this tool is needed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_designRead a tree designARead-onlyIdempotentInspect
Read-only. Returns one design by design_id: genome, genomeHash and expiresAt.
| Name | Required | Description | Default |
|---|---|---|---|
| design_id | Yes | Design id from design_tree, for example dsn_abc123. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish read-only, idempotent, non-destructive behavior, so the description doesn't need to repeat those. It adds value by disclosing the concrete return fields (genome, genomeHash, expiresAt), which are not present in any structured form since there is no output schema. It doesn't cover error/not-found behavior, but that's a minor gap for a simple getter.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One sentence with zero filler, front-loaded with 'Read-only' and immediately stating what is returned. Every part earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Complete for a single-parameter getter: the schema covers the ID format, annotations cover safety and idempotency, and the description covers the return payload. No output schema exists, but the description names the three return fields, so an agent has everything needed to invoke it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%: design_id is fully documented with type, pattern, and an example. The description adds no additional parameter-level meaning, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific operation ('Returns one design by design_id') with a clear resource and scope. It also lists the returned fields, making it readily distinguishable from sibling getters like get_forest and list_trees.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Clearly implies when to use it: when you have a design_id and need that specific design's genome, genomeHash, and expiresAt. It doesn't explicitly name sibling alternatives or exclusion conditions, but the context is clear and unambiguous.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_forestForest summaryBRead-onlyIdempotentInspect
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 | Required | Description | Default |
|---|---|---|---|
| bbox | No | Bounding box [minX, minY, maxX, maxY] in world coordinates. Only trees inside it are returned. | |
| limit | No | Number of newest trees to return. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered and the description's 'Read-only' adds no new information. It does add 'bounded' and 'live forest' context, implying limited, current data, but it adds no further behavioral caveats such as freshness or performance. No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single sentence that front-loads the read-only safety flag, then states the resource, the summary nature, the output categories, and the limit. No filler or redundant elaboration.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only tool with 0 required params, the description explains what the summary includes and the default/max limit, and the schema documents the bbox filter. It is slightly light on return-structure details, but acceptable for a summary tool with no output schema and rich annotations.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%: bbox and limit both have clear descriptions. The description only repeats the default/max for limit and does not add new parameter semantics; baseline 3 is appropriate because the schema carries the full burden.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description names the resource ('forest') and the operation ('Bounded summary') and lists concrete output dimensions (counts per tree type, growth stage, origin, grove levels, newest trees), so an agent can infer what the tool returns. It does not explicitly contrast it with sibling get_forest_stats, but the bounded-summary framing is a clear differentiator.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description says 'Read-only' and 'Bounded summary' but gives no explicit when-to-use or when-not-to-use guidance. Sibling tools like get_forest_stats and list_trees exist, yet the description offers no routing or exclusions, so agents must infer the appropriate context from the name and output list.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_forest_statsForest statisticsBRead-onlyIdempotentInspect
Read-only. Counts of trees, groves, total and unique visitors, and traffic by class (humans, agents, bots, trees planted today).
| Name | Required | Description | Default |
|---|---|---|---|
| fields | No | Return only these counters. Omit for all counters. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is well covered. The description reinforces this with 'Read-only' and lists the counters returned, but adds no deeper behavioral context such as freshness guarantees, performance implications, or limitations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, dense sentence with the key 'Read-only' trait front-loaded. Every phrase adds information, and the list of counters is compact and scannable without unnecessary elaboration.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only tool with zero required parameters and a fully documented schema, the description adequately conveys what data is returned. The absence of an output schema is compensated by the explicit list of counts, though subtle details like whether 'visitors' overlaps with the class breakdowns are left unspecified.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema description covers 100% of the single optional 'fields' parameter, including its enum values and the omit-for-all behavior. The description merely echoes those counter names without adding new meaning, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies the tool as returning statistical counts for forests, listing concrete metrics such as trees, groves, visitors, and traffic classes. The verb is implicit in 'Counts of...' and the resource is specific enough to distinguish it from generic get_forest, though it does not explicitly differentiate itself from sibling tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is given about when to choose this tool over alternatives like get_forest or list_trees. The 'Read-only' prefix hints that it is for observation rather than mutation, but there is no explicit context, when-to-use, or mention of situations where another sibling would be preferable.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_orderRead a sponsorship orderARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| order_id | Yes | Order id from start_sponsorship, for example ord_abc123. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover read-only, idempotent, and non-destructive hints. The description adds genuinely new behavioral context: the required auth scope, the full enumerated set of possible statuses, that tree ids are only present once fulfilled, and the recommended polling cadence. This goes well beyond the annotations and does not contradict them.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, each earning its place: safety/auth, return content, and polling guidance. The most critical fact ('Read-only') is front-loaded, and there is no redundancy with the schema or annotations.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite having no output schema, the description explains what the caller gets back (status enum plus tree ids when fulfilled). It also covers the auth precondition and the polling behavior needed for the post-payment flow. For a single-parameter, low-complexity tool, nothing essential is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with the order_id parameter already documenting its format, pattern, and source ('from start_sponsorship'). The description adds no additional parameter semantics, which is fine because the schema carries the full burden. Baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a clear verb-resource pair ('status of one of the user's orders') and specifies the exact return content. It distinguishes itself from a list tool like my_orders by emphasizing 'one of the user's orders', though it does not explicitly name the sibling alternative.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides concrete usage context: the required OAuth scopes and a polling interval ('Poll every 10 seconds or more after the user pays'). It does not explicitly state when to prefer a sibling like my_orders, but the single-order scope and post-payment polling guidance give sufficient situational direction.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_price_quoteQuote a tree sponsorshipARead-onlyIdempotentInspect
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 | Required | Description | Default |
|---|---|---|---|
| quantity | Yes | Number of trees, 1-100. Larger orders get a lower unit price. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare read-only, idempotent, and non-destructive behavior. The description adds meaningful context beyond that: the 12-month sponsorship term, the returned price components, and the workflow note about calling it before stating a price.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short, purposeful sentences with the key behavioral fact front-loaded. Every sentence earns its place: what it returns, the fixed term, and when to call it.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter, read-only tool with robust annotations, this is complete. There is no output schema, but the description names the return components and currency unit, and the workflow note gives the agent enough to select and invoke the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema fully documents the single quantity parameter, including range and volume discounts, so the baseline is 3. The description only echoes 'N trees' and adds the 12-month context, without providing new parameter-level details that the schema lacks.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names the exact deliverable: a final price quote for sponsoring N trees for 12 months, including unit price, total in euro cents, and discount. This is a specific verb+resource definition that clearly distinguishes it from siblings like get_design, get_forest, and get_order.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'Call it before you tell the user a price' gives explicit, actionable guidance on when to invoke this tool. It does not name alternatives or exclusions, but no other sibling tool plausibly competes for this quoting purpose, so the context is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_treesList treesARead-onlyIdempotentInspect
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 | Required | Description | Default |
|---|---|---|---|
| bbox | No | Bounding box [minX, minY, maxX, maxY] in world coordinates. Only trees inside it are returned. | |
| limit | Yes | Trees per page, for example 100. | |
| cursor | No | Opaque cursor from nextCursor of the previous page. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide readOnlyHint, idempotentHint, and destructiveHint. The description adds useful behavior beyond those: it returns one page, uses cursor pagination, and instructs the caller to loop until nextCursor is null. This exceeds the annotation baseline, though it does not detail error cases or edge behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the read-only nature and pagination model, followed by a concrete usage instruction. Every phrase earns its place and there is no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a three-parameter read-only list tool, the definition plus schema is largely sufficient for an agent to invoke it correctly. The absence of an output schema makes the description's pagination-loop guidance valuable, though it could have been slightly more explicit about what a page contains or how it relates to sibling tree-related tools.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline baseline is 3, and the schema already documents bbox, limit, and cursor well. The description adds value by explaining the cursor lifecycle ('Pass nextCursor as cursor until it is null'), which is not fully captured in the schema's standalone description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb-resource pair ('list trees'), and clarifies it returns one page of trees with cursor pagination. It does not explicitly name sibling alternatives, so it stops short of full differentiation, though 'same data as GET /api/forest?limit=' hints at its relationship to get_forest.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives explicit operational guidance: use it for read-only paginated listing and pass nextCursor as cursor until null. It does not state when not to use it or explicitly compare against siblings, so it lacks full alternative routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
my_ordersMy sponsorship ordersARead-onlyIdempotentInspect
Read-only. Needs OAuth scope account:read. The signed-in user's sponsorship orders, newest first, with status, total and tree ids.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Number of orders, 1-50. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover read-only, idempotent, and non-destructive behavior. The description adds value beyond that by disclosing the OAuth scope requirement, the newest-first ordering, and the returned fields. There is no contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single front-loaded sentence: it leads with read-only and OAuth scope, then states the data scope, ordering, and output fields. Every clause earns its place with no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple list tool with one optional limit parameter and no output schema, the description provides the essential details: auth scope, resource scope, ordering, and returned fields. Remaining details like bounds are already present in the schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% for the single optional 'limit' parameter, so the schema does the heavy lifting. The tool description adds no further parameter-level meaning, matching the baseline of 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies the resource and output: 'the signed-in user's sponsorship orders, newest first, with status, total and tree ids.' It lacks an explicit action verb like 'list' or 'get,' but the plural 'orders' and user scoping distinguish it from siblings like get_order.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives clear when-to-use context: the current signed-in user's sponsorship orders, and notes the required OAuth scope. It does not explicitly mention alternatives or exclusions, so it falls short of a 5, but the context is unambiguous.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
my_treesMy sponsored treesARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Number of trees, 1-500. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover read-only, idempotent, and non-destructive behavior. The description adds meaningful context beyond annotations by disclosing the OAuth scope requirement and the 'fulfilled orders' constraint, which are not present in the structured metadata. It does not contradict the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is brief and front-loaded with the most critical information: 'Read-only' and the OAuth scope requirement. It avoids fluff and packs three useful pieces of info (read-only, auth, resource scope) into a single concise sentence, earning a solid score without being overly terse.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple, single-optional-parameter read tool with no output schema, the description covers the essential context: the exact resource scope, auth requirement, and the presence of links in the response. It lacks details like pagination or sorting, but those are not critical for a tool this simple, and annotations cover safety.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% (the only parameter, limit, is fully described). The description does not add any additional param-level semantics, so the baseline of 3 applies. No compensation needed.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies the resource ('trees of the signed-in user's fulfilled orders') and the access mode ('Read-only'), and the 'with a link to each tree in the forest' adds specificity. It is distinguishable from siblings like list_trees (which likely lists all trees) by scoping to the signed-in user's sponsored trees, though it does not explicitly name the alternative.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for a signed-in user's own sponsored trees and explicitly states the OAuth scope requirement, which serves as a precondition. However, it does not explicitly contrast with sibling tools (e.g., list_trees or get_forest) or state when not to use it, leaving the selection decision largely to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
plant_treePlant a treeAIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| idempotency_key | No | Optional retry key, for example a UUID. A retry with the same key within 24 hours returns the first visitId and plants nothing new. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate idempotentHint and destructiveHint, and the description adds valuable behavior beyond them: the daily per-visitor limit, the repeat-call effect, the traffic accounting, and the user-consent requirement. These details meaningfully help the agent anticipate side effects without contradicting annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, each earning its place: the core action, the limits and side effects, and a mandatory user-consent warning. The most important constraint is front-loaded after the action, and there is no fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple one-optional-parameter tool with no output schema, the description covers the core domain rule, repeat behavior, traffic impact, and consent requirement. It could additionally mention the idempotency_key retry semantics, but the schema already documents that thoroughly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the idempotency_key parameter is fully documented in the input schema. The description adds surrounding behavior about repeats and growth energy, but does not directly enrich the parameter's meaning, so the baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: 'Plant one tree in the Shared Forest for the caller.' It is clear and distinct from read-only siblings like get_forest or list_trees, but it does not explicitly name a differentiating sibling tool, so it misses the 5-level specificity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives clear usage context: one tree per visitor per day, repeats only add growth energy, the visit counts as agent traffic, and the agent must ask the user before calling. It does not mention when to prefer an alternative tool, but the exclusionary guidance is strong enough for a 4.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
start_sponsorshipStart a tree sponsorshipAIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| link | No | Optional https link. It goes live after manual review. | |
| No | Optional email for the confirmation and the invoice. Default: the email of the signed-in account. | ||
| spots | No | Optional positions from find_spots, one per tree. Omit and the server picks free spots. | |
| quantity | Yes | Number of trees, 1-100. Larger orders get a lower unit price. | |
| link_text | No | Optional public label for the link. Requires link; approved with it. | |
| design_ids | Yes | One design_id for all trees, or one per tree. | |
| display_name | Yes | Name shown on the trees, 1-32 characters, labelled Sponsored. | |
| idempotency_key | Yes | Retry key, for example a UUID. A retry with the same key returns the same order. | |
| short_description | No | Optional short public description. Requires link; approved with it. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations, the description discloses critical behavior: the order is unpaid, expires after 30 minutes, returns confirm_url, and the user must accept terms and pay there. It also warns that the total must fit the user's spending limit and instructs asking before calling. No contradiction with readOnlyHint=false, idempotentHint=true, or destructiveHint=false.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is longer than one sentence but every sentence earns its place: auth, core behavior, cost, limit, expiry, return flow, and user confirmation. It is front-loaded with the most important constraint (sponsor:write scope) and ends with the action instruction for the agent.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with nine parameters, no output schema, and a user-interaction side effect, the description is complete: it covers required auth, the unpaid nature, the spending limit, expiry, the confirm_url return value, and the expected user flow. An agent has enough to invoke it correctly and handle the result.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Input schema coverage is 100%, so the baseline is 3. The description adds meaningful context beyond the schema by explaining the spending-limit constraint on total and by framing spots as being held by the order. It does not need to restate every field because the schema already documents them.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: it 'Creates an unpaid order for the signed-in user and holds the spots', clearly defining the tool as starting a sponsorship without charging. It is distinguishable from siblings like get_price_quote or plant_tree because it emphasizes the unpaid order and user-facing confirmation flow.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives explicit invocation guidance: requires the sponsor:write OAuth scope, must fit the user's spending limit, and 'Ask the user before you call it and confirm name and total.' It does not explicitly name alternative tools or when-not-to-use conditions, so it stops short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
1 tool update
- Changed
start_sponsorship2 fields changed- added
Input schema / properties / link_textAdded value: +{ + "description": "Optional public label for the link. Requires link; approved with it.", + "maxLength": 50, + "type": "string" +} - added
Input schema / properties / short_descriptionAdded value: +{ + "description": "Optional short public description. Requires link; approved with it.", + "maxLength": 160, + "type": "string" +}
3 tool updates
- Added
my_orders - Added
my_trees - Changed
start_sponsorship2 fields changed- changed
Input schema / properties / email / descriptionPrevious value: -"The user's email for the confirmation and the invoice."New value: +"Optional email for the confirmation and the invoice. Default: the email of the signed-in account." - changed
Input schema / requiredPrevious value: -[ - "quantity", - "design_ids", - "display_name", - "email", - "idempotency_key" -]New value: +[ + "quantity", + "design_ids", + "display_name", + "idempotency_key" +]
11 tool updates
- First observed
design_tree - First observed
explain_shared_forest - First observed
find_spots - First observed
get_design - First observed
get_forest - First observed
get_forest_stats - First observed
get_order - First observed
get_price_quote - First observed
list_trees - First observed
plant_tree - First observed
start_sponsorship
Related MCP Connectors
Create, edit and analyse short links and QR codes. OAuth sign-in works on the free plan.
Personal finance tracker: accounts, transactions, budgets, investments and analytics over OAuth.
- xhostOAuthcom.xhostd
Agent-first hosting: create apps, commit code, deploy, get HTTPS URLs. OAuth sign-in, no tokens.
Carbon footprints for products, carts, receipts and files โ with one-step offsetting.
Related MCP Servers
- AlicenseNot gradedqualityCmaintenanceEnables AI assistants to interact with the TreeBeam financial management and accounting platform. Users can list organizations and projects using secure OAuth 2.0 authentication integrated directly into their AI conversation.7 npmApache 2.0
- AlicenseNot gradedqualityCmaintenanceEnables browsing Global Forest Watch's catalogue and running read-only SQL queries against dataset versions, covering tree cover loss, deforestation alerts, fire alerts, carbon flux, and more.16 npmMIT
- AlicenseNot gradedqualityCmaintenanceA permissioned memory tree for you and your AI โ served over MCP.26 npm1MIT
- AlicenseNot gradedqualityCmaintenanceBridges AI models with 24 years of Global Forest Watch data across 165+ countries, enabling natural language queries for deforestation and carbon emission insights.Apache 2.0
Glama MCP Gateway
Add one secure layer between your agents and this server.