MCP tools
/mcp speaks the Model Context Protocol over streamable HTTP, behind OAuth. A tool the token’s
scopes do not reach is absent from tools/list, not refused when it is called, and a
resource command that needs xixo:resources:command is left out of that tool’s schema
in the same way. A token carrying xixo:mcp:call also sees the tools of every MCP
server attached as a resource, under that server’s own names.
Generated from the code by ./dev reference. CI fails when this page and the code disagree.
| Tool | Needs |
|---|---|
search |
xixo:catalog:read |
feed |
xixo:catalog:read |
connect |
xixo:catalog:write |
resource |
xixo:resources:read |
search
Section titled “search”Needs xixo:catalog:read.
Search the whole catalog at once — every resource that has been synced, not one provider at a time. Matches titles, keys, paths, tags and text drawn out by analysis, and finds the passage inside a long document that means what was asked; a result found that way carries the passage and where it starts. Omit the query to list the most recent feeds of a type.
| Argument | Type | Required | Description |
|---|---|---|---|
query |
string | Words or a question. Matches the words, and what they mean. | |
type |
string | Leave it off to search everything. Restricts to one type: xixo:file, xixo:note, xixo:address, xixo:tag, xixo:mime. | |
limit |
integer, 1–200 |
Needs xixo:catalog:read.
One feed: a part of its text, or with find the passages that answer what was asked, then an outline of where each sheet or section starts, everything known about it, every place it lives, and what analysis drew out of each. Read a table or a section whole, from where the outline says it starts, before counting or adding anything up. With do it also acts: note it, rename it, analyze it again, set how long it lasts, or place a file that is staged and waiting for somewhere to live. A feed is a reference, not the bytes; the originals stay in the resources they came from.
| Argument | Type | Required | Description |
|---|---|---|---|
id |
string | The feed’s id, as returned by search. | |
key |
string | An address, as /buy, instead of an id. | |
do |
string, one of get note rename analyze create place last |
What to do. Defaults to get. | |
type |
string | For create: xixo:note, xixo:address or xixo:tag. | |
title |
string | ||
note |
string | For note: what to write about it. | |
prompt |
string | For create of a xixo:address: what it should find. | |
resource |
string | For place: the key of the resource to store it in. | |
reason |
string | For place: why it belongs there, in one sentence. | |
from |
integer | For get: where in its text to start reading, as a character offset. Each get returns up to 6000 characters and says where the next part starts. | |
find |
string | For get: what to look for in its text, in words or as a question. Instead of a part of the text, get returns the passages that mention those words or mean what was asked, each with where it starts, so a long document can be searched without reading all of it. | |
lasts |
string | For create and last: “forever”, or how many days it lasts before it is forgotten. What is made while answering a question lasts 30 days unless this says otherwise. |
connect
Section titled “connect”Needs xixo:catalog:write.
Connect two feeds, or sever the connection. A connection is symmetric and carries no direction — what it means is read from the two things joined. Connecting a document to a tag is how it is filed; connecting it to another document is how they are related.
| Argument | Type | Required | Description |
|---|---|---|---|
a |
string | yes | One feed’s id. |
b |
string | The other feed’s id. Leave it off to name a tag instead. | |
tag |
string | The name of the tag to file a under. It is made if it does not exist yet. | |
connected |
boolean | False severs the connection instead of making it. Defaults to true. |
resource
Section titled “resource”Needs xixo:resources:read.
Ask a place to do something. A resource is an instance — “my B2 bucket” — of a type such as s3, and each type accepts its own commands; describe tells you which. Called with no key it lists the places there are. Some places reach the web: one that can search takes do=search with input {“query”: “…”}, and one that can fetch reads a page with do=get and input {“url”: “https://…”}, and one that serves weather takes do=forecast with input {“place”: “Toronto”}, and one that knows places takes do=find with input {“query”: “…”}, do=reverse with a latitude and longitude, or do=nearby with a kind such as cafe and a place. One that takes feedback takes do=ask with input {“question”: “…”, “context”: “…”, “wanted”: “…”}: use it for anything no tool here could answer or do, say what would have helped, and carry on; it always answers that it cannot. do=types lists what can be attached and the settings each type takes, and do=attach with a new key and input {“type”: “…”, “settings”: {…}, “via”: “…”} attaches one, reached through the transport named in via if there is one. do=change with input {“name”: “…”, “settings”: {…}, “via”: “…”} changes one, keeping every setting it is not given, and an empty via reaches it directly. do=default makes one the default for what it serves, storage or inference, named with input {“for”: “…”} when it serves both. Credentials never travel through here: a type that needs a password, a token, or a key is attached or changed in the app, and one that connects through masks comes back with the address a person opens to connect it.
| Argument | Type | Required | Description |
|---|---|---|---|
key |
string | ||
do |
string, one of list types describe runs get parameters search forecast find reverse nearby ask attach change default check sync keep export cancel put snapshot |
||
input |
object |
Resource commands
Section titled “Resource commands”What resource accepts as do. list, types, attach, change, default, describe,
check, runs, sync, export and cancel are answered by xixo itself; the rest are
passed to the resource, and a type accepts only the ones its
reference entry lists. A command that starts a run counts against
the token’s hourly run budget. attach and change refuse any field that holds a
credential, and a type that always needs one is attached in the app. change keeps every
setting it is not given.
| Command | Needs | Starts a run |
|---|---|---|
list |
xixo:resources:read |
|
types |
xixo:resources:read |
|
describe |
xixo:resources:read |
|
runs |
xixo:resources:read |
|
get |
xixo:resources:read |
|
parameters |
xixo:resources:read |
|
search |
xixo:resources:read and xixo:web:read on a search resource |
|
forecast |
xixo:resources:read |
|
find |
xixo:resources:read |
|
reverse |
xixo:resources:read |
|
nearby |
xixo:resources:read |
|
ask |
xixo:resources:read |
|
attach |
xixo:resources:read and xixo:resources:command |
|
change |
xixo:resources:read and xixo:resources:command |
|
default |
xixo:resources:read and xixo:resources:command |
|
check |
xixo:resources:read and xixo:resources:command |
|
sync |
xixo:resources:read and xixo:resources:command |
yes |
keep |
xixo:resources:read and xixo:resources:command |
|
export |
xixo:resources:read and xixo:resources:command |
yes |
cancel |
xixo:resources:read and xixo:resources:command |
|
put |
xixo:resources:read and xixo:resources:command |
|
snapshot |
xixo:resources:read and xixo:resources:command |