Geo MCP Server
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Geo MCP ServerCreate a knowledge graph for my company with name and website properties."
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Geo MCP Server
MCP server providing full access to the Geo protocol SDK for knowledge graph operations. Build, query, and publish structured knowledge to the Geo decentralized knowledge network using the GRC-20 standard.
Features
38 tools covering the full Geo SDK surface: read, write, and govern
GraphQL read layer - search entities, browse spaces, query proposals and votes
DAO governance - vote on proposals, propose editor/subspace changes
Session-based op accumulation - build complex edits across multiple tool calls, then publish as a single atomic transaction
Publish-to-propose continuity -
propose_dao_editcan reuse the latest published ops for seamlesspublish_edit -> propose_dao_editflowsName-based resolution - reference properties, types, and entities by name instead of IDs
Gas-sponsored smart accounts - no testnet ETH needed (uses Pimlico paymaster)
Secure local file ingestion - load local JSON/markdown/text files from allowlisted paths
Related MCP server: Gitopia MCP Server
Installation
npm install
npm run buildConfiguration
Add to your MCP client config (e.g. Claude Code .mcp.json):
{
"mcpServers": {
"geo": {
"command": "node",
"args": ["/path/to/geo-mcp-server/dist/index.js"],
"env": {
"GEO_PRIVATE_KEY": "0x...",
"GEO_MCP_ALLOWED_PATHS": "/Users/me/Documents/research,/tmp"
}
}
}
}The GEO_PRIVATE_KEY environment variable is optional at startup - you can also configure the wallet at runtime using the configure_wallet tool.
GEO_MCP_ALLOWED_PATHS is optional and lets you allow additional directories for read_local_file and create_knowledge_graph_from_file. By default, only the current working directory is allowed.
GEO_GRAPHQL_URL optionally overrides the GraphQL API endpoint (default: https://testnet-api.geobrowser.io/graphql).
Quick Start
Typical workflow:
Configure wallet -
configure_walletwith your private keySetup space -
setup_spacecreates or finds your personal spaceBuild knowledge - use any graph tools to create properties, types, entities, and relations
Publish -
publish_editsends all accumulated ops on-chain in one transaction
Example: Create a Knowledge Graph in One Call
Use create_knowledge_graph for the best UX - it builds schema, entities, and relations all at once with name-based references:
create_knowledge_graph({
schema: {
properties: [
{ name: "Founded", dataType: "DATE" },
{ name: "Website", dataType: "TEXT" }
],
types: [
{ name: "Company", propertyNames: ["Founded", "Website"] }
]
},
entities: [
{
name: "Geo",
typeName: "Company",
values: [
{ propertyName: "Founded", type: "date", value: "2024-01-01" },
{ propertyName: "Website", type: "text", value: "https://geo.xyz" }
]
}
]
})Example: Publish a Local Graph Payload File
When your extraction pipeline writes a JSON payload locally, use one call to ingest it:
create_knowledge_graph_from_file({
filePath: "./outputs/claimify-paper-graph.json"
})Expected JSON shape inside the file:
{ "schema": { ... }, "entities": [...], "relations": [...] }or
{ "payload": { "schema": { ... }, "entities": [...], "relations": [...] } }
Tools Reference
Graph Operations (8 tools)
Tool | Description |
| Create a property definition with a data type |
| Create a type (schema) grouping properties |
| Create an entity with types, values, and relations |
| Create a relation between two entities |
| Create an image entity from a URL |
| Update an existing entity's name, values, or properties |
| Delete an entity |
| Delete a relation |
Space & Publishing (6 tools)
Tool | Description |
| Set up wallet with a private key for publishing |
| Create or find your personal space |
| Publish all accumulated ops as one on-chain edit |
| Propose accumulated ops as a DAO governance edit |
| View current session state (ops count, artifacts, wallet) |
| Discard all accumulated ops |
Advanced UX (7 tools)
Tool | Description |
| Generate one or more unique Geo IDs (dashless UUID v4) |
| Create properties + types in one call with name-based references |
| Build complete graph (schema + entities + relations) in one call |
| Build complete graph from a local JSON file payload |
| Read local text/json/binary (base64) from allowlisted paths |
| Add multiple property values to an existing entity |
| Get well-known Geo system IDs (types, properties, data types) |
Read & Query (10 tools)
Tool | Description |
| Full-text search for entities with optional space/type filters |
| Get full entity details (values, relations, backlinks, types) |
| Browse entities with filters for space, type, and name |
| Get space details with editor/member counts and recent proposals |
| Browse spaces with optional type filter (PERSONAL/DAO) |
| Get type definition with properties |
| List types in a specific space |
| List proposals for a space (newest first) |
| Get full proposal details with vote breakdown |
| List votes for a specific proposal |
DAO Governance (5 tools)
Tool | Description |
| Cast YES/NO/ABSTAIN vote on a DAO proposal |
| Propose adding a new editor to a DAO space |
| Propose removing an editor from a DAO space |
| Propose accepting a subspace into a DAO space |
| Propose removing a subspace from a DAO space |
Supported Data Types
TEXT, INTEGER, FLOAT, BOOLEAN, DATE, TIME, DATETIME, SCHEDULE, POINT, DECIMAL, BYTES, EMBEDDING, RELATION
Development
npm run dev # Run with tsx (hot reload)
npm run build # Compile TypeScript
npm run typecheck # Type check without emitting
npm start # Run compiled version
npm test # Run unit tests
npm run test:watch # Run tests in watch modeNetwork
Currently operates on the Geo testnet.
License
MIT
Available Tools
44 toolsadd_values_to_entityA
Add multiple property values to an existing entity in one call.
| Name | Required | Description | Default |
|---|---|---|---|
| values | Yes | Values to add | |
| entityId | Yes | ID of the entity to update |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The readOnlyHint=false annotation already indicates this is a mutating operation, so the description's main added value is clarifying that multiple values can be added in a single call and that the target entity must already exist. It does not disclose whether existing property values are replaced, merged, or appended, nor does it describe error behavior or side effects, leaving some behavioral ambiguity.
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, focused sentence that starts with the action verb and avoids any filler. Every word earns its place, and the key batching/scoping information is front-loaded.
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?
Given the schema fully describes both parameters and the nested value structure, the description is largely sufficient for an agent to invoke the tool correctly. It adds necessary context about the entity already existing and the batching nature of the call. The lack of output schema is not a major gap, though additional detail about merge/overwrite semantics would improve completeness.
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 schema already documents entityId and values, including the required property/type/value structure. The description adds little beyond 'multiple' and 'existing entity,' which provides minor context but does not materially deepen understanding of the parameters beyond what the schema already states.
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 ('Add') with a clear resource ('multiple property values' to an 'existing entity') and highlights the batching capability ('in one call'). This clearly distinguishes it from sibling tools like create_entity or delete_entity, and its meaning does not rely on the tool name alone.
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 phrase 'to an existing entity' establishes the context that this tool is for adding values to already-created entities, implying it is not for entity creation. It also signals a batch usage pattern with 'in one call,' giving an agent a clear sense of when to use it, though it does not explicitly name alternatives or list when-not-to-use conditions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
build_schemaA
Build a complete schema (properties + types) in one call. Creates all properties first, then creates types that reference those properties by name.
| Name | Required | Description | Default |
|---|---|---|---|
| types | Yes | Types to create | |
| properties | Yes | Properties to create |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses an important behavioral detail beyond the readOnlyHint annotation: it creates all properties first, then creates types that reference those properties by name. This reveals the execution order and dependency structure. It does not mention failure behavior or rollback, but the key orchestration semantics are exposed.
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 two short sentences with no filler. The first sentence front-loads the core purpose and the one-call distinction, while the second sentence explains the essential ordering behavior. Every word 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?
For a tool with two required nested arrays and no output schema, the description covers the core invocation logic well: what is built, in what order, and how the parts relate. It does not describe return values or failure semantics, but an agent has enough information to construct a valid call.
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 coverage is 100%, so the baseline is 3. The description adds value by explaining the relationship between the 'properties' and 'types' arrays: properties are created first and types reference them by name. This clarifies how the 'propertyNames' field relates to the 'properties' array, which is not obvious from the schema alone.
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 action ('Build a complete schema'), identifies the resource ('properties + types'), and emphasizes the one-call batch behavior. This clearly distinguishes it from sibling tools like create_property and create_type, which operate on individual components.
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 phrase 'in one call' provides clear context that this tool is for building a full schema atomically in a single operation, contrasting with incremental creation via siblings. It does not explicitly name the alternatives or state when not to use them, but the intended usage is reasonably clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
clear_sessionCRead-only
Clear all accumulated ops
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description contradicts the annotations: it says 'Clear... ops', which implies a mutating/destructive action, while readOnlyHint is true. The description also fails to disclose side effects, scope, or post-conditions, which is especially problematic for a 'clear' operation.
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 short sentence with no filler. It is front-loaded and every word contributes to meaning, making it appropriately concise for such a simple tool.
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 zero-parameter tool the description is minimal, but it leaves unclear what 'ops' refers to, whether it clears only the current session, and what the observable result is. More importantly, the readOnlyHint contradiction makes the actual behavior uncertain. Missing output schema is a lesser concern here.
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 tool has zero parameters and the schema properties are empty, so there is nothing to document at the parameter level. The description adds meaningful context by specifying that all accumulated ops are cleared.
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 ('Clear') and resource ('all accumulated ops'), so an agent can understand that the tool resets accumulated operations. It is somewhat terse but not a tautology, and the tool name reinforces the session-scoped meaning.
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 provided about when to use this tool versus siblings such as get_session_status or delete_relation. There are no stated conditions, prerequisites, or exclusions, so the agent must infer usage from the tool name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
configure_walletAIdempotent
Configure wallet to enable write operations. Use walletMode=APPROVAL with walletAddress for transaction-return mode (no private key needed). Without any config, the server runs in read-only mode.
| Name | Required | Description | Default |
|---|---|---|---|
| privateKey | No | Hex private key with 0x prefix (optional; if omitted uses GEO_PRIVATE_KEY secret) | |
| walletMode | No | Wallet mode: PRIVATE_KEY (default, auto-signs) or APPROVAL (returns unsigned tx data) | |
| walletAddress | No | Wallet address for APPROVAL mode (no private key needed) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the idempotentHint annotation, the description adds useful behavioral context: the server runs read-only without configuration, APPROVAL mode requires no private key, and PRIVATE_KEY auto-signs. These details help an agent predict side effects and prerequisites. It does not discuss persistence or confirmation behavior, but the core behavioral profile is disclosed.
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 with no filler. The main purpose is front-loaded, the mode guidance is directly actionable, and the read-only default adds important context without redundancy.
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 configuration tool with no required parameters and complete schema coverage, the description covers the essential workflow: when to configure, how each mode behaves, and what happens if not configured. Minor gaps around return value or whether configuration replaces existing settings are not critical given the idempotentHint and low complexity.
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 input schema already fully documents all three parameters, so the baseline is 3. The description adds value by tying parameters together into mode-specific usage patterns, especially the APPROVAL + walletAddress combination for transaction-return mode. This goes beyond enumerating fields.
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 clear verb-resource pair: 'Configure wallet to enable write operations.' It distinguishes the tool's role from siblings by explicitly stating the two wallet modes and the default read-only server behavior.
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 concrete guidance: use APPROVAL mode with walletAddress for transaction-return mode, and explains that no configuration means read-only mode. It stops short of explicitly saying when to choose PRIVATE_KEY vs APPROVAL from a workflow perspective, but the available guidance is clear and actionable.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_entityC
Create an entity instance in the knowledge graph
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Name of the entity | |
| cover | No | Image entity ID for cover | |
| types | No | Array of type IDs to assign | |
| values | No | Property values to set | |
| relations | No | Relations keyed by relation property ID | |
| description | No | Description of the entity |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Apart from readOnlyHint=false, there are no behavioral annotations, and the description does not disclose side effects, permission requirements, ID generation, uniqueness behavior, or what happens on duplicate names. For a mutation tool, the description alone carries the burden of behavioral disclosure and does not satisfy it.
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, front-loaded sentence contains no filler and immediately communicates the operation. It is appropriately sized for the straightforward purpose it states.
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?
The tool has six parameters, nested value objects, and no output schema, yet the description only states the action. It does not mention returned entity/ID, required type setup, or how relation/values structures behave, leaving too much context for the agent to infer.
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 every parameter is already described in the input schema; the description adds no additional parameter semantics. Baseline 3 applies because the schema carries the parameter documentation 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?
The description states a specific action ('Create') and object ('an entity instance in the knowledge graph'), making the tool's core purpose immediately clear. It distinguishes from nearby siblings such as create_type, create_property, create_relation, and create_image by naming the entity instance resource, though it does not explicitly name those alternatives.
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 for when to choose this tool over alternatives such as update_entity, add_values_to_entity, or create_type. The description only states what the tool does, not when it should be invoked or whether prerequisites like existing type/property/relation IDs are required.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_imageC
Create an image entity from a URL
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | URL of the image to upload | |
| name | No | Name for the image entity | |
| description | No | Description of the image |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description only states that an image entity is created from a URL. It does not disclose whether the URL is fetched at creation time, whether the image is copied/stored, idempotency, or required permissions. The readOnlyHint=false annotation signals mutation, and the description agrees, but it adds little behavioral context beyond that.
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, compact sentence with no filler or redundant content. The core action, resource, and source are front-loaded in an easily parseable form.
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 mutation tool with no output schema and minimal annotations, the description is under-specified. It omits what the agent should expect after invocation, how the URL is processed, and how this specialized creation differs from general entity creation. An agent could call it correctly, but it lacks contextual safeguards or next-step information.
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 input schema already describes all three parameters with 100% coverage, so a baseline of 3 is appropriate. The description adds that the source is a URL, which slightly reinforces the url parameter's purpose, but it does not explain how name or description are used.
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 and resource: 'Create an image entity from a URL.' This clearly identifies the operation and its input source. It does not explicitly contrast with sibling create_* tools like create_entity, but the 'image entity' resource is distinct enough to avoid major ambiguity.
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 provided about when to use this tool versus alternatives such as create_entity or create_property. There are no conditions, exclusions, or precedents described. An agent must infer usage solely from the tool name and one-line description.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_knowledge_graphA
Create a complete knowledge graph in one call: schema (properties + types), entities with values, and relations between entities. All name-based references are resolved automatically.
| Name | Required | Description | Default |
|---|---|---|---|
| schema | Yes | ||
| entities | No | Entities to create | |
| relations | No | Relations between entities |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations provide readOnlyHint=false, indicating a write operation. The description adds one useful behavioral trait: 'All name-based references are resolved automatically.' However, it does not disclose side effects like overwrite behavior, failure semantics, or response/return information, which are material for a mutation tool.
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 with zero waste: the action is front-loaded and the key behavioral note about automatic name resolution is included. Every phrase contributes meaningful information.
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 nested objects and no output schema, the description gives a solid high-level orientation but omits operational specifics like behavior on existing data, return value, and relationship to the file-based sibling create_knowledge_graph_from_file. The rich schema helps but does not fully cover these gaps.
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 67%, and the input schema already documents nested parameters in detail (e.g., typeName, propertyName, dataType). The description only summarizes the three top-level parameters by name and component, adding minimal semantic value beyond what the schema provides, and does not compensate for the undocumented 33%.
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: 'Create a complete knowledge graph in one call,' and enumerates exactly what is included (schema, entities, relations). It clearly differentiates from piecemeal sibling tools like create_entity and create_relation by emphasizing the one-call atomic scope.
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 phrase 'in one call' gives clear context: use this when creating a full graph atomically rather than incrementally. It does not explicitly name alternatives or when-not-to-use scenarios, such as preferring create_knowledge_graph_from_file for file-based imports, 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.
create_knowledge_graph_from_fileA
Read a local JSON file and create a complete knowledge graph in one call. Accepts either the raw create_knowledge_graph payload or one nested under payload/knowledgeGraph.
| Name | Required | Description | Default |
|---|---|---|---|
| filePath | Yes | Path to a JSON file with graph payload | |
| maxBytes | No | Maximum bytes to read from file (default 1000000) | |
| validateOnly | No | If true, validates and summarizes payload without creating ops |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The single annotation (readOnlyHint: false) tells the agent this mutates, and the description aligns with it—no contradiction. The description adds some behavioral context beyond the annotation: 'complete' and 'in one call' imply a batch creation of many ops at once, and the schema's validateOnly parameter clarifies a no-op validation path. However, it does not disclose return format, error handling for malformed files, or whether existing data gets overwritten.
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, zero waste. The first sentence front-loads the core action and value proposition; the second delivers the payload-format nuance that would otherwise be a failure point. Every sentence 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?
The input side is well covered: file-based input, payload nesting, and validateOnly behavior are all addressed. But with no output schema and a mutating operation, the description omits what the call returns (e.g., created graph summary, ops list, validation report) and gives no sense of scope/destructive risk. An agent invoking this blindly would not know what success looks like.
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 is 3. The description adds genuine value beyond the schema by specifying the accepted payload shapes: 'either the raw create_knowledge_graph payload or one nested under payload/knowledgeGraph'—a critical detail not present in filePath's schema description ('Path to a JSON file with graph payload'). This materially reduces the chance of an agent formatting the file incorrectly.
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 composite action—'Read a local JSON file and create a complete knowledge graph in one call'—with a clear verb and resource. It distinguishes itself from siblings like read_local_file (which only reads) and create_knowledge_graph (which presumably takes direct input) by emphasizing the file-based, batch, single-call nature and the payload nesting flexibility.
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?
Usage context is implied: an agent can infer this is the tool to use when a knowledge graph payload already exists in a local JSON file. However, the description never explicitly names alternatives (e.g., create_knowledge_graph for inline payloads, read_local_file for just reading) or states when not to use this tool, so routing between siblings is left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_propertyC
Create a property definition in the knowledge graph
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Name of the property | |
| dataType | Yes | Data type for the property | |
| description | No | Description of the property |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description only says 'create', which is consistent with readOnlyHint=false, but it discloses nothing about side effects, uniqueness constraints, whether the property is scoped to a specific knowledge graph, or what happens on conflict. With no output schema and minimal annotations, the description carries a heavier burden than it meets.
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 clear, front-loaded sentence with no wasted words. It is concise, though slightly terse given the number of sibling tools and the absence of behavioral context.
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?
Given no output schema, minimal annotations, and many closely related creation tools, the description is not complete enough for an agent to fully understand expected return values, scoping, or failure behavior. The schema covers parameters, but the tool-level context is insufficiently specified.
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 input schema already documents all three parameters and the enum values for dataType. The description adds no additional parameter-level meaning, but the baseline of 3 applies because the schema does the necessary explanatory work.
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 action ('Create') and the resource ('a property definition in the knowledge graph'), making the basic purpose obvious. It is distinguishable from sibling tools like create_type and create_entity by naming 'property definition', though it does not explicitly explain how a property definition differs from those alternatives.
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?
There is no guidance on when to use this tool versus the many sibling creation tools such as create_type, create_entity, or create_relation. The wording implies a use case but does not state conditions, prerequisites, or exclusions, leaving the agent to infer selection criteria.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_relationB
Create a relation between two entities
| Name | Required | Description | Default |
|---|---|---|---|
| type | Yes | Relation type entity ID | |
| position | No | Position string for ordering | |
| toEntity | Yes | Target entity ID | |
| fromEntity | Yes | Source entity ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already indicate readOnlyHint=false, so the write behavior is known. The description adds no additional behavioral context such as side effects, idempotency, uniqueness constraints, permissions, or what happens when an invalid type or entity ID is supplied.
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, efficient sentence with no filler. It is concise and easy to parse, though it offers no structured guidance about parameters or behavior beyond the bare statement of purpose.
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 four-parameter create operation, the schema covers the parameters well, and the description identifies the core purpose. However, there is no mention of the operation's return value, error behavior, or prerequisites, and the description does not clarify how the relation creation fits into the broader entity model.
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 each parameter already has a clear description. The tool description adds only the general notion of 'two entities', which maps to fromEntity and toEntity, but provides no extra meaning beyond what the schema already conveys.
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 a specific action ('Create') and resource ('a relation') with a meaningful qualifier ('between two entities'). It distinguishes the tool from entity/property/type creation, but does not explicitly differentiate it from sibling tools such as delete_relation or submit_signed_transaction.
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 use case is implied: an agent should call this when it needs to create a relation between two entities. However, there is no explicit guidance about when not to use it, no mention of alternatives, and no conditions such as requiring the entities to already exist or requiring a valid relation type.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_research_ontology_paper_and_claimsA
Create a Paper entity and Claim entities using the GeoBrowser "Research ontology" (Paper/Claim/Person/Topic/Project). This path is designed for Knowledgebook/GeoBrowser UIs that expect claims to be typed as the canonical Claim type.
| Name | Required | Description | Default |
|---|---|---|---|
| paper | Yes | Paper metadata (Paper title stored as entity.name) | |
| claims | Yes | Atomic claims to publish (Claim text stored as entity.name) | |
| createTopics | No | If true, creates Topic entities for any referenced topics (default true) | |
| paperDescription | No | Optional override for the paper description | |
| linkClaimsToPaper | No | If true, links claim -> paper via Claim.Sources (default true) | |
| linkPaperToTopics | No | If true, links paper -> topics via Paper.Related topics (default true) | |
| linkClaimsToTopics | No | If true, links claim -> topics via Claim.Related topics (default true) | |
| claimDescriptionPrefix | No | Optional prefix to include in each claim description | |
| defaultPublishedInName | No | Fallback Project name for the publisher if paper.publishedIn is omitted (default: "arXiv") |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With only readOnlyHint=false in annotations, the description carries the burden and does well: it discloses creation of Paper/Claim/Person/Topic/Project entities, explains that claim text is stored both as entity.name and in description, and references configurable linking behavior through parameters. It doesn't cover return values or failure modes, but provides solid transparency for a create tool.
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 two sentences, front-loaded with the core action and followed by the UI-specific purpose. It is concise and well-ordered, though it could be even tighter or include a quick example.
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?
Given 9 parameters, nested objects, and no output schema, the description plus schema covers the tool's purpose, intended context, and parameter mappings well. A minor gap is that no return value is described, which is notable given the absence of an output schema, but the invocation details are complete.
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 coverage is 100% with rich parameter descriptions, so the baseline is 3. The description adds semantic value by clarifying the ontology types (Paper/Claim/Person/Topic/Project) and the canonical Claim typing, which helps agents understand how the paper and claims parameters map to entities.
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 action ('Create a Paper entity and Claim entities') on a defined resource (GeoBrowser Research ontology), and distinguishes itself from the sibling create_research_paper_and_claims by noting this path is for Knowledgebook/GeoBrowser UIs expecting the canonical Claim type.
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 explicitly gives the intended usage context ('designed for Knowledgebook/GeoBrowser UIs that expect claims to be typed as the canonical Claim type'), which tells an agent when to select this tool. It does not name the alternative sibling directly, but the contrast with create_research_paper_and_claims is implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_research_paper_and_claimsA
Create a Research Paper entity and multiple Research Claim entities using the canonical Geo research schema. Claim entities are always multi-typed with the canonical GeoBrowser Claim type so they show up in standard Claim views.
| Name | Required | Description | Default |
|---|---|---|---|
| paper | Yes | Paper metadata | |
| claims | Yes | Claims extracted from the paper | |
| paperName | No | Optional override for the paper entity name (defaults to "Paper: <title> (arXiv:<id>)") | |
| claimNamePrefix | No | Prefix for claim entity names (default "Claim: ") | |
| paperDescription | No | Optional override for paper description | |
| canonicalClaimTypeId | No | Override canonical Claim type ID (default env GEO_CANONICAL_CLAIM_TYPE_ID or built-in) | |
| createExtractedFromRelations | No | If true, creates Extracted From relations from each claim to the paper (default true) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only mark readOnlyHint=false, so the description carries most of the behavioral burden and it adds real value: it creates two kinds of entities and guarantees claims are multi-typed with the canonical GeoBrowser Claim type, with the consequence of standard Claim view visibility. It does not describe return values or whether Extracted From relations are created by default, though that default lives in the schema.
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, with the core create behavior front-loaded and every clause earning its place. There is no wasted wording, restatement of the name, or redundant schema information.
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?
This is a high-complexity tool with nested objects, up to 200 claims, and no output schema, yet the description is quite short. The schema carries field and default details well, but the description does not state success behavior or return value, nor the default Extracted From relation side effect, leaving part of the operational picture implicit.
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 description does not discuss individual parameters, but schema description coverage is 100%, so the baseline applies. The only added semantic is the rationale for the canonical Claim type behavior, which is helpful but not necessary to fill a schema gap.
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 the action ('Create') and the exact resource pair ('Research Paper entity' + 'multiple Research Claim entities'), and anchors it to the 'canonical Geo research schema'. The second sentence adds a distinguishing invariant—claims are always multi-typed with the GeoBrowser Claim type—so it is clearly not the generic create_entity or an ontology-specific sibling.
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?
Describes what the operation does but never explicitly says when to prefer it over alternatives like create_entity, create_relation, or create_research_ontology_paper_and_claims. The only implicit usage signal is the claim that claims will appear in standard Claim views, which helps but does not give explicit routing or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_typeA
Create a type (schema) that groups properties
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Name of the type | |
| properties | No | Array of property IDs to include | |
| description | No | Description of the type |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations only indicate readOnlyHint=false, which the description does not contradict. However, the description adds no behavioral detail beyond saying it creates a type; it does not disclose uniqueness constraints, idempotency, side effects, or return 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?
The description is one short sentence with no filler or redundant wording. The primary action and resource are front-loaded, making it easy for an agent to quickly identify what this tool does.
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 three-parameter tool, the schema plus description are sufficient to make a correct call. Still, there is no output schema and no mention of what the created type returns or how it fits into the broader workflow, leaving a minor completeness gap.
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 input schema already documents all three parameters. The description's phrase 'groups properties' adds minimal semantic context, but with full schema coverage 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 uses a specific verb ('Create') and names the resource ('type (schema)'), and clarifies what the type does ('groups properties'). This distinguishes it from sibling tools like create_property, create_entity, and create_relation without requiring an agent to compare schemas.
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?
There is no guidance on when to use this tool versus alternatives such as build_schema, create_knowledge_graph, or create_property. It also does not mention prerequisites, such as whether the property IDs must already exist before creating the type.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_entityCDestructive
Delete an entity from the knowledge graph
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ID of the entity to delete |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
destructiveHint=true already communicates the destructive nature, and the description adds zero behavioral context beyond that—no mention of whether connected relations are cascaded, whether deletion is irreversible, or how missing IDs are handled. The annotation carries the entire transparency burden; the description contributes nothing.
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 seven-word sentence with the verb front-loaded; there is zero redundant wording. It is admirably tight, though it borders on under-specification rather than deliberate completeness.
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 one-parameter tool with no output schema and a destructive hint annotation, the essential information is present. However, the absence of cascade/irreversibility context and the ambiguity against delete_workspace_entity leave clear gaps for a destructive graph mutation.
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 single id parameter is fully documented as 'ID of the entity to delete'—so the baseline of 3 applies. The description itself adds no parameter-level detail, but none is needed given the schema is adequate.
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 specific action ('Delete') and a concrete resource ('an entity from the knowledge graph'), making the core function immediately identifiable. It distinguishes itself from delete_relation by resource type, though it never explicitly differentiates itself from delete_workspace_entity.
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 no guidance on when to prefer this tool over siblings like delete_relation or delete_workspace_entity, nor does it note prerequisites such as confirming the entity exists before deletion. An agent must infer usage context from the tool's name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_relationADestructive
Delete a relation from the knowledge graph
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ID of the relation to delete |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description does not contradict the destructiveHint annotation and names what is destroyed (a relation in the knowledge graph). It adds no further behavioral context such as irreversibility, cascading effects, or permission requirements, but the annotation already covers the primary safety trait.
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, direct sentence that is front-loaded with the core operation. There is no redundant wording or unnecessary detail.
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-parameter destructive operation with a clear schema and a destructiveHint annotation, the description is nearly complete. It could mention permanence or behavior when the relation does not exist, but these are minor for this tool's simplicity.
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 coverage is 100%, with the id parameter already documented as 'ID of the relation to delete.' The description adds no additional semantic detail beyond that, so the schema carries the parameter documentation 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?
The description clearly states the verb (Delete), the resource (relation), and the context (knowledge graph). It is distinguishable from siblings like delete_entity and create_relation without needing to inspect the schema.
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 usage is implied: use this tool when you need to remove a relation from the knowledge graph. However, it does not explicitly mention when not to use it or compare against alternatives such as delete_entity, leaving some selection guidance to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_workspace_entityADestructive
Delete a workspace entity and publish the change privately or as a DAO proposal.
| Name | Required | Description | Default |
|---|---|---|---|
| kind | No | ||
| entityId | Yes | ||
| daoSpaceId | No | ||
| visibility | No | private | |
| votingMode | No | ||
| daoSpaceAddress | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The destructiveHint annotation is consistent with the word 'Delete'. The description adds value beyond the annotation by disclosing the publishing side-effect and the private/DAO-proposal modes, which are not otherwise visible.
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 efficient sentence that front-loads the primary action and then states the publication behavior. No wasted words.
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?
Given 6 parameters, no output schema, and no parameter descriptions, the one-sentence description is insufficient. It does not clarify when private vs. DAO-proposal publishing applies, which parameters are conditionally required, or what constitutes a successful deletion/proposal.
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?
With 0% schema description coverage across 6 parameters, the description needed to compensate but only hints at visibility/DAO behavior. It does not explain entityId, kind, daoSpaceId, votingMode, or daoSpaceAddress, leaving agents to guess at conditional requirements.
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 ('Delete') and resource ('workspace entity') and adds the key outcome: publishing the change privately or as a DAO proposal. This clearly distinguishes it from simpler sibling tools like delete_entity.
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 the tool is for deletions that also need publication, but it never explicitly contrasts with alternatives such as delete_entity, publish_edit, or propose_dao_edit. The usage context is inferable, not stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
generate_idARead-only
Generate one or more unique Geo knowledge graph IDs (dashless UUID v4)
| Name | Required | Description | Default |
|---|---|---|---|
| count | No | Number of IDs to generate (default 1) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The readOnlyHint annotation already communicates that nothing is mutated, so the description does not need to restate that. It adds useful behavioral detail: IDs are unique, dashless, UUID v4, and multiple can be generated at once. No side effects or hidden requirements are disclosed, but none are evident.
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, front-loaded sentence that states the action, the resource, the multiplicity, and the format with zero filler. Every word 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?
The tool is simple, the one parameter is fully documented in the schema, and the readOnlyHint covers the safety profile. The main gap is that, with no output schema, the description does not state the exact return shape (e.g., a single string vs an array of strings) for the generated IDs.
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 'count' parameter, so the schema already documents it. The description's 'one or more' loosely mirrors the count parameter but adds no parameter-level details beyond what the schema provides, so it meets the baseline without elevating it.
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 ('Generate'), a concrete resource ('Geo knowledge graph IDs'), and a distinguishing format ('dashless UUID v4'). It also conveys multiplicity ('one or more') and uniqueness, making it easy to tell apart from sibling tools by name and function.
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 the tool should be used whenever new IDs are needed, but it never explicitly states when to use it, when not to use it, or how it relates to alternatives such as get_system_ids. For such a simple utility the purpose is clear, but the guidance is only implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_entityARead-only
Get full details of a single entity by ID, including values, relations, backlinks, and types.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Entity ID (dashless hex) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, so the key safety trait is covered. The description adds useful context about the contents of the returned entity details, but does not disclose behavior such as not-found handling, auth requirements, or whether relations are returned inline. With annotation coverage, this is adequate but not exceptional.
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 is front-loaded with the core action and resource, followed by a compact list of included content. Every word earns its place and there is no redundant or filler text.
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 one-parameter read tool with readOnlyHint=true and no output schema, the description adequately explains what the tool returns: values, relations, backlinks, and types. The required parameter is fully documented in the schema, so nothing essential is missing for an agent to call this 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 coverage is 100%, and the only parameter 'id' is already described as 'Entity ID (dashless hex)'. The description repeats 'by ID' but adds no new semantic detail beyond 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 clearly states the action ('Get full details') and resource ('single entity by ID'), and enumerates what is included: values, relations, backlinks, and types. This distinguishes it from siblings like list_entities and search_entities, which cover collections or searches rather than a single known entity.
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 phrase 'single entity by ID' gives clear context: use this when you already have an entity ID and need its full details rather than a search or list result. It does not explicitly name alternatives or exclusion 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.
get_page_contentARead-only
Get the ordered content blocks of a page entity. Returns text (Markdown) and image blocks in position order.
| Name | Required | Description | Default |
|---|---|---|---|
| entityId | Yes | Entity ID (dashless hex) of the page to fetch content blocks for |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The readOnlyHint annotation already declares the operation is read-only. The description adds meaningful context beyond that: the result is ordered, includes text rendered as Markdown, and includes image blocks. This helps the agent understand what to expect without an output schema, though it does not address edge cases like empty pages or invalid entity IDs.
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 two concise sentences with no filler. The core action and resource are front-loaded, and the return composition is stated efficiently. Every sentence contributes useful information.
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 getter with a 100%-covered schema, the description is mostly complete. It explains what is returned and the ordering. Without an output schema, a bit more detail about the exact block structure or empty behavior could help, but the core calling context is sufficiently covered.
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 single entityId parameter is described as 'Entity ID (dashless hex) of the page to fetch content blocks for.' The description adds no additional parameter semantics beyond 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 and resource: 'Get the ordered content blocks of a page entity.' It clearly distinguishes this tool from siblings like get_entity by focusing on content blocks rather than general entity data, and it specifies the return shape (text Markdown and image blocks in position 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?
The description implies the tool is for retrieving page content blocks, but it does not explicitly state when to prefer this over a sibling like get_entity or list_entities. No exclusions or alternative routing are provided, so the agent must infer usage from the resource name and description.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_proposalARead-only
Get full details of a single proposal by ID, including vote breakdown.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Proposal ID (dashless hex) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The readOnlyHint annotation already signals that this is a safe read operation, and the description adds useful return-content context by stating that vote breakdown is included. For a simple getter, this is sufficient behavioral transparency; it does not contradict the annotation.
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, front-loaded sentence conveys the action, resource, scope, and an important return detail without any wasted words. It is concise and immediately understandable.
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-parameter read tool with a readOnlyHint annotation and no output schema, the description gives enough context: what it returns and the key distinguishing detail (vote breakdown). It does not cover error behavior, but that is a minor gap for this kind of getter.
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 schema fully documents the only parameter ('Proposal ID (dashless hex)'). The description adds no additional parameter-level detail, which is acceptable because the schema already does the heavy lifting.
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 ('Get'), a clear resource ('full details of a single proposal by ID'), and a distinguishing feature ('including vote breakdown'). This clearly separates it from the plural get_proposals tool and from other entity-focused getters.
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 makes it clear that this is for fetching a single proposal by ID, so the basic use case is implied. However, it does not explicitly distinguish itself from get_proposal_votes or get_proposals, and it gives no guidance on when to prefer those alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_proposalsARead-only
List proposals for a specific space, ordered by creation time (newest first).
| Name | Required | Description | Default |
|---|---|---|---|
| first | No | Max results (default 20) | |
| offset | No | Offset for pagination (default 0) | |
| spaceId | Yes | Space ID (dashless hex) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, so the safety profile is covered. The description adds useful ordering behavior (newest first), which is beyond what annotations provide, but otherwise discloses little about pagination behavior or response structure.
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 is direct, front-loaded, and free of redundancy. Every word contributes to understanding the tool's core behavior and ordering guarantee.
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 list tool, the description plus fully documented schema and readOnlyHint provide everything an agent needs to invoke it correctly. No critical information 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%, so parameters are already well documented. The description adds no additional parameter-level meaning beyond reinforcing that spaceId scopes the listing, which is sufficient given the schema's completeness.
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 ('List') with a clear resource ('proposals') and scope ('for a specific space'), and adds ordering behavior ('newest first'). It clearly differentiates from the singular sibling get_proposal, which retrieves one proposal rather than a list.
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 conveys when to use the tool: when listing proposals for a specific space. It does not explicitly contrast it with siblings like get_proposal or get_proposal_votes, but the context is clear enough that an agent can infer the appropriate use case.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_proposal_votesARead-only
List votes for a specific proposal. Returns voter IDs, vote direction, and timestamps.
| Name | Required | Description | Default |
|---|---|---|---|
| first | No | Max results (default 20) | |
| offset | No | Offset for pagination (default 0) | |
| proposalId | Yes | Proposal ID (dashless hex) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The readOnlyHint annotation already communicates that this is a safe read operation, lowering the burden on the description. The description adds useful return-content context but does not disclose additional behavioral traits such as pagination behavior, ordering, or any rate-limit considerations.
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, efficient sentence that front-loads the core action and resource. Every part earns its place, with no filler or redundant restatement of the tool name.
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 list tool with no output schema, the description adequately states what is returned. It could be slightly more complete by mentioning pagination or that it returns all votes for the proposal, but the schema already documents pagination parameters.
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 schema already documents all three parameters. The description only alludes to proposalId via 'specific proposal' and does not add meaning beyond the schema, but the full schema coverage justifies the baseline score 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 states a clear verb ('List') and resource ('votes for a specific proposal'), and it further specifies the returned data fields (voter IDs, vote direction, timestamps). This distinguishes it from sibling tools like get_proposal or vote_on_proposal.
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 when to use this tool: when you need votes for a specific proposal. However, it does not explicitly mention alternatives or when not to use it, such as when needing proposal metadata or casting a vote.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_session_statusARead-only
Get current session state
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The readOnlyHint annotation already establishes that this is a non-destructive read, and the description's 'get' is consistent with that. The description adds no further behavioral context such as return format, error cases, or authentication requirements, but the simple read-only nature keeps this from being a major gap.
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, concise five-word sentence that front-loads the exact action. There is no filler, repetition, or unnecessary detail.
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?
With zero parameters, a read-only annotation, and a self-explanatory status getter, the description is mostly adequate for calling the tool. The lack of an output schema leaves the return structure unspecified, but the minimal surface area reduces the impact of that omission.
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 tool has zero parameters, so there are no parameter semantics for the description to explain. The baseline of 4 applies because the input schema is empty and the description does not need to compensate for any parameter documentation.
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 ('get') and resource ('current session state'), clearly indicating a read operation. It is distinguishable from the sibling tool 'clear_session' as the inverse action, though it does not explicitly name or contrast that sibling.
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 usage context is implied: call this when you need to know the current session state. However, it provides no explicit when-to-use or when-not-to-use guidance, nor does it compare itself with any alternative tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_spaceARead-only
Get details of a single space by ID, including editor/member counts and recent proposals.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Space ID (dashless hex) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The readOnlyHint annotation already signals a safe read operation, and the description complements it by disclosing what the response contains: editor/member counts and recent proposals. Since there is no output schema, this extra behavioral detail is valuable, though it does not enumerate all possible returned fields.
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 with no filler. It states the core operation first and then appends meaningful specifics about the return payload.
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-parameter, read-only retrieval tool, the description covers the essential expectations: what resource is being fetched and what notable data will be included. It lacks an exhaustive return schema, but the absence of an output schema is partially mitigated by the listed return contents.
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 coverage is 100%, and the single parameter 'id' is already described as 'Space ID (dashless hex)'. The description adds no additional meaning beyond what the schema provides, so the baseline score of 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 clearly states the action ('Get details') and resource ('a single space by ID'), and it names specific return contents: editor/member counts and recent proposals. This distinguishes it from sibling tools like list_spaces (which lists spaces) and get_entity/get_type (which target other resource types).
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 provides clear context for when to use the tool: when the agent needs details about one specific space, identified by ID, including counts and proposals. It does not explicitly mention excluded alternatives or when-not-to-use conditions, but the single-space framing naturally separates it from list-oriented siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_system_idsARead-only
Get well-known system entity IDs from the Geo knowledge graph. Returns commonly used type, property, and data type IDs.
| Name | Required | Description | Default |
|---|---|---|---|
| category | Yes | Category of system IDs to return |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, covering the safety profile. The description adds that this returns commonly used type, property, and data type IDs, which is useful context. However, it does not disclose output format, behavior for category='all', or any other operational details beyond what the annotation and schema already imply.
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 two sentences with no fluff. The primary action is front-loaded, and the second sentence usefully enumerates the categories of IDs returned. Every sentence 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?
For a simple one-parameter read-only lookup with a fully documented enum, the description is largely sufficient. There is no output schema, so a brief note on the return shape would make it fully complete, but an agent can likely infer the return from 'IDs' and the category parameter.
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 category parameter has a clear enum and description. The tool description does not add substantial meaning beyond the schema, so it appropriately earns the baseline score 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 states the verb ('Get'), the resource ('well-known system entity IDs from the Geo knowledge graph'), and the scope ('commonly used type, property, and data type IDs'). This is specific enough to distinguish it from sibling tools like get_type or get_entity, which target individual entity/type records rather than system IDs.
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 the tool should be used when an agent needs well-known system IDs for constructing or referencing types, properties, and data types. However, it does not explicitly say when to prefer this over alternatives such as get_type or list_types, nor does it mention exclusions or context like 'use this before creating a type.'
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_typeARead-only
Get details of a type definition by ID. Types are entities, so this returns the entity with its values and properties.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Type ID (dashless hex) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With readOnlyHint=true already provided by annotations, the description adds valuable context on top by disclosing the response shape: types are entities, so the call returns the entity with its values and properties. This is meaningful since there is no output schema. It does not cover error behavior for invalid IDs, but the key behavioral trait is disclosed.
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 short sentences totaling roughly 25 words. The primary action is front-loaded, and the second sentence earns its place by clarifying what the response contains. No redundant or filler language.
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 no output schema, the description covers the essential needs: what it does and what it returns. The only gap is not connecting it to sibling tools like list_types for ID discovery or get_entity for distinction, but this is a minor omission given the tool's simplicity.
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 id parameter is already documented as 'Type ID (dashless hex)'. The description's 'by ID' adds no format or semantic detail beyond what the schema already conveys, 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 states a specific action ('Get details of a type definition by ID') with a clear resource and invocation method, and the second sentence clarifies the return semantics (types are entities, so the response is an entity with values and properties). However, it does not distinguish from the sibling get_entity, which is a notable gap given the description itself claims types are entities.
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 phrase 'by ID' implies the tool is appropriate when the agent already possesses a type ID, which is a weak usage signal. There is no explicit guidance about when to prefer get_type over the close sibling get_entity, nor any mention of list_types for discovering type IDs first.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_entitiesARead-only
List entities with optional filters for space, type, and name. Supports pagination.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | Case-insensitive name substring filter | |
| first | No | Max results (default 20) | |
| offset | No | Offset for pagination (default 0) | |
| typeIds | No | Filter by type IDs (dashless hex) | |
| spaceIds | No | Filter by space IDs (dashless hex) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The readOnlyHint annotation already covers the safety profile, and the description adds only that filters are optional and pagination is supported, which is already present in the schema. It does not disclose additional behavioral traits such as result ordering, default return format, or how filters combine, though it also does not contradict the annotation.
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 sentence that front-loads the core action ('List entities'), then the optional filters, then pagination. There is no fluff or redundant phrasing; every phrase 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?
For a read-only listing tool with no output schema, the description covers the primary functional dimensions: filtering and pagination. It does not mention result shape or ordering, but given the readOnly annotation and rich parameter schema, the description is sufficiently complete for an agent to call 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?
With 100% schema description coverage, the schema fully documents all five parameters. The description restates the filter dimensions (space, type, name) and pagination but adds no new semantic detail, so the baseline score of 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 uses a clear verb-resource pair ('List entities') and specifies optional filters for space, type, and name plus pagination, providing a concrete sense of scope. However, it does not explicitly distinguish itself from sibling tools like search_entities, which may perform similar filtering, so it falls short of a 5.
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 its use case through the mention of optional filters and pagination, but it gives no explicit guidance on when to choose this tool over alternatives such as search_entities or get_entity. There is no 'when to use' or 'when not to use' framing, making the usage context only implicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_spacesBRead-only
List spaces with optional type filter. Supports pagination.
| Name | Required | Description | Default |
|---|---|---|---|
| type | No | Filter by space type (PUBLIC maps to DAO) | |
| first | No | Max results (default 20) | |
| offset | No | Offset for pagination (default 0) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, so the read-only safety profile is covered and the description does not contradict it. The description adds the type-filtering and pagination behaviors, but these are also already documented in the input schema. No additional traits (result ordering, defaults, or response shape) are disclosed, so the added value over annotations is modest.
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 short sentences with the core action front-loaded and zero filler. Every word earns its place, and the size is proportionate to a simple 3-parameter read-only tool.
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 list operation, the description covers the resource, the filter dimension, and pagination. Annotations handle safety and the schema handles parameters, so little critical information is missing. The only gap is that with no output schema, the return shape and result ordering are left unspecified — a minor omission for a simple list tool.
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%: type has an enum with the 'PUBLIC maps to DAO' note, first has min/max and default 20, offset has a default of 0. The description's 'optional type filter' and 'Supports pagination' merely restate what the schema already documents, adding no new semantic meaning. The high-coverage 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 states a specific verb and resource ('List spaces') plus a scope qualifier ('optional type filter'). This is clearly distinguishable from siblings like get_space (singular retrieval) and list_types/list_entities (different resources), though it does not explicitly name them. Purpose is 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?
No guidance is given about when to use this tool versus alternatives such as get_space (fetching a single space) or search_entities/list_entities (other discovery paths). The 'optional type filter' implies a use case for the type parameter, but there are no exclusions, prerequisites, or alternative-routing instructions. Usage context must be inferred from the name and signature alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_typesARead-only
List type definitions in a specific space. Returns type entities with basic metadata.
| Name | Required | Description | Default |
|---|---|---|---|
| first | No | Max results (default 20) | |
| offset | No | Offset for pagination (default 0) | |
| spaceId | Yes | Space ID (dashless hex) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The readOnlyHint annotation already covers safety; the description adds that the result contains type entities with basic metadata. However, it does not disclose pagination behavior, ordering, or what 'basic metadata' includes, leaving some behavioral details unspecified.
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 two short sentences with no filler. The action is front-loaded and the return type is stated succinctly, making it easy for an agent to parse quickly.
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 operation with a read-only annotation and well-covered parameters, the description is mostly complete. It states the return shape at a high level, which is helpful given there is no output schema, though exact returned fields would make it fully complete.
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 all three parameters are already documented. The description adds no extra parameter-level meaning beyond what the schema provides, warranting the baseline score 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 states the operation: list type definitions within a specific space. It is easily distinguished from sibling tools like create_type, get_type, and list_spaces because it specifies both the resource type and the space scoping.
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 the tool is for retrieving type definitions when a specific space is known, but it gives no explicit guidance on when to prefer this over get_type, search_entities, or list_entities. No exclusions or alternative routing are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
propose_accept_editorB
Propose adding a new editor to a DAO space
| Name | Required | Description | Default |
|---|---|---|---|
| ipfsUri | Yes | ipfs:// metadata URI for the proposal | |
| editorAddress | Yes | 0x address of the editor to add | |
| mainVotingAddress | Yes | 0x address of the MainVoting plugin contract |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With only readOnlyHint=false in annotations, the description carries most of the behavioral burden. 'Propose' conveys that the tool creates a proposal rather than directly modifying state, but it does not disclose on-chain or transaction requirements, wallet signing, or the governance workflow.
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 concise, front-loaded sentence with no filler. It loses a point because it omits useful adjacent context like alternatives or side effects that could be added compactly.
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 full parameter documentation, the tool has no output schema and minimal annotations. The description does not tell an agent what the call returns, whether it requires a connected wallet or signed transaction, or how it fits into the DAO proposal flow among siblings like vote_on_proposal.
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 parameters are already fully documented. The description adds no extra meaning beyond aligning 'adding an editor' with editorAddress, 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 clearly names the action ('Propose adding') and the resource ('a new editor to a DAO space'). It distinguishes this tool from siblings like propose_remove_editor and propose_accept_subspace, which target different operations or resources.
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?
When to use it is implied: use it to add an editor through a proposal. However, it does not explicitly name alternatives or state when not to use it, leaving some routing to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
propose_accept_subspaceA
Propose accepting a subspace into a DAO space
| Name | Required | Description | Default |
|---|---|---|---|
| ipfsUri | Yes | ipfs:// metadata URI for the proposal | |
| subspaceAddress | Yes | 0x address of the subspace DAO | |
| mainVotingAddress | Yes | 0x address of the MainVoting plugin contract | |
| spacePluginAddress | Yes | 0x address of the space plugin |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The readOnlyHint=false annotation already signals a mutating operation. The description adds a meaningful behavioral nuance: it is a 'propose' action, not a direct execution, implying the creation of a governance proposal. It does not, however, disclose side effects, on-chain requirements, or consequences beyond the annotation.
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 with no filler. 'Propose accepting a subspace into a DAO space' captures the essential operation efficiently and 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?
With all required parameters documented in the schema and the mutation flag provided by annotations, the basics are covered. However, the description omits what happens after the proposal is created, whether a wallet or signing step is needed, and any return behavior, which would help an agent invoke it confidently.
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%: all four required parameters have clear descriptions in the schema. The tool description itself adds no extra parameter-level meaning, so it does not need to compensate, and the baseline of 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 names a specific verb and resource: 'Propose accepting a subspace into a DAO space.' It clearly distinguishes this from siblings like propose_remove_subspace and propose_accept_editor by specifying the action (accepting) and the object (subspace).
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 semantics imply this tool is used when proposing to accept a subspace into a DAO, but there is no explicit guidance about when to choose it over alternatives such as propose_remove_subspace or propose_accept_editor. No exclusions or comparison to sibling tools are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
propose_dao_editC
Propose accumulated ops as a DAO edit
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Name for the edit | |
| daoSpaceId | Yes | DAO space ID (0x hex bytes16) | |
| votingMode | No | Voting mode | FAST |
| daoSpaceAddress | Yes | DAO space contract address (0x hex) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description only restates the high-level action and does not disclose side effects such as whether it creates an on-chain proposal, consumes the accumulated ops, requires a configured wallet, or is irreversible. The annotation readOnlyHint=false only indicates mutation, so the description carries the burden of explaining behavior and does not.
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 short sentence with no filler words, and the action is front-loaded. It is concise but perhaps too terse to be maximally helpful; the lack of detail hurts other dimensions rather than conciseness.
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 mutating DAO-proposal tool with no output schema and only a one-bit annotation, this description is incomplete: it never explains where 'accumulated ops' come from, what happens after proposing, how votingMode influences execution, or how this differs from the other propose_* siblings. An agent would likely need to inspect other tools or documentation before calling it confidently.
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?
All four parameters are already fully described in the input schema (100% coverage), so the description does not need to restate them. The description adds no extra meaning about how name, daoSpaceAddress, daoSpaceId, or votingMode relate to the edit proposal, but the baseline of 3 is appropriate because schema covers all parameters.
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 specific action ('Propose') and a distinct object ('accumulated ops' as a 'DAO edit'), so it is not a tautology and is fairly clear. However, it does not define what 'accumulated ops' are or explicitly distinguish this from sibling propose_* tools, so it lacks full differentiation.
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 use this tool versus the sibling tools like propose_accept_editor, propose_remove_editor, or vote_on_proposal. The phrase 'accumulated ops' only vaguely implies a batching use case; there are no stated preconditions, exclusions, or alternative conditions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
propose_remove_editorB
Propose removing an editor from a DAO space
| Name | Required | Description | Default |
|---|---|---|---|
| ipfsUri | Yes | ipfs:// metadata URI for the proposal | |
| editorAddress | Yes | 0x address of the editor to remove | |
| mainVotingAddress | Yes | 0x address of the MainVoting plugin contract |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, so the agent knows this is a mutation. The description adds the useful behavioral trait that the tool creates a proposal rather than directly removing an editor, but it discloses nothing about the proposal lifecycle, voting requirements, permissions, or side effects. Consistent with annotations but thin.
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, front-loaded sentence with zero filler. The action verb ('Propose') leads immediately, followed by the object and scope ('an editor from a DAO space'). Every word 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?
With no output schema and only a readOnlyHint annotation, the description carries the burden of explaining the workflow, but it omits what the call returns (e.g., proposal ID), what happens after the proposal is created (voting), and any prerequisites such as wallet setup or DAO membership. It is minimally viable for a 3-parameter mutation tool but leaves significant gaps.
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 each parameter (mainVotingAddress, editorAddress, ipfsUri) already documented with format hints such as '0x address' and 'ipfs:// metadata URI'. The description adds no parameter-level meaning beyond the schema, so the 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 states a specific verb+resource ('Propose removing an editor from a DAO space') that cleanly distinguishes the tool from siblings like propose_accept_editor, propose_remove_subspace, and propose_dao_edit. An agent can tell exactly what this tool does without opening the schema.
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 offers no guidance on when to use this tool versus the many proposal siblings (propose_accept_editor, propose_remove_subspace, propose_accept_subspace, propose_dao_edit), and names no alternatives or exclusions. The 'propose' verb only weakly implies this is the proposal-creation path rather than a direct removal, with no stated prerequisites or workflow context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
propose_remove_subspaceB
Propose removing a subspace from a DAO space
| Name | Required | Description | Default |
|---|---|---|---|
| ipfsUri | Yes | ipfs:// metadata URI for the proposal | |
| subspaceAddress | Yes | 0x address of the subspace DAO | |
| mainVotingAddress | Yes | 0x address of the MainVoting plugin contract | |
| spacePluginAddress | Yes | 0x address of the space plugin |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnlyHint: false, which is consistent with the write nature of this action; no contradiction. The description adds useful context that this creates a proposal rather than executing the removal directly, implying a governance flow. However, it does not disclose whether this requires a signed on-chain transaction, a configured wallet, or what happens after the proposal is created — partial transparency, and the readOnlyHint already signals mutation.
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?
Eight words, front-loaded with the action verb, zero filler or repetition of the tool name. It is efficiently structured and every word 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?
With no output schema and only a minimal readOnlyHint annotation, the description bears the full burden of behavioral disclosure, and 8 words are thin for a governance-proposal tool with 4 required addresses and a metadata URI. Missing context includes the proposal lifecycle, transaction/signing requirements, and how this tool relates to the other proposal siblings. The bare purpose is clear, but an agent calling this correctly would need more.
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% — all four parameters (ipfsUri, subspaceAddress, mainVotingAddress, spacePluginAddress) have their own descriptions in the input schema. The description itself adds nothing about parameters, so the baseline of 3 applies per the rubric.
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: 'Propose removing a subspace from a DAO space.' It naturally distinguishes from sibling tools like propose_accept_subspace (adding) and propose_remove_editor (removing an editor). It's clear but terse — it doesn't elaborate on what the proposal entails, so it stops short of a 5.
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 on when to use this tool versus the closely related siblings propose_accept_subspace, propose_remove_editor, or propose_dao_edit. Usage is only implied by the semantics of the name, with no explicit conditions, exclusions, or alternatives named. An agent must infer when this is the right tool among several similar governance-proposal tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
publish_editA
Publish all accumulated ops as an edit to personal space
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Name for the edit |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only indicate readOnlyHint=false, so the description adds value by specifying that all accumulated ops are published at once to personal space. However, it does not disclose side effects such as whether the op queue is cleared afterward or any auth requirements.
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 action and contains zero redundant words. It is highly scannable and concise while still conveying the essential operation.
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?
The tool is simple with one parameter and no output schema, so the description is minimally viable. However, 'accumulated ops' and 'personal space' are left undefined, requiring the agent to infer context from sibling tools or session state.
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 'name' parameter is already documented as 'Name for the edit'. The description adds no additional parameter semantics, 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 states a specific verb ('publish') and resource ('edit to personal space') with a clear scope ('all accumulated ops'). It implicitly distinguishes from siblings like propose_dao_edit by targeting personal space rather than a DAO.
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 phrase 'accumulated ops' implies a prerequisite (prior operations must have been accumulated), but no explicit when-to-use guidance or alternatives are provided. The agent must infer that this tool is for publishing after a session of op accumulation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
read_local_fileARead-only
Read a local file from an allowed path. Useful for ingesting local research outputs, claim JSON, or markdown before publishing to Geo.
| Name | Required | Description | Default |
|---|---|---|---|
| output | No | Return mode for file content; use base64 for binary files | |
| filePath | Yes | Absolute or relative file path to read | |
| maxBytes | No | Maximum bytes to read (default 250000) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, covering the safety profile. The description adds useful behavioral context with 'from an allowed path', signaling that path restrictions exist. However, it does not disclose what happens when a path is not allowed, truncation behavior with maxBytes, or error handling, leaving some behavioral gaps.
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 with no filler. The core action and security constraint are front-loaded in the first sentence, and the usage context earns its place in the second. Nothing extraneous.
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 file tool, the description, annotations, and 100%-coverage schema together provide adequate guidance. The main gap is the absence of any detail about the return format or failure behavior since there is no output schema, but this is a minor shortfall for a low-complexity tool.
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 all three parameters (filePath, output, maxBytes) already carry descriptions in the schema. The tool description adds no parameter-level detail beyond the schema, placing it at 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 states a specific verb ('read'), a resource ('local file'), and a scope constraint ('from an allowed path'). It clearly differentiates from siblings like create_knowledge_graph_from_file or publish_edit, which involve writing or transformation rather than plain file reading.
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 second sentence gives a clear use context: 'ingesting local research outputs, claim JSON, or markdown before publishing to Geo.' It does not explicitly name alternatives or exclusions, but the context is specific enough for an agent to know when this tool is the right choice.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
resolve_workspace_entitiesBRead-only
Resolve workspace entities by kind and optional name search.
| Name | Required | Description | Default |
|---|---|---|---|
| kind | Yes | ||
| name | No | Optional name search | |
| first | No | ||
| offset | No | ||
| spaceId | No | Optional dashless space ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnlyHint=true, so the agent knows this is a safe read operation. The description adds the scoping behavior by kind and name, but it does not disclose pagination behavior via 'first' and 'offset,' matching semantics for the name search, or whether results are returned as IDs, summaries, or full entities. With annotations covering the safety profile, a score of 3 is appropriate.
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 with no redundant words. It efficiently states the action and the primary filtering dimension, so 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?
With five parameters, no output schema, and ambiguous 'resolve' semantics, this minimal description is insufficient for an agent to confidently invoke the tool correctly. It omits the meaning of pagination parameters, the role of spaceId, and what the response contains, leaving too much to inference for a tool that appears distinct from nearby search/list/get 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 only 40%, and the description does not compensate for the gap. It only restates the kind and name parameters, while first, offset, and spaceId are left unexplained in the description; the schema provides ranges for first/offset and a hint for spaceId, but the tool description adds little semantic value beyond that.
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 ('Resolve') and names the resource ('workspace entities') scoped by 'kind and optional name search,' which conveys the core operation. However, it does not distinguish this tool from siblings like search_entities, list_entities, or get_entity, and 'resolve' remains somewhat vague about what the output represents.
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: call this tool to resolve workspace entities filtered by kind and optionally by name. It gives no explicit guidance on when to prefer this over search_entities, list_entities, or get_entity, and it does not mention pagination or space scoping, so the usage context is only partially conveyed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_entitiesARead-only
Full-text search for entities in the Geo knowledge graph. Returns matching entities with basic metadata.
| Name | Required | Description | Default |
|---|---|---|---|
| first | No | Max results to return (default 20) | |
| query | Yes | Search query string | |
| offset | No | Offset for pagination (default 0) | |
| spaceId | No | Filter to a specific space (dashless hex ID) | |
| typeIds | No | Client-side filter: only return entities matching these type IDs |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already declare readOnlyHint=true, so the safety profile is covered. The description adds that this is a full-text search returning basic metadata, but it does not disclose pagination behavior, filtering semantics, or the exact shape of returned data; it is not misleading or contradictory.
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 two short sentences with no filler or repetition. It front-loads the action and scope immediately, and every clause contributes useful information.
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 search tool with no output schema, the description gives a reasonable high-level summary: full-text search, entity results, basic metadata. However, it does not describe the return fields, pagination details, or how filters like spaceId and typeIds behave beyond what the schema already states, leaving a moderate gap for an agent consuming 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?
Schema description coverage is 100%, so all five parameters are already documented in the schema. The description itself does not add parameter-specific meaning, such as the effect of spaceId or typeIds, so the baseline score of 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: full-text search for entities in the Geo knowledge graph, and it notes that matching entities with basic metadata are returned. It is clear, though it does not explicitly differentiate from sibling tools like list_entities or get_entity; the phrase 'full-text' implies query-based matching rather than listing or direct retrieval.
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?
Usage context is implied by 'full-text search' — an agent can infer this is for query-based entity lookup rather than listing all entities. However, the description provides no explicit when-to-use guidance and does not name alternatives or conditions for choosing this tool over list_entities or get_entity.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
setup_spaceA
Ensure personal space exists and get space ID. Requires configured wallet.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With readOnlyHint=false, the annotation already signals a non-read-only operation. The description adds that the tool 'ensure[s]' the space exists and notes the wallet prerequisite, but it does not disclose whether the operation is idempotent, what side effects occur when a space is missing, or what happens if the wallet is not configured. This is adequate but not fully transparent.
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 one short sentence with no filler. The core purpose is front-loaded ('Ensure personal space exists and get space ID'), and the prerequisite is appended cleanly. Every word contributes meaning.
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 parameterless tool with no output schema and minimal annotations, the description covers the essential purpose and a key prerequisite. It does not specify the exact return format or error behavior, but the tool's simplicity means these gaps are less critical.
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 tool has zero parameters and the input schema is empty, so there is no parameter documentation burden. The description correctly implies that no parameters are needed by focusing on the action and the wallet prerequisite. Baseline for zero parameters is appropriately high.
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 action: 'Ensure personal space exists and get space ID.' It clearly identifies the resource (personal space) and the intended outcome (space ID). It distinguishes itself from get_space/list_spaces by emphasizing the 'ensure exists' behavior, though it does not explicitly say 'create if missing'.
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 provides a clear prerequisite: 'Requires configured wallet.' This gives the agent a necessary condition before invocation. However, it does not explicitly state when to use this tool over get_space/list_spaces or mention any exclusion cases, leaving some inference to the agent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
submit_signed_transactionA
Submit a signed transaction hash for a pending approval-mode transaction. Handles continuations (auto-vote, auto-execute) automatically.
| Name | Required | Description | Default |
|---|---|---|---|
| txHash | Yes | The transaction hash after signing and broadcasting | |
| pendingTxId | Yes | ID of the pending transaction |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the readOnlyHint=false annotation, the description discloses that the tool automatically handles continuations such as auto-vote and auto-execute. This is important behavioral context that an agent would not otherwise know. It doesn't mention potential irreversibility or failure modes, but the bar is lower because annotations already indicate a write operation.
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 two concise sentences with no filler. The core action is front-loaded, and the continuation behavior is a valuable addition that 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?
For a two-parameter tool, the description provides enough context to invoke it correctly. However, there is no output schema and the description doesn't explain what happens after submission (e.g., success response, confirmation, error behavior), so an agent is left to guess at the return value.
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 input schema already provides clear descriptions for both parameters (txHash and pendingTxId), so schema coverage is 100%. The tool description doesn't add additional parameter-level detail, but it doesn't need to because the schema fully documents each field.
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 a specific action—'Submit a signed transaction hash'—and identifies the exact resource: a pending approval-mode transaction. It also adds that continuations are handled automatically, which helps distinguish it from generic transaction tools. It doesn't explicitly name sibling tools, but the action and context are specific enough.
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 makes the usage context explicit: this is for a pending approval-mode transaction after signing and broadcasting a transaction hash. It doesn't name alternatives or exclusions, but the intended scenario is clear and it would be hard to confuse with other sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_entityC
Update an existing entity
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ID of the entity to update | |
| name | No | New name for the entity | |
| unset | No | Properties to unset | |
| values | No | Property values to set | |
| description | No | New description for the entity |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond readOnlyHint=false, the description adds no behavioral context such as whether values replace or merge, what happens if the entity does not exist, or how unset interacts with existing properties. It does not contradict the annotations, but it also does not meaningfully expand on 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?
'Update an existing entity' is short and waste-free, but it is under-specified rather than genuinely concise. It essentially restates the tool name and does not earn a higher score based on content.
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?
This is a moderately complex mutation tool with nested value types, an unset array, and no output schema. The description omits core semantics such as partial versus full replacement, relationship to add_values_to_entity, and error behavior, leaving the agent without enough context to call it confidently.
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 is 3. The schema already documents id, name, unset, values, and description, but the tool description itself adds no parameter-level meaning. The complex typed values union is left entirely to the schema.
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 and resource ('Update an existing entity'), making the basic operation clear. It distinguishes from create/delete but not from sibling add_values_to_entity, which could be confused for a similar value-modifying operation.
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 use this tool versus alternatives. Sibling tools like add_values_to_entity, create_entity, and delete_entity exist, but the description provides no selection criteria or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
upsert_canvas_workflowB
Create/update a canvas workflow entity and publish privately or via DAO proposal
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Workflow name | |
| nodes | Yes | Canvas workflow nodes | |
| daoSpaceId | No | DAO space bytes16 ID (required for public) | |
| visibility | No | private | |
| votingMode | No | Voting mode for DAO proposals | |
| workflowId | No | Existing workflow entity ID to update | |
| connections | Yes | Canvas workflow connections | |
| description | No | Optional workflow description | |
| daoSpaceAddress | No | DAO space contract address (required for public) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotation surface is minimal (only readOnlyHint: false), so the description carries the burden of disclosing behavior. It does add value by revealing the dual-path behavior of the tool — private publishing versus DAO-proposal publishing — which is not apparent from the schema alone. However, it remains vague about the mechanics of the DAO path: it does not say whether a proposal is created on-chain, whether daoSpaceId/daoSpaceAddress are prerequisites, or what side effects 'publish privately' has. No contradiction with readOnlyHint: 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?
A single front-loaded sentence with zero wasted words: the core verb and resource come first, followed by the two behavioral modes. Every phrase earns its place, and nothing is duplicated from the schema.
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 9 parameters, no output schema, and only one weak annotation, the one-line description is insufficient. It leaves major operational unknowns unresolved: when workflowId triggers update versus create, what daoSpaceId and daoSpaceAddress are actually required for, what votingMode (FAST/SLOW) controls, what the return value is (entity ID? proposal ID?), and how this tool relates to upsert_workspace_entity and propose_dao_edit. The schema fills parameter names but not the workflow logic connecting them.
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 89%, so the schema already documents 8 of 9 parameters, placing this at the baseline of 3. The description adds limited marginal value by linking 'DAO proposal' to the public visibility path and thereby hinting at the role of votingMode and daoSpaceId/daoSpaceAddress, but it provides no parameter-level detail beyond what the schema states.
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+resource pair — 'Create/update' a 'canvas workflow entity' — which clearly identifies what the tool operates on. It adds the publishing behavior ('publish privately or via DAO proposal'), which meaningfully distinguishes it from generic entity tools like create_entity and update_entity. It stops short of a 5 because it never explicitly names its near-sibling upsert_workspace_entity, leaving the agent to infer the difference.
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 on when to use this tool versus alternatives. The tool has 43 siblings, including the near-identical upsert_workspace_entity and publishing-focused tools like publish_edit and propose_dao_edit, yet the description neither names these alternatives nor states an exclusion condition. The phrase 'publish... via DAO proposal' actually creates ambiguity about whether the agent should call this tool or a dedicated proposal tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
upsert_workspace_entityC
Create/update a workspace note/task/project and publish privately or as a DAO proposal.
| Name | Required | Description | Default |
|---|---|---|---|
| kind | Yes | ||
| name | Yes | Entity name/title | |
| tags | No | ||
| status | No | ||
| dueDate | No | ||
| entityId | No | Existing entity ID to update | |
| noteType | No | ||
| priority | No | ||
| daoSpaceId | No | ||
| visibility | No | private | |
| votingMode | No | ||
| description | No | Plain text description | |
| daoSpaceAddress | No | ||
| markdownContent | No | Markdown body for note entities |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With only readOnlyHint=false provided, the description carries most of the behavioral disclosure burden. It reveals that the operation can create/update and publish privately or as a DAO proposal, but it does not explain side effects of DAO publishing, required permissions or wallet state, reversibility, or failure behavior. No contradiction with annotations exists.
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 sentence with no filler and front-loads the core upsert behavior. It is concise, though it sacrifices some helpful detail in favor of brevity for a tool with 14 parameters.
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?
This is a complex 14-parameter tool with no output schema and minimal annotations, yet the description only summarizes intent. An agent would not know how to construct a valid call differentiated by kind, when to supply entityId, how to publish as a DAO proposal, or what inputs are required for each mode.
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 only 29%, so the description should compensate for the 10 undocumented parameters. It adds context around kind (note/task/project) and visibility/publishing, but leaves many ambiguous fields unexplained: status values, dueDate format, noteType, priority, votingMode, daoSpaceAddress, and how entityId triggers update versus create.
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 an upsert (create/update) operation on workspace entities and scopes it to note/task/project kinds, with publishing behavior. It is specific enough to distinguish this from generic siblings like create_entity/update_entity, though it does not name them explicitly.
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?
There is no guidance on when to use this tool versus siblings such as create_entity, update_entity, propose_dao_edit, or publish_edit. The phrase 'or as a DAO proposal' hints at an alternative mode, but conditions, prerequisites, and exclusions are missing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
vote_on_proposalA
Cast a vote on a DAO proposal (YES, NO, or ABSTAIN)
| Name | Required | Description | Default |
|---|---|---|---|
| vote | Yes | Vote option | |
| proposalId | Yes | Proposal ID (uint256 as string) | |
| mainVotingAddress | Yes | 0x address of the MainVoting plugin contract | |
| tryEarlyExecution | No | Attempt early execution if vote threshold is met |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotation already records readOnlyHint=false, so the write nature of the tool is covered. The description adds only the voting action itself and does not disclose side effects such as on-chain submission, signing requirements, irreversibility, or the possible consequences of tryEarlyExecution. This is a minimal viable disclosure rather than a rich one.
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, front-loaded sentence states the action, resource, and allowed options with no filler. Every word contributes useful information for an agent deciding whether to call this tool.
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?
Given a fully documented schema and a readOnlyHint annotation, the description is adequate for identifying the operation and its required inputs. However, it omits any note about the expected output, does not describe side effects beyond the annotation, and does not route the agent to related proposal tools. These gaps are not blocking, but they leave room for improvement.
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 input schema already documents all four parameters with 100% coverage, so the baseline is 3. The description's 'YES, NO, or ABSTAIN' only repeats the enum from the schema and adds no extra meaning to proposalId, mainVotingAddress, or tryEarlyExecution.
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 the specific verb 'Cast' and identifies the exact resource, 'a DAO proposal', while also listing the allowed options (YES, NO, ABSTAIN). This makes the tool immediately distinguishable from read-only siblings like get_proposals or get_proposal_votes and from proposal-creation tools such as propose_dao_edit.
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 clearly establishes the context: an agent should choose this tool when the user wants to cast a vote on a DAO proposal. It does not explicitly list alternatives or when-not-to-use conditions, but the action verb and proposal scope provide enough context to avoid confusion with the related read-only voting tools.
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.
44 tool updates
v1.8.0- First observed
add_values_to_entity - First observed
build_schema - First observed
clear_session - First observed
configure_wallet - First observed
create_entity - First observed
create_image - First observed
create_knowledge_graph - First observed
create_knowledge_graph_from_file - First observed
create_property - First observed
create_relation - First observed
create_research_ontology_paper_and_claims - First observed
create_research_paper_and_claims - First observed
create_type - First observed
delete_entity - First observed
delete_relation - First observed
delete_workspace_entity - First observed
generate_id - First observed
get_entity - First observed
get_page_content - First observed
get_proposal - First observed
get_proposal_votes - First observed
get_proposals - First observed
get_session_status - First observed
get_space - First observed
get_system_ids - First observed
get_type - First observed
list_entities - First observed
list_spaces - First observed
list_types - First observed
propose_accept_editor - First observed
propose_accept_subspace - First observed
propose_dao_edit - First observed
propose_remove_editor - First observed
propose_remove_subspace - First observed
publish_edit - First observed
read_local_file - First observed
resolve_workspace_entities - First observed
search_entities - First observed
setup_space - First observed
submit_signed_transaction - First observed
update_entity - First observed
upsert_canvas_workflow - First observed
upsert_workspace_entity - First observed
vote_on_proposal
TDQS
Scored across 44 tools
Multiple tools have unclear boundaries, especially create_research_paper_and_claims vs create_research_ontology_paper_and_claims, which appear to do nearly the same thing. High-level builders like create_knowledge_graph and build_schema overlap with granular create_property/create_type/create_entity, and upsert_canvas_workflow vs upsert_workspace_entity are easy to confuse. The descriptions help, but an agent could easily pick the wrong level or duplicate function.
The vast majority of tools follow a clear snake_case verb_noun pattern, such as create_entity, list_spaces, delete_relation, and get_proposal. Minor deviations like create_knowledge_graph_from_file, create_research_paper_and_claims, vote_on_proposal, and propose_accept_editor are still readable but break the simple verb_noun shape slightly.
44 tools is far beyond the typical well-scoped MCP surface and crosses the 25+ threshold for 'too many'. While the server covers several subdomains, many tools are convenience wrappers or near-duplicates, making the overall toolset feel heavy and harder to navigate.
The toolset covers most core workflows: entity CRUD, schema building, research claim creation, workspace management, and DAO proposal/voting. Gaps exist for dedicated property listing, relation reads/updates, and general proposal creation, but agents can work around these using get_entity, search_entities, and propose_dao_edit.
Maintenance
Related MCP Connectors
Geospatial AI MCP server — satellite imagery, embeddings, weather, GNS governance
GreenlandAI: company graph & map, agent marketplace, wallets, on-chain verification.
A collaborative substrate over your data: vector, knowledge graph, SQL, geospatial, streaming.
Knowledge graph ingestion, entity search, ontology analysis, and CoSync scoring.
Related MCP Servers
- AlicenseAqualityFmaintenancePowers AI agents with indexed blockchain data from The Graph, enabling them to fetch subgraph schemas and execute GraphQL queries against blockchain data.29MIT

Gitopia MCP Serverofficial
AlicenseAqualityCmaintenanceDecentralized Git with on-chain governance, bounties, and DAOs. Tools for repos, issues, PRs, labels, releases, bounties, and DAO proposals. Auto-wallet on first use, trust tiers, and approval mode for human-in-the-loop.573MIT- AlicenseNot gradedqualityBmaintenanceEnables AI agents to participate in a decentralized network, earn GSTD tokens by performing computational tasks, and communicate via the A2A protocol.2MIT
- AlicenseBqualityAmaintenanceEnables building and querying vector-based knowledge graphs with node and edge management and semantic search.57 npm51 PyPIMIT