Skip to main content
Glama

Server Details

Community-maintained knowledge base for Radix DLT — search, read, and contribute wiki pages.

If you are the author of this connector, you can claim ownership by verifying the domain or GitHub account it belongs to. Claimed connector authors can inspect health checks, view analytics, and manage their listing.
Status
Healthy
Uptime
100.0% over 75 days
Last Tested
Transport
Streamable HTTP · MCP 2025-11-25
URL

TDQS

A4.4/5.0

Scored across 17 tools

Disambiguation4/5

Most tools target a distinct resource+action, and the descriptions actively disambiguate the crowded read surface (get_page vs get_pages vs get_full_corpus vs list_pages vs search_wiki), explicitly stating when to prefer each. The main residual overlap is between the several read/browse tools, but the guidance is strong enough that misselection is unlikely.

Naming Consistency5/5

Names follow a consistent snake_case verb_noun pattern throughout (create_page, get_page_history, list_pages, restore_revision, upload_image, search_wiki). The only deviation, `login`, is a natural single-verb auth term and remains clear.

Tool Count4/5

17 tools is at the upper end of well-scoped but each has a clear role: CRUD, history/restore, discovery (categories/list/search), bulk ingestion, images, and the two-step ROLA auth flow. A couple of extras (ideas board, network activity) are domain-specific but still earn their place.

Completeness4/5

Full page lifecycle is covered (create/read/edit/delete plus history and restore), along with discovery, batch reads, bulk corpus, and image upload. The notable gap is comments: delete_page references 'history and comments,' yet no tool reads or writes comments, and edits require sending the full block array rather than block-level operations.

Available Tools

17 tools
create_pageCreate a pageAInspect

Create a new Radix Wiki page. Requires a ROLA bearer token; see https://radix.wiki/AGENTS.md for the challenge-sign-verify flow. Call get_categories first for a valid tagPath. Needs a wallet holding at least 10,000 $XRD (ecosystem 20,000, blog 50,000, ideas 10,000), a balance check that spends nothing. Earns contribution points.

NameRequiredDescriptionDefault
slugNoURL slug (derived from the title when omitted)
titleYesPage title
contentYesArray of typed blocks. Start with an infobox, hyperlink every assertion to its source, no inline styles.
tagPathYesTag path the page lives under (e.g. "contents/tech/core-concepts")
metadataNoKey-value metadata for the page, including `excerpt` (one sentence, ≤160 chars). Some tag paths require specific keys — the error names any that are missing.
bannerImageNoBanner image URL

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations only declare the generic non-read-only, non-destructive, non-idempotent profile; the description adds real context the annotations cannot: authentication mechanism, wallet-holding requirements per tag category, the fact the balance check spends nothing, and the contribution-points side effect. It omits failure behavior for duplicate slugs/titles, which matters for a non-idempotent create.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Four dense sentences, front-loaded with the action and followed by prerequisites in rough order of execution. Parenthetical category thresholds are a little crammed, but no sentence is filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a create tool with a deep nested content schema and no output schema, the description covers auth, sequencing, eligibility and content style. It does not say what the call returns (page id/path) or how conflicts are surfaced, which an agent needs to chain into get_page or edit_page.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and the nested block schema is heavily self-documented, so the baseline is 3. The description still adds value beyond the schema by imposing content conventions (start with an infobox, hyperlink every assertion, no inline styles) and by pointing tagPath at get_categories for valid values.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Opens with a specific verb+resource ("Create a new Radix Wiki page") that is unmistakably distinct from the siblings edit_page, delete_page and get_page. It also names the immediate prerequisite tool (get_categories), so an agent can place it in the workflow 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.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives concrete preconditions: a ROLA bearer token with a linked challenge-sign-verify flow, a call to get_categories first for a valid tagPath, and a per-category wallet balance threshold. It never explicitly says when NOT to use it (e.g. use edit_page to modify an existing page), so it falls short of full when/when-not/alternatives coverage.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

delete_pageDelete a pageA
DestructiveIdempotent
Inspect

Delete an article with its history and comments. Requires a ROLA bearer token. Its author may delete it; on a shared board (ideas), so may anyone who clears the bar to edit it. Locked pages, hub articles and the homepage cannot be deleted.

NameRequiredDescriptionDefault
pathYesThe page's whole path

TDQS

A4.5/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already mark this destructive and idempotent, but the description adds substantial context beyond them: the authentication requirement, the permission/ownership model, the cascade to history and comments, and the set of pages that cannot be deleted. This is exactly the behavioral detail an agent needs before invoking a destructive operation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three dense sentences, each doing distinct work: what is deleted (with cascade), what credentials/permissions are needed, and what cannot be deleted. Front-loaded with the action and its effect; no filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a destructive one-parameter tool with no output schema and annotations that only give the safety profile, the description supplies everything an agent needs: auth requirement, permission rules, cascade behavior, and prohibited targets. Nothing material is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

There is a single parameter with 100% schema description coverage ('The page's whole path'), so the schema carries the semantics. The description adds no further detail about the path format or identifiers, making the baseline 3 appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

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 (an article/page), and adds scope that the name alone doesn't convey: the page's history and comments go with it. This clearly distinguishes it from edit_page and restore_revision.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It spells out the conditions for use: a ROLA bearer token is required, the author may delete, and on a shared ideas board anyone meeting the edit bar may delete. It also gives explicit exclusions (locked pages, hub articles, homepage). It stops short of naming an alternative tool for cases where deletion isn't allowed.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

edit_pageEdit a pageA
Destructive
Inspect

Edit an existing Radix Wiki page. Requires a ROLA bearer token; see https://radix.wiki/AGENTS.md. Read the page with get_page and blocks: true, send the full revised block array, and pass its version as baseVersion: an edit made after someone else's is refused rather than written over it, so read again and reapply. The version bump, block-level diff, and revision entry are computed server-side. Needs a wallet holding at least 20,000 $XRD (ideas 10,000). Locked and author-only pages are rejected. Earns contribution points.

NameRequiredDescriptionDefault
slugYesSlug of the page to edit
titleNoNew title
contentNoThe full revised block array (not a patch). Omit to change only the title or metadata.
newSlugNoMove the page to this slug (an article only)
tagPathYesTag path of the page to edit
metadataNoReplacement metadata object: the whole `metadata` get_page returns with `blocks: true`, revised
verifiedNoTrue when you checked the page's facts against its sources: stamps lastVerifiedAt. Send it alone to stamp without an edit.
editorIdsNoUser ids who may co-edit an author-only page. Applied only when the author sends it.
bannerImageNoBanner image URL; an empty string removes it
baseVersionYesThe `version` get_page returned, which this edit starts from
revisionMessageNoWhat changed and why — shown in the page history. Always send one.

TDQS

A4.9/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the annotations, it discloses authentication requirements, wallet balance prerequisites, optimistic concurrency behavior, server-side computation of version/diff/revision, page restrictions, and contribution points. These details materially improve safe invocation. The destructiveHint annotation is consistent with replacing the full block array.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a dense but front-loaded paragraph: purpose first, then prerequisites, workflow, conflict behavior, restrictions, and side effects. For an 11-parameter mutation tool, every sentence contributes relevant context without padding.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

It covers the full complexity of the tool: auth, wallet requirements, read-before-edit workflow, concurrency refusal, server-side effects, rejected page states, and contribution-point side effects. No output schema is present, but the description does not need to explain return values and otherwise leaves no major operational gap.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the schema already carries most parameter meaning. The description adds useful workflow semantics around `baseVersion` conflict handling and full-array replacement, though several parameter explanations overlap with existing schema descriptions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific verb and resource: editing an existing Radix Wiki page. It clearly distinguishes this from reading via get_page and implies the lifecycle distinction from create_page/delete_page, so an agent can identify the tool 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.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives explicit operational guidance: read the page first with get_page and `blocks: true`, send the full revised block array, and pass `version` as `baseVersion`. It also states when the edit is refused, what to do on conflict, and that locked or author-only pages are rejected.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_categoriesList categoriesA
Read-onlyIdempotent
Inspect

The category tree of the Radix Wiki, the cheapest way to orient before searching. Each node carries its path (a tagPath list_pages and search_wiki take), name, description, pageCount (pages filed at that path) and pageCountDeep (with every descendant). tagPaths lists every tag path that holds pages, including any the tree does not name.

NameRequiredDescriptionDefault

No parameters

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already establish read-only, idempotent, closed-world behavior. The description adds valuable return-shape context: each node carries path/name/description/pageCount/pageCountDeep, and tagPaths enumerates every tag path including those absent from the tree. Pagination and auth behavior remain unstated, but the annotation coverage lowers the burden.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three dense but well-structured sentences front-load purpose and value, then describe the returned node fields and the tagPaths list. Every sentence contributes necessary information, with no filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

No output schema exists, so the description must explain return structure, and it does so through node fields and tagPaths. Combined with annotations that cover safety and the absence of parameters, this is complete enough for an orientation tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

There are zero parameters, so the baseline is 4. The description still adds cross-tool semantics by explaining that a node's path is the same tagPath accepted by list_pages and search_wiki, which helps an agent connect this output to sibling tools.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

Names the resource (category tree of the Radix Wiki) and its role ('orient before searching'), so an agent can tell this lists categories rather than pages. It references list_pages and search_wiki indirectly, but does not explicitly say what it is not, so it is clear but not perfectly differentiated.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

States the moment to use it ('before searching') and frames it as the cheapest orientation step, implicitly contrasting with search_wiki. It does not spell out when not to use it or name all alternatives, so it falls short of full when/when-not guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_challengeStart a loginAInspect

Step 1 of writing to the wiki: a single-use ROLA challenge (5-minute expiry). The response spells out the exact recipe for the message your Ed25519 key must sign. You always sign with your OWN key — nothing here custodies anything. Takes no parameters.

NameRequiredDescriptionDefault

No parameters

TDQS

A4.7/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With annotations providing no safety hints and all flags false, the description carries the full burden and does so richly: it discloses single-use behavior, a 5-minute expiry, that the response specifies the exact signing recipe, and that the tool never custodies keys. This goes well beyond what annotations alone convey and does not contradict them.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three sentences with no wasted words. The core purpose is front-loaded, and each sentence adds a distinct piece of information: the role in the flow, the expiry and response contents, and the key ownership guarantee.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a zero-parameter tool with no output schema, the description is complete: it explains what the response contains, why the challenge is needed, the expiry constraint, and the security context around key custody. An agent knows exactly what to expect and how to proceed after invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema has zero parameters and 100% coverage, so the baseline is 4. The description explicitly states 'Takes no parameters,' confirming there is no required input, which is fully consistent with the empty schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states a specific verb and resource: obtaining a single-use ROLA challenge as 'Step 1 of writing to the wiki.' It distinguishes itself from siblings by explaining exactly what the response contains (the recipe for signing with an Ed25519 key) and what it does not do ('nothing here custodies anything').

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description clearly frames this as the first step in an authentication flow for writing to the wiki, which implies when to use it. It does not explicitly name alternatives or exclusions, but the 'Step 1' framing and mention of your own key give enough contextual guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_full_corpusWhole corpusA
Read-onlyIdempotent
Inspect

The whole of the Radix Wiki as one text document, for bulk ingestion. Preflight first: sizeOnly=true returns the character count, a token estimate, the per-branch breakdown and the largest pages. Then pull it with maxChars (default 200000, max 1000000), or one branch at a time with tagPath. Truncation is page-aligned: truncated, omittedPages and nextSkip say where to resume (pass skip=nextSkip). For a handful of pages get_pages is cheaper.

NameRequiredDescriptionDefault
skipNoResume from this page index: the `nextSkip` of the previous truncated call (default 0)
tagPathNoOne branch and its descendants. Omit for everything.
maxCharsNoCharacter budget for `document` (default 200000, max 1000000)
sizeOnlyNoSizes and breakdowns only, no document. Do this before the first real pull.

TDQS

A4.9/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations cover only safety (readOnly/idempotent/closed-world), and the description adds the behavior that actually matters for a large dump: page-aligned truncation, truncated/omittedPages/nextSkip resume protocol, skip=nextSkip continuation, and the default/max character budget. That is substantial disclosure beyond structured fields.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

One dense paragraph that is front-loaded with the resource, then the preflight, then paging/resume, then the alternative. Every clause carries operational information; nothing is filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description carries the return-value burden itself, naming truncated, omittedPages, nextSkip and the sizeOnly report fields. For a 4-param, zero-required bulk-read tool, an agent has everything needed for a correct first call and a correct continuation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

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 still adds meaning the schema does not carry, notably what sizeOnly=true actually returns (character count, token estimate, per-branch breakdown, largest pages) and the preflight-then-pull sequencing. It does not add format/syntax detail for skip or tagPath beyond the schema, so it stops short of a 5.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Specific verb+resource: returns the whole Radix Wiki as one text document for bulk ingestion, which is unambiguous against a sibling list dominated by single-page/browsing tools. It also explicitly contrasts itself with get_pages for small fetches, so an agent can route without opening any schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives an explicit workflow: preflight with sizeOnly=true, then pull with maxChars, or narrow to one branch with tagPath, and use get_pages instead for a handful of pages. When-to-use, when-not, and the alternative are all stated.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_ideas_boardIdeas pipelineA
Read-onlyIdempotent
Inspect

Get the RADIX Wiki Ideas Pipeline kanban: community proposals and Radix DAO tasks grouped into status columns (Discussion → Proposed → Approved → In Progress → Testing → Done), each card carrying its working group, category, priority, and assignee. Use this to follow DAO / project progress.

NameRequiredDescriptionDefault
categoryNoFilter to one category: Protocol, Ecosystem, Tooling, Community, Governance
workingGroupNoFilter by working group name substring, e.g. "Treasury", "Legal", "NetOps"

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly, idempotent, and closed-world, so the safety profile is covered. The description goes further by disclosing the return structure (status columns and per-card fields), which is behaviorally useful and not present in the structured data.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two densely informative sentences, front-loaded with the resource identity before the purpose. Every clause earns its place by describing columns, fields, or intent.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description compensates by describing the returned kanban shape. Annotations cover safety, parameters are fully documented in the schema, and no behavioral gap remains for correctly invoking this read-only board.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% so the two filters are already documented. The description adds marginal value by naming working group and category as card attributes, implicitly confirming what the filters operate on, but does not explain filter syntax.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Specific verb (Get) plus a precisely named resource (RADIX Wiki Ideas Pipeline kanban) and scope. It enumerates the status columns and card attributes, so an agent knows exactly what this returns and how it differs from the page-oriented siblings.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

"Use this to follow DAO / project progress" gives clear usage context, and no sibling offers an equivalent kanban view. However, it does not state when-not to use it or name an alternative for narrower page lookups.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_network_activityRadix network activityA
Read-onlyIdempotent
Inspect

Daily Radix mainnet activity, one row per UTC day since Babylon (28 September 2023): transactions, active accounts, new accounts, components and resources created, NFTs minted, and fees, $XRD burned and royalties in $XRD. Summed from the Gateway transaction stream; counts cover user transactions only. Narrow with from/to. The same rows chart at /charts and download at /api/charts/activity?format=csv.

NameRequiredDescriptionDefault
toNoLast day, YYYY-MM-DD (default: the last stored day)
fromNoFirst day, YYYY-MM-DD (default: 30 days before the last stored day)

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly/idempotent/closed-world, so the safety profile is covered. The description adds real behavioral context beyond them: data provenance (summed from the Gateway transaction stream) and a meaningful coverage limitation ('counts cover user transactions only'), which an agent must know to interpret the numbers correctly.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the resource and scope, then the measures, then the narrowing guidance. Dense and largely waste-free, though the trailing sentence about /charts and the CSV download is more contextual pointer than invocation-critical and slightly dilutes the focus.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description carries the burden of describing the returned data and does so fully: granularity, coverage window, provenance, and the enumerated columns. Nothing an agent needs to call or interpret this tool is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, with both `from` and `to` documented in the schema including format (YYYY-MM-DD) and default behavior. The description only restates the filtering action ('Narrow with from/to') and adds no syntax or semantics 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.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource (daily Radix mainnet activity) and then enumerates the exact measures returned (transactions, active/new accounts, components, resources, NFTs, fees, XRD burned, royalties). It also pins the scope precisely: one row per UTC day since Babylon (28 September 2023). An agent knows exactly what this returns 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.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives clear operative guidance ('Narrow with from/to') and points to sibling artifacts (/charts, /api/charts/activity?format=csv) for the same data. It does not state any when-not condition or name a competing tool, but the surrounding siblings (wiki page tools) make the domain unambiguous.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_pageRead a pageA
Read-onlyIdempotent
Inspect

One page of the Radix Wiki in full: its text, version, update date and metadata. Address it by path ("tag/path/slug", exactly the path or url a listing returns), or by tagPath + slug; a category's own path reads its hub article. Not a title. For 2 to 20 pages call get_pages, one round trip rather than N. A miss names the nearest pages, so a wrong guess is fixed in one retry. A page's URL with .md appended is its markdown. With blocks: true, content is the stored block array, ids and all, beside the page id and its whole metadata: read a page this way before editing it, and send its version back as the edit's baseVersion.

NameRequiredDescriptionDefault
pathNoThe page's whole path, e.g. "developers/scrypto/blueprints". Preferred over tagPath + slug.
slugNoPage slug. Ignored when `path` is set.
blocksNoReturn the stored blocks rather than prose, for an edit
tagPathNoTag path only ("" for a top-level page). Ignored when `path` is set.

TDQS

A4.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly/idempotent/openWorld=false, but the description adds non-obvious behavior: a miss names the nearest pages (self-correcting in one retry), blocks:true returns the stored block array with ids alongside page id and full metadata, and the returned version is the baseVersion an edit expects. Those editorial/workflow details are not in the annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Dense but front-loaded: the core purpose leads, then addressing, then sibling routing, then edge behaviors. Nearly every clause carries information, though the middle section (miss behavior, .md markdown, blocks workflow) is tightly packed and could be split slightly for scanning.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

No output schema exists, so the description carries the burden of describing returns (text, version, update date, metadata; block array under blocks:true) and does so. For a read tool with a clear safety profile, nothing an agent needs to call it correctly or use the result (e.g., baseVersion) is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so baseline is 3, and the description goes beyond it: it establishes precedence ('path' preferred, tagPath/slug ignored when set), states the concrete path format ('tag/path/slug'), and explains what blocks:true actually yields and why (pre-edit read). This adds meaning the schema strings alone don't convey.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource (read one page in full: text, version, update date, metadata) and distinguishes itself from siblings by naming get_pages and the collection-vs-single boundary. The addressing modes (path, or tagPath+slug) are spelled out, so an agent can tell it apart from list_pages/search_wiki without opening a schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicit routing rule: 'For 2 to 20 pages call get_pages, one round trip rather than N.' It also warns 'Not a title' and clarifies that a category's own path reads its hub article, plus the edit workflow (read with blocks:true before editing). When-to-use and when-to-use-the-alternative are both covered.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_page_historyPage historyA
Read-onlyIdempotent
Inspect

A page's revisions in the Radix Wiki, newest first: each one's id, version, change type, message, date and the blocks it changed. Address the page as get_page does. A revision id is what a restore takes, where this server has one. Defaults: limit 20 (max 100).

NameRequiredDescriptionDefault
pathNoThe page's whole path, e.g. "developers/scrypto/blueprints". Preferred over tagPath + slug.
slugNoPage slug. Ignored when `path` is set.
limitNoMost revisions returned (default 20, max 100)
tagPathNoTag path only ("" for a top-level page). Ignored when `path` is set.

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly, idempotent, non-openWorld, so the safety profile is covered. The description adds meaningful behavior the annotations do not: newest-first ordering, the exact fields per revision, the limit default/max, and the cross-tool contract that an id feeds a restore.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three dense sentences with no filler: purpose and ordering first, return shape second, addressing and cross-tool id semantics third, defaults last. Every sentence carries information an agent needs.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description compensates by describing return fields and ordering. Combined with 100% schema coverage and read-only annotations, nothing essential for correct invocation is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so path/slug/tagPath precedence and the limit default/max are already documented in the schema. The description repeats the limit defaults and the addressing convention rather than adding new syntax or format detail, so baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource (a page's revisions in Radix Wiki) plus ordering (newest first) and enumerates the returned fields (id, version, change type, message, date, changed blocks). It also distinguishes itself from get_page by deferring addressing rules to it and from restore_revision by noting the revision id is what a restore takes.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives clear context: address the page as get_page does, and the revision id is consumed by restore. It does not explicitly say when to prefer this over get_recent_changes or get_page, so the exclusion side of the guidance is left implicit.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_pagesRead up to 20 pagesA
Read-onlyIdempotent
Inspect

Batch read: 1 to 20 pages of the Radix Wiki in full in one call, which is how to read search or listing results. Pass paths as the listings return them. Paths that do not exist come back in missing rather than failing the call, anything past 20 in remaining, and pages past maxChars (default 250000) in omitted with their sizes.

NameRequiredDescriptionDefault
pathsYesPage paths, 1 to 20 per call
maxCharsNoTotal characters across the pages returned (default 250000, max 1000000)

TDQS

A4.6/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations only cover the safety profile (readOnly, idempotent, not openWorld). The description goes well past that by disclosing partial-failure semantics: nonexistent paths land in `missing` instead of failing, overflow beyond 20 lands in `remaining`, and truncated pages land in `omitted` with sizes. That is exactly the behavior an agent needs to reason about a 3-way partial result.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the core action and scope, and the trailing clauses about `missing`/`remaining`/`omitted` all carry distinct information. It is dense and slightly run-on, but no sentence is wasted.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description carries the return-shape burden and does so by naming the three outcome buckets (missing, remaining, omitted) and the default char budget. Given only two well-documented parameters and read-only annotations, nothing material is left unexplained.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3, but the description adds meaning beyond the schema by explaining the consequence of `maxChars` (pages past the cap are surfaced in `omitted` with their sizes) and reinforcing the 1-20 bound on `paths`. It does not restate the min/max numeric bounds, but the semantic effect is documented.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource (batch read pages of the Radix Wiki) with an explicit scope bound (1 to 20, in full, one call). It also differentiates itself from sibling read paths by naming it as how to read search or listing results.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It clearly positions itself relative to search_wiki and list_pages output ('which is how to read search or listing results'), telling the agent when to reach for it. It stops short of explicitly naming get_page as the single-page alternative, so the single-vs-batch choice 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_recent_changesRecent changesA
Read-onlyIdempotent
Inspect

Pages of the Radix Wiki edited within the last N days, newest first: what to poll when you are watching the wiki rather than reading it. Same rows as list_pages. Defaults: days 7 (max 30), limit 20 (max 50). truncated: true means the limit cut the list; raise it, or page through list_pages.

NameRequiredDescriptionDefault
daysNoLook back this many days (default 7, max 30)
limitNoMost pages returned (default 20, max 50)

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover readOnly/idempotent/closed-world, so the bar is lower, and the description still adds real behavioral context: ordering (newest first), default values, and the meaning of `truncated: true`. This is the kind of return-signal an agent needs beyond the safety profile.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

One compact paragraph, front-loaded with the core purpose followed by usage framing, defaults, and the truncation caveat. Every sentence carries checkable information with no padding.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description compensates by disclosing ordering, default/limit bounds, and the `truncated` return signal, plus how to continue (raise limit or page through list_pages). Nothing essential for correct invocation is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and both parameters already document their defaults and maxima. The description largely restates those bounds (days 7/max 30, limit 20/max 50) without adding new semantics, so baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource with scope ('Pages of the Radix Wiki edited within the last N days, newest first') and explicitly distinguishes itself from siblings, noting it returns the 'Same rows as list_pages' and serves a polling rather than reading use case. An agent can tell it apart from list_pages and get_page_history without opening a schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives clear context for use ('what to poll when you are watching the wiki rather than reading it') and routes to list_pages as the alternative for paging. It stops short of an explicit when-not condition, but the usage framing is concrete and actionable.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_pagesList pagesA
Read-onlyIdempotent
Inspect

Browse the Radix Wiki by tag path rather than by keyword: every page under a branch, newest first by default. tagPath matches the branch and everything beneath it; omit it to walk the whole wiki. Sort by title for an A–Z pass. Same rows as search_wiki, with totalPages, hasMore and nextPage. Defaults: page 1, pageSize 20 (max 100).

NameRequiredDescriptionDefault
pageNo1-based page number (default 1)
sortNoSort order (default "updatedAt", newest first)
tagPathNoThe branch to list, e.g. a path from get_categories. Includes its descendants.
pageSizeNoResults per page (default 20, max 100)

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already establish read-only, idempotent, and closed-world behavior, so the bar is lower. The description still adds real context: default ordering (newest first), pagination defaults and the 100 cap, and the result envelope keys (totalPages, hasMore, nextPage) that no output schema documents.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Four dense sentences, front-loaded with the primary distinguishing mechanism before any parameter detail. No filler, no restating the title or tool name, and every clause carries operational information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a zero-required-parameter listing tool with no output schema, the description covers scope, alternatives, ordering, pagination limits, and the return envelope. An agent has everything needed to call it correctly, and safety is already handled by annotations.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

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 genuine meaning on top: tagPath matches the branch plus everything beneath it and can be omitted entirely, and sort=title is framed as an A-Z pass over the same data, clarifying the enum's practical effect.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Browse the Radix Wiki') and pins the mechanism precisely: 'by tag path rather than by keyword', with scope ('every page under a branch'). This distinguishes it cleanly from search_wiki and get_pages without opening a schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Names the alternative implicitly via 'rather than by keyword' (search_wiki) and gives selection conditions: use tagPath to scope to a branch and descendants, omit it to walk the whole wiki, use sort=title for an A-Z pass. No explicit when-not or hard exclusions, so it falls just 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.

loginExchange a signed proof for a tokenAInspect

Step 2: exchange the signed ROLA proof for a 7-day Bearer token — the same verification the human wallet flow runs. Send the returned token as an HTTP Authorization: Bearer <token> header on every later create_page / edit_page call; tool arguments never carry it.

NameRequiredDescriptionDefault
curveYesSigning curve (Ed25519 = "curve25519")
addressYesYour account address (virtual account of the signing key; its public key must be an on-ledger owner_keys entry)
challengeYesThe challenge from get_challenge
publicKeyYesEd25519 public key, hex
signatureYesSignature over the ROLA message, hex

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the annotations, the description adds valuable behavioral context: the token lifetime is 7 days, the proof verification mirrors the human wallet flow, and the token is carried via HTTP header rather than tool arguments. It does not contradict the annotations and provides useful operational detail for an auth tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is compact and front-loaded: the first sentence states the action and token duration, and the second explains exactly how to use the result. Every clause earns its place with no repetition or filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 5-required-parameter tool with no output schema, the description adequately covers the auth workflow, token lifetime, and token usage. The only noticeable gap is that it does not describe the exact response shape beyond 'returned token', which could require the agent to infer the token field name.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

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 five parameters thoroughly. The description adds little parameter-specific meaning; 'signed ROLA proof' loosely contextualizes signature/publicKey, but it does not compensate beyond the schema baseline.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the specific action: exchanging a signed ROLA proof for a 7-day Bearer token. It identifies the tool as 'Step 2' in an authentication flow, distinguishing it from get_challenge (step 1) and from content-oriented siblings like create_page and edit_page.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives clear context by labeling the tool 'Step 2' and by explaining that the returned token must be sent as an Authorization header on later create_page/edit_page calls. It does not explicitly name get_challenge as the required predecessor or state exclusions, so it stops short of full when-to-use/when-not-to-use guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

restore_revisionRestore a revisionA
Destructive
Inspect

Make an earlier revision the current page, written as a new revision. Requires a ROLA bearer token and passes the same gates as edit_page. Take the revision id from get_page_history.

NameRequiredDescriptionDefault
pathYesThe page's whole path
revisionIdYesThe revision `id` from get_page_history

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare destructiveHint=true, readOnlyHint=false, and idempotentHint=false, so the safety profile is covered. The description adds meaningful context beyond that: the authentication requirement (ROLA bearer token), the permission gates inherited from edit_page, and the important behavioral detail that the restore is recorded as a new revision rather than overwriting history. It could say more about reversibility or failure modes, but this is solid added value.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three short sentences, front-loaded with the core action, followed by prerequisites and the pointer to the id source. Every sentence carries information; no filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With annotations covering the safety profile and full schema coverage on both parameters, the description supplies the remaining essentials: auth, gates, and where to obtain the revision id. There is no output schema and no mention of what the call returns, but for a simple restore operation that omission is minor.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and both parameters are documented in the schema, including that revisionId comes from get_page_history. The description repeats that provenance but adds no format, syntax, or constraint details beyond the schema, so the baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource ('Make an earlier revision the current page, written as a new revision') and immediately clarifies the mechanism (a new revision is written, not an in-place mutation). Combined with the cross-reference to edit_page and get_page_history, an agent can distinguish this from sibling tools without opening any schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives clear context and prerequisites: a ROLA bearer token is required, the same gates as edit_page apply, and the revision id must be sourced from get_page_history. It does not explicitly state when NOT to use it (e.g., versus edit_page for small corrections), which keeps it just 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.

search_wikiSearch the wikiA
Read-onlyIdempotent
Inspect

Keyword search across the Radix Wiki: the first call when you know what you are looking for but not where it lives. Matches titles and body prose, ranked in four tiers: titles starting with the term, titles containing it, literal body hits, then English full-text hits by relevance, which stem words and drop stopwords. Not semantic: one distinctive word beats a sentence. Each row carries a path, its size in chars and a snippet windowed on the match. Feed the paths to get_pages in one call rather than looping get_page. Narrow with tagPath when a term is common. Defaults: page 1, pageSize 20 (max 50); keep paging while hasMore is true.

NameRequiredDescriptionDefault
pageNo1-based page number (default 1)
queryYesSearch term, matched against page titles and body text
tagPathNoOnly pages at this tag path, e.g. a path from get_categories
pageSizeNoResults per page (default 20, max 50)

TDQS

A4.8/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare read-only/idempotent safety, but the description adds substantial behavior: a four-tier ranking order, non-semantic matching (one distinctive word beats a sentence), stemming/stopword handling, snippet windowing on the match, and pagination semantics (default 20, max 50, page while hasMore). This is context an agent cannot derive from the annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the purpose and routing rule before ranking mechanics and pagination detail. It is dense and multi-clause, but nearly every sentence carries actionable information; only the ranking-tier enumeration is longer than strictly needed.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

No output schema exists, yet the description discloses the row shape (path, chars, match-windowed snippet) and the hasMore flag, so an agent knows both how to call it and what comes back. Complete for a search tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3, but the description adds genuine meaning: tagPath is framed as the narrowing lever for common terms (and sourced from get_categories), and page/pageSize defaults and the 50 cap are restated as operative constraints alongside the hasMore paging loop.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Names a specific verb+resource ('keyword search across the Radix Wiki') and immediately scopes it ('the first call when you know what you are looking for but not where it lives'). This distinguishes it cleanly from list_pages, get_page and get_pages without opening any schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicit routing guidance: use this first when you lack a location, feed resulting paths to get_pages in one call rather than looping get_page, and narrow with tagPath when a term is common. It names both the trigger condition and the sibling tools to prefer instead.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

upload_imageUpload an imageAInspect

Upload an image and get back the URL the editor stores: put it in a content block as <img src="…" alt="…">, or pass it to create_page or edit_page as bannerImage. Requires a ROLA bearer token, as create_page does. Send the file base64-encoded, at most 3.4 MB before encoding (the whole request must stay under 4.5 MB), as JPEG, PNG, GIF, WebP, or AVIF. The format is read from the bytes, not from contentType or the name; the image is stored as WebP at most 1600px wide, without its metadata.

NameRequiredDescriptionDefault
dataYesThe image file, base64-encoded; a `data:` URL prefix is accepted
filenameYesFile name, e.g. "validator-map.png"
contentTypeYesMIME type, e.g. "image/png"

TDQS

A4.7/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description adds substantial behavioral detail beyond the annotations: it discloses the required ROLA token, size limits (3.4 MB pre-encoding, 4.5 MB request), accepted formats (JPEG, PNG, GIF, WebP, AVIF), that format is detected from bytes rather than contentType or filename, and that the stored image is converted to WebP at most 1600px wide with metadata stripped. The annotations (readOnlyHint=false, destructiveHint=false, idempotentHint=false) are consistent with a non-destructive write operation, and the description enriches this without contradiction.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is dense but well-organized, front-loading the tool's purpose and output usage before moving to prerequisites, size limits, accepted formats, and storage behavior. Every sentence contributes essential context without redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description compensates by explaining what is returned ('the URL the editor stores') and how to use it. It also covers auth, size constraints, format handling, and post-upload transformation, leaving no major gap for an agent to invoke the tool correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3, but the description adds critical semantics: data must be base64-encoded with a 3.4 MB pre-encoding ceiling, and the format is read from the bytes rather than from contentType or filename. This clarifies that contentType and filename do not control format detection, which is meaningful for correct invocation.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific verb and resource: 'Upload an image and get back the URL the editor stores.' It distinguishes the tool by explaining how the returned URL is consumed (content block, create_page, edit_page), leaving no ambiguity about its role relative to sibling page-manipulation tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It tells the agent exactly where to use the output—'put it in a content block as `<img src="…" alt="…">`, or pass it to create_page or edit_page as bannerImage'—which clarifies the tool's place in the workflow. It also names the required auth method ('Requires a ROLA bearer token, as create_page does'), though it stops short of stating when not to use this tool.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 2 tool updates
    • Changedcreate_page1 field changed
      • changedInput schema / properties / content / items / properties / metric / enum
        Previous value: -[
        -  "transactions",
        -  "activeAccounts",
        -  "newAccounts",
        -  "newComponents",
        -  "newResources",
        -  "nftsMinted",
        -  "feesXrd",
        -  "burnedXrd",
        -  "royaltiesXrd"
        -]New value: +[
        +  "transactions",
        +  "activeAccounts",
        +  "newAccounts",
        +  "newComponents",
        +  "newResources",
        +  "nftsMinted",
        +  "feesXrd",
        +  "royaltiesXrd"
        +]
    • Changededit_page1 field changed
      • changedInput schema / properties / content / items / properties / metric / enum
        Previous value: -[
        -  "transactions",
        -  "activeAccounts",
        -  "newAccounts",
        -  "newComponents",
        -  "newResources",
        -  "nftsMinted",
        -  "feesXrd",
        -  "burnedXrd",
        -  "royaltiesXrd"
        -]New value: +[
        +  "transactions",
        +  "activeAccounts",
        +  "newAccounts",
        +  "newComponents",
        +  "newResources",
        +  "nftsMinted",
        +  "feesXrd",
        +  "royaltiesXrd"
        +]
  2. 2 tool updates
    • Changedcreate_page2 fields changed
      • changedInput schema / properties / content / items / description
        Previous value: -"A typed block with a unique `id` (UUID) and a `type`. A `content` block carries semantic HTML in `text`; an `infobox` carries nested `blocks`. For any other type, copy the shape of one already on a page: get_page with `blocks: true` (or GET /api/wiki/{path}) returns blocks as stored."New value: +"A typed block with a unique `id` (UUID) and a `type`. A `content` block carries semantic HTML in `text`; an `infobox` carries nested `blocks`. An `events` block carries `items: [{ id, date, end?, text }]`, each date a year, month or day (`2026`, `2026-11`, `2026-11-12`) and `text` inline HTML saying what and where, in any order: the page sorts them into upcoming and past by the day it is read. A `locations` block carries `items: [{ id, name?, address?, map?, phone?, email?, hours?, timeZone?, note? }]`, each with its address (plain text, a line to a line) or its `hours`, rows of `{ days: [\"mon\"…\"sun\"], opens: \"08:00\", closes: \"18:00\" }`; the page groups the days and says whether each place is open by its own clock. For any other type, copy the shape of one already on a page: get_page with `blocks: true` (or GET /api/wiki/{path}) returns blocks as stored."
      • changedInput schema / properties / content / items / properties / type / enum
        Previous value: -[
        -  "content",
        -  "banner",
        -  "columns",
        -  "list",
        -  "assetPrice",
        -  "networkChart",
        -  "rssFeed",
        -  "codeTabs",
        -  "linkGrid",
        -  "tipJar",
        -  "references",
        -  "infobox",
        -  "stats",
        -  "testimonial"
        -]New value: +[
        +  "content",
        +  "banner",
        +  "columns",
        +  "list",
        +  "assetPrice",
        +  "networkChart",
        +  "rssFeed",
        +  "codeTabs",
        +  "linkGrid",
        +  "tipJar",
        +  "references",
        +  "locations",
        +  "events",
        +  "infobox",
        +  "stats",
        +  "testimonial"
        +]
    • Changededit_page2 fields changed
      • changedInput schema / properties / content / items / description
        Previous value: -"A typed block with a unique `id` (UUID) and a `type`. A `content` block carries semantic HTML in `text`; an `infobox` carries nested `blocks`. For any other type, copy the shape of one already on a page: get_page with `blocks: true` (or GET /api/wiki/{path}) returns blocks as stored."New value: +"A typed block with a unique `id` (UUID) and a `type`. A `content` block carries semantic HTML in `text`; an `infobox` carries nested `blocks`. An `events` block carries `items: [{ id, date, end?, text }]`, each date a year, month or day (`2026`, `2026-11`, `2026-11-12`) and `text` inline HTML saying what and where, in any order: the page sorts them into upcoming and past by the day it is read. A `locations` block carries `items: [{ id, name?, address?, map?, phone?, email?, hours?, timeZone?, note? }]`, each with its address (plain text, a line to a line) or its `hours`, rows of `{ days: [\"mon\"…\"sun\"], opens: \"08:00\", closes: \"18:00\" }`; the page groups the days and says whether each place is open by its own clock. For any other type, copy the shape of one already on a page: get_page with `blocks: true` (or GET /api/wiki/{path}) returns blocks as stored."
      • changedInput schema / properties / content / items / properties / type / enum
        Previous value: -[
        -  "content",
        -  "banner",
        -  "columns",
        -  "list",
        -  "assetPrice",
        -  "networkChart",
        -  "rssFeed",
        -  "codeTabs",
        -  "linkGrid",
        -  "tipJar",
        -  "references",
        -  "infobox",
        -  "stats",
        -  "testimonial"
        -]New value: +[
        +  "content",
        +  "banner",
        +  "columns",
        +  "list",
        +  "assetPrice",
        +  "networkChart",
        +  "rssFeed",
        +  "codeTabs",
        +  "linkGrid",
        +  "tipJar",
        +  "references",
        +  "locations",
        +  "events",
        +  "infobox",
        +  "stats",
        +  "testimonial"
        +]
  3. 2 tool updates
    • Changedcreate_page7 fields changed
      • addedInput schema / properties / content / items / properties / count
        Added value: +{
        +  "description": "How many of the newest (list)",
        +  "maximum": 100,
        +  "minimum": 1,
        +  "type": "integer"
        +}
      • removedInput schema / properties / content / items / properties / pageIds
        Removed value: -{
        -  "description": "Page ids in display order (pageList): the `id` get_page returns with `blocks: true`",
        -  "items": {
        -    "type": "string"
        -  },
        -  "type": "array"
        -}
      • addedInput schema / properties / content / items / properties / pages
        Added value: +{
        +  "description": "Page ids in display order (list, `chosen`): the `id` get_page returns with `blocks: true`",
        +  "items": {
        +    "type": "string"
        +  },
        +  "maxItems": 100,
        +  "type": "array"
        +}
      • addedInput schema / properties / content / items / properties / show
        Added value: +{
        +  "description": "Each page as a link with its age, or as a card with its banner and opening line (list)",
        +  "enum": [
        +    "links",
        +    "cards"
        +  ],
        +  "type": "string"
        +}
      • addedInput schema / properties / content / items / properties / source
        Added value: +{
        +  "description": "Where a list's pages come from (list): `under` the pages in the category `under` names, `newest` the newest `count` pages (within `under` if given), `chosen` the pages in `pages`",
        +  "enum": [
        +    "under",
        +    "newest",
        +    "chosen"
        +  ],
        +  "type": "string"
        +}
      • changedInput schema / properties / content / items / properties / type / enum
        Previous value: -[
        -  "content",
        -  "banner",
        -  "columns",
        -  "recentPages",
        -  "pageList",
        -  "assetPrice",
        -  "networkChart",
        -  "rssFeed",
        -  "codeTabs",
        -  "linkGrid",
        -  "tipJar",
        -  "references",
        -  "infobox",
        -  "stats",
        -  "testimonial"
        -]New value: +[
        +  "content",
        +  "banner",
        +  "columns",
        +  "list",
        +  "assetPrice",
        +  "networkChart",
        +  "rssFeed",
        +  "codeTabs",
        +  "linkGrid",
        +  "tipJar",
        +  "references",
        +  "infobox",
        +  "stats",
        +  "testimonial"
        +]
      • addedInput schema / properties / content / items / properties / under
        Added value: +{
        +  "description": "A tag path, such as `contents/tech` (list)",
        +  "type": "string"
        +}
    • Changededit_page7 fields changed
      • addedInput schema / properties / content / items / properties / count
        Added value: +{
        +  "description": "How many of the newest (list)",
        +  "maximum": 100,
        +  "minimum": 1,
        +  "type": "integer"
        +}
      • removedInput schema / properties / content / items / properties / pageIds
        Removed value: -{
        -  "description": "Page ids in display order (pageList): the `id` get_page returns with `blocks: true`",
        -  "items": {
        -    "type": "string"
        -  },
        -  "type": "array"
        -}
      • addedInput schema / properties / content / items / properties / pages
        Added value: +{
        +  "description": "Page ids in display order (list, `chosen`): the `id` get_page returns with `blocks: true`",
        +  "items": {
        +    "type": "string"
        +  },
        +  "maxItems": 100,
        +  "type": "array"
        +}
      • addedInput schema / properties / content / items / properties / show
        Added value: +{
        +  "description": "Each page as a link with its age, or as a card with its banner and opening line (list)",
        +  "enum": [
        +    "links",
        +    "cards"
        +  ],
        +  "type": "string"
        +}
      • addedInput schema / properties / content / items / properties / source
        Added value: +{
        +  "description": "Where a list's pages come from (list): `under` the pages in the category `under` names, `newest` the newest `count` pages (within `under` if given), `chosen` the pages in `pages`",
        +  "enum": [
        +    "under",
        +    "newest",
        +    "chosen"
        +  ],
        +  "type": "string"
        +}
      • changedInput schema / properties / content / items / properties / type / enum
        Previous value: -[
        -  "content",
        -  "banner",
        -  "columns",
        -  "recentPages",
        -  "pageList",
        -  "assetPrice",
        -  "networkChart",
        -  "rssFeed",
        -  "codeTabs",
        -  "linkGrid",
        -  "tipJar",
        -  "references",
        -  "infobox",
        -  "stats",
        -  "testimonial"
        -]New value: +[
        +  "content",
        +  "banner",
        +  "columns",
        +  "list",
        +  "assetPrice",
        +  "networkChart",
        +  "rssFeed",
        +  "codeTabs",
        +  "linkGrid",
        +  "tipJar",
        +  "references",
        +  "infobox",
        +  "stats",
        +  "testimonial"
        +]
      • addedInput schema / properties / content / items / properties / under
        Added value: +{
        +  "description": "A tag path, such as `contents/tech` (list)",
        +  "type": "string"
        +}
  4. 13 tool updates
    • Changedcreate_page5 fields changed
      • changedInput schema / properties / content / description
        Previous value: -"Array of typed blocks. Each needs a unique `id` (UUID) and a `type`. A `content` block carries semantic HTML in `text`; an `infobox` block carries nested `blocks`. Start with an infobox, hyperlink every assertion to its source, no inline styles."New value: +"Array of typed blocks. Start with an infobox, hyperlink every assertion to its source, no inline styles."
      • addedInput schema / properties / content / items / additionalProperties
        Added value: +true
      • addedInput schema / properties / content / items / description
        Added value: +"A typed block with a unique `id` (UUID) and a `type`. A `content` block carries semantic HTML in `text`; an `infobox` carries nested `blocks`. For any other type, copy the shape of one already on a page: get_page with `blocks: true` (or GET /api/wiki/{path}) returns blocks as stored."
      • addedInput schema / properties / content / items / properties
        Added value: +{
        +  "blocks": {
        +    "description": "Nested leaf blocks (infobox)",
        +    "items": {
        +      "type": "object"
        +    },
        +    "type": "array"
        +  },
        +  "id": {
        +    "format": "uuid",
        +    "type": "string"
        +  },
        +  "metric": {
        +    "description": "The series charted (networkChart)",
        +    "enum": [
        +      "transactions",
        +      "activeAccounts",
        +      "newAccounts",
        +      "newComponents",
        +      "newResources",
        +      "nftsMinted",
        +      "feesXrd",
        +      "burnedXrd",
        +      "royaltiesXrd"
        +    ],
        +    "type": "string"
        +  },
        +  "pageIds": {
        +    "description": "Page ids in display order (pageList): the `id` get_page returns with `blocks: true`",
        +    "items": {
        +      "type": "string"
        +    },
        +    "type": "array"
        +  },
        +  "text": {
        +    "description": "Semantic HTML (content, banner)",
        +    "type": "string"
        +  },
        +  "type": {
        +    "enum": [
        +      "content",
        +      "banner",
        +      "columns",
        +      "recentPages",
        +      "pageList",
        +      "assetPrice",
        +      "networkChart",
        +      "rssFeed",
        +      "codeTabs",
        +      "linkGrid",
        +      "tipJar",
        +      "references",
        +      "infobox",
        +      "stats",
        +      "testimonial"
        +    ],
        +    "type": "string"
        +  }
        +}
      • addedInput schema / properties / content / items / required
        Added value: +[
        +  "id",
        +  "type"
        +]
    • Addeddelete_page
    • Changededit_page10 fields changed
      • addedInput schema / properties / bannerImage
        Added value: +{
        +  "description": "Banner image URL; an empty string removes it",
        +  "type": "string"
        +}
      • addedInput schema / properties / baseVersion
        Added value: +{
        +  "description": "The `version` get_page returned, which this edit starts from",
        +  "type": "string"
        +}
      • addedInput schema / properties / content / items / additionalProperties
        Added value: +true
      • addedInput schema / properties / content / items / description
        Added value: +"A typed block with a unique `id` (UUID) and a `type`. A `content` block carries semantic HTML in `text`; an `infobox` carries nested `blocks`. For any other type, copy the shape of one already on a page: get_page with `blocks: true` (or GET /api/wiki/{path}) returns blocks as stored."
      • addedInput schema / properties / content / items / properties
        Added value: +{
        +  "blocks": {
        +    "description": "Nested leaf blocks (infobox)",
        +    "items": {
        +      "type": "object"
        +    },
        +    "type": "array"
        +  },
        +  "id": {
        +    "format": "uuid",
        +    "type": "string"
        +  },
        +  "metric": {
        +    "description": "The series charted (networkChart)",
        +    "enum": [
        +      "transactions",
        +      "activeAccounts",
        +      "newAccounts",
        +      "newComponents",
        +      "newResources",
        +      "nftsMinted",
        +      "feesXrd",
        +      "burnedXrd",
        +      "royaltiesXrd"
        +    ],
        +    "type": "string"
        +  },
        +  "pageIds": {
        +    "description": "Page ids in display order (pageList): the `id` get_page returns with `blocks: true`",
        +    "items": {
        +      "type": "string"
        +    },
        +    "type": "array"
        +  },
        +  "text": {
        +    "description": "Semantic HTML (content, banner)",
        +    "type": "string"
        +  },
        +  "type": {
        +    "enum": [
        +      "content",
        +      "banner",
        +      "columns",
        +      "recentPages",
        +      "pageList",
        +      "assetPrice",
        +      "networkChart",
        +      "rssFeed",
        +      "codeTabs",
        +      "linkGrid",
        +      "tipJar",
        +      "references",
        +      "infobox",
        +      "stats",
        +      "testimonial"
        +    ],
        +    "type": "string"
        +  }
        +}
      • addedInput schema / properties / content / items / required
        Added value: +[
        +  "id",
        +  "type"
        +]
      • addedInput schema / properties / editorIds
        Added value: +{
        +  "description": "User ids who may co-edit an author-only page. Applied only when the author sends it.",
        +  "type": "array"
        +}
      • changedInput schema / properties / metadata / description
        Previous value: -"Replacement metadata object"New value: +"Replacement metadata object: the whole `metadata` get_page returns with `blocks: true`, revised"
      • addedInput schema / properties / newSlug
        Added value: +{
        +  "description": "Move the page to this slug (an article only)",
        +  "type": "string"
        +}
      • changedInput schema / required
        Previous value: -[
        -  "tagPath",
        -  "slug"
        -]New value: +[
        +  "tagPath",
        +  "slug",
        +  "baseVersion"
        +]
    • Changedget_full_corpus3 fields changed
      • addedInput schema / properties / maxChars / maximum
        Added value: +1000000
      • addedInput schema / properties / maxChars / minimum
        Added value: +1000
      • addedInput schema / properties / skip / minimum
        Added value: +0
    • Changedget_ideas_board1 field changed
      • changedInput schema / properties / category / description
        Previous value: -"Filter to one category: Governance, Protocol, Tooling, Ecosystem, or Community"New value: +"Filter to one category: Protocol, Ecosystem, Tooling, Community, Governance"
    • Changedget_page1 field changed
      • addedInput schema / properties / blocks
        Added value: +{
        +  "description": "Return the stored blocks rather than prose, for an edit",
        +  "type": "boolean"
        +}
    • Addedget_page_history
    • Changedget_pages2 fields changed
      • addedInput schema / properties / maxChars / maximum
        Added value: +1000000
      • addedInput schema / properties / maxChars / minimum
        Added value: +1000
    • Changedget_recent_changes4 fields changed
      • addedInput schema / properties / days / maximum
        Added value: +30
      • addedInput schema / properties / days / minimum
        Added value: +1
      • addedInput schema / properties / limit / maximum
        Added value: +50
      • addedInput schema / properties / limit / minimum
        Added value: +1
    • Changedlist_pages3 fields changed
      • addedInput schema / properties / page / minimum
        Added value: +1
      • addedInput schema / properties / pageSize / maximum
        Added value: +100
      • addedInput schema / properties / pageSize / minimum
        Added value: +1
    • Addedrestore_revision
    • Changedsearch_wiki3 fields changed
      • addedInput schema / properties / page / minimum
        Added value: +1
      • addedInput schema / properties / pageSize / maximum
        Added value: +50
      • addedInput schema / properties / pageSize / minimum
        Added value: +1
    • Addedupload_image
  5. 6 tool updates
    • Changedget_full_corpus3 fields changed
      • changedInput schema / properties / sizeOnly / description
        Previous value: -"Return sizes and breakdowns only, no document. Do this before the first real pull."New value: +"Sizes and breakdowns only, no document. Do this before the first real pull."
      • changedInput schema / properties / skip / description
        Previous value: -"Resume from this page index — pass the `nextSkip` from the previous truncated call (default 0)"New value: +"Resume from this page index: the `nextSkip` of the previous truncated call (default 0)"
      • changedInput schema / properties / tagPath / description
        Previous value: -"Restrict to one branch and its descendants, e.g. \"contents/tech\". Omit for everything."New value: +"One branch and its descendants. Omit for everything."
    • Changedget_page3 fields changed
      • changedInput schema / properties / path / description
        Previous value: -"The whole path in one string, e.g. \"contents/tech/core-concepts/utxo-model\" — the form every listing returns as `url`. Use this or the tagPath/slug pair."New value: +"The page's whole path, e.g. \"developers/scrypto/blueprints\". Preferred over tagPath + slug."
      • changedInput schema / properties / slug / description
        Previous value: -"Page slug (e.g. \"utxo-model\"). Ignored when `path` is set."New value: +"Page slug. Ignored when `path` is set."
      • changedInput schema / properties / tagPath / description
        Previous value: -"Tag path (e.g. \"contents/tech/core-concepts\"). Ignored when `path` is set."New value: +"Tag path only (\"\" for a top-level page). Ignored when `path` is set."
    • Addedget_pages
    • Changedget_recent_changes2 fields changed
      • changedInput schema / properties / days / description
        Previous value: -"Look back N days (default 7, max 30)"New value: +"Look back this many days (default 7, max 30)"
      • changedInput schema / properties / limit / description
        Previous value: -"Max results (default 20, max 50)"New value: +"Most pages returned (default 20, max 50)"
    • Changedlist_pages3 fields changed
      • changedInput schema / properties / page / description
        Previous value: -"Page number (default 1)"New value: +"1-based page number (default 1)"
      • changedInput schema / properties / sort / description
        Previous value: -"Sort order (default \"updatedAt\")"New value: +"Sort order (default \"updatedAt\", newest first)"
      • changedInput schema / properties / tagPath / description
        Previous value: -"Filter by tag path prefix (e.g. \"developers\")"New value: +"The branch to list, e.g. a path from get_categories. Includes its descendants."
    • Changedsearch_wiki3 fields changed
      • changedInput schema / properties / page / description
        Previous value: -"Page number (default 1)"New value: +"1-based page number (default 1)"
      • changedInput schema / properties / query / description
        Previous value: -"Search term (matched against page titles and body text)"New value: +"Search term, matched against page titles and body text"
      • changedInput schema / properties / tagPath / description
        Previous value: -"Limit results to a tag path (e.g. \"contents/tech/core-concepts\")"New value: +"Only pages at this tag path, e.g. a path from get_categories"
  6. 1 tool update
    • Changededit_page1 field changed
      • addedInput schema / properties / verified
        Added value: +{
        +  "description": "True when you checked the page's facts against its sources: stamps lastVerifiedAt. Send it alone to stamp without an edit.",
        +  "type": "boolean"
        +}
  7. 1 tool update
    • Addedget_network_activity
  8. 1 tool update
    • Changedget_page2 fields changed
      • changedInput schema / properties / slug / description
        Previous value: -"Page slug (e.g. \"utxo-model\")"New value: +"Page slug (e.g. \"utxo-model\"). Ignored when `path` is set."
      • changedInput schema / properties / tagPath / description
        Previous value: -"Tag path (e.g. \"contents/tech/core-concepts\")"New value: +"Tag path (e.g. \"contents/tech/core-concepts\"). Ignored when `path` is set."
  9. 2 tool updates
    • Changedget_full_corpus4 fields changed
      • addedInput schema / properties / maxChars
        Added value: +{
        +  "description": "Character budget for `document` (default 200000, max 1000000)",
        +  "type": "number"
        +}
      • addedInput schema / properties / sizeOnly
        Added value: +{
        +  "description": "Return sizes and breakdowns only, no document. Do this before the first real pull.",
        +  "type": "boolean"
        +}
      • addedInput schema / properties / skip
        Added value: +{
        +  "description": "Resume from this page index — pass the `nextSkip` from the previous truncated call (default 0)",
        +  "type": "number"
        +}
      • addedInput schema / properties / tagPath
        Added value: +{
        +  "description": "Restrict to one branch and its descendants, e.g. \"contents/tech\". Omit for everything.",
        +  "type": "string"
        +}
    • Changedget_page3 fields changed
      • addedInput schema / properties / path
        Added value: +{
        +  "description": "The whole path in one string, e.g. \"contents/tech/core-concepts/utxo-model\" — the form every listing returns as `url`. Use this or the tagPath/slug pair.",
        +  "type": "string"
        +}
      • addedInput schema / requireOneOf
        Added value: +[
        +  "path",
        +  "slug"
        +]
      • removedInput schema / required
        Removed value: -[
        -  "tagPath",
        -  "slug"
        -]
  10. 2 tool updates
    • Addedget_challenge
    • Addedlogin
  11. 1 tool update
    • Changedsearch_wiki1 field changed
      • changedInput schema / properties / query / description
        Previous value: -"Search term (matched against page titles)"New value: +"Search term (matched against page titles and body text)"
  12. 9 tool updates
    • First observedcreate_page
    • First observededit_page
    • First observedget_categories
    • First observedget_full_corpus
    • First observedget_ideas_board
    • First observedget_page
    • First observedget_recent_changes
    • First observedlist_pages
    • First observedsearch_wiki

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    A
    maintenance
    Enables MCP-capable agents to author, query, and maintain a self-hosted wiki through typed tools backed by SQLite, including full-text search, revisions, links, tags, media, and correction work queues. It supports configurable read, author, and admin tool surfaces for creating, updating, deleting, reviving, and section-editing pages.
    1
    MIT
  • A
    license
    C
    quality
    C
    maintenance
    A persistent, cross-referenced engineering knowledge base for AI agents, with MCP tools for wiki knowledge, agent runtime, and repository context. Preserves sources and citations, surfaces knowledge-quality issues, and PIN-gates private scopes and write/admin operations.
    37
    3
    MIT
  • A
    license
    A
    quality
    A
    maintenance
    Lets AI agents from any machine list, read, search, write, edit, move and link markdown pages and store files alongside them, all in a shared wiki. People can then see what the agents know through a web app showing the link graph, every page, and the history of who changed what.
    16
    4
    AGPL 3.0
Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources