# MCP tools reference

> Every tool Memrio exposes over MCP: browse, search_pages, get_page, and the write tools get_page_source, create_page, update_page, append_to_page.

Three read tools are always present. Four write tools appear only when “Can edit pages” is on for the agent. All tools return text content; JSON results are pretty-printed JSON strings.

## Read tools

### browse

List every page in the agent page set with its use-when instructions. Call this first — it is the catalog the agent picks from. No arguments.

**result**

```json
{
  "pages": [
    {
      "pageId": "pg_7f3a",
      "title": "Refund policy",
      "alwaysInclude": false,
      "useWhen": ["Use whenever a customer asks about refunds, returns, or chargebacks."]
    }
  ]
}
```

### search_pages

Keyword filter over the page set. Titles weigh more than body text. Returns up to 8 hits with a short excerpt. Prefer `browse` unless the set is large.

| Argument | Type | Required | Notes |
| --- | --- | --- | --- |
| query | string | yes | Keywords to search for |

### get_page

Return the packed page: title, instructions, content, attached file text, and any pages or files its instructions say to use. Fails if the page is not in the set.

| Argument | Type | Required | Notes |
| --- | --- | --- | --- |
| pageId | string | yes | From browse or search_pages |

## Write tools

> **Note:** Writes create a new version. If the agent may publish, the version goes live at once; otherwise it waits for a human reviewer. A page with a version already in review rejects further writes until it is approved or rejected.

### get_page_source

Editable registry markdown for a page, including drafts, plus title, tags, status, parent, path, and whether a version is in review. Read this before `update_page`.

| Argument | Type | Required | Notes |
| --- | --- | --- | --- |
| pageId | string | yes |  |

### create_page

Create a page. With `parentId` it nests under a page in the set; without, it becomes top-level and is added to the set automatically.

| Argument | Type | Required | Notes |
| --- | --- | --- | --- |
| title | string | yes | Max 200 chars |
| markdown | string | yes | Registry markdown body |
| parentId | string | no | A page id in this set |
| tags | string[] | no | Up to 20 |
| changeSummary | string | no | Shown to reviewers |

### update_page

Replace the whole body, title, or tags. Send the complete rewritten page — this is not a patch.

| Argument | Type | Required | Notes |
| --- | --- | --- | --- |
| pageId | string | yes |  |
| changeSummary | string | yes | One line |
| markdown | string | no | Complete new body |
| title | string | no |  |
| tags | string[] | no |  |

### append_to_page

Add blocks to the end of a page without touching existing content. Good for logging a decision or adding an example.

| Argument | Type | Required | Notes |
| --- | --- | --- | --- |
| pageId | string | yes |  |
| markdown | string | yes | Blocks to append |
| changeSummary | string | yes | One line |

**write result**

```json
{
  "pageId": "pg_7f3a",
  "title": "Refund policy",
  "versionNumber": 4,
  "status": "in_review",
  "message": "Submitted as v4 and waiting for a human to approve it."
}
```

Source: https://memrio.ai/docs/tools
