Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
26dd8b0d34 | ||
|
|
a35fd1dcf2 |
2 changed files with 32 additions and 3 deletions
|
|
@ -8,17 +8,35 @@ a second stdio MCP server. Tools land as `mcp__matrix__<name>`:
|
||||||
|
|
||||||
### Messaging
|
### Messaging
|
||||||
|
|
||||||
|
**Unread guard**: `send_message`, `send_dm`, `send_file`, and
|
||||||
|
`send_reply` are all rejected if the room has unread messages — call
|
||||||
|
`read_room` then `mark_read` on the latest event before sending to a
|
||||||
|
room you haven't read yet.
|
||||||
|
|
||||||
- `send_message(room, body)` — send a markdown message; `room`
|
- `send_message(room, body)` — send a markdown message; `room`
|
||||||
accepts `!id:server` or `#alias:server`, daemon resolves either
|
accepts `!id:server` or `#alias:server`, daemon resolves either
|
||||||
- `send_dm(user_id, body)` — send a direct message to a matrix user
|
- `send_dm(user_id, body)` — open (or reuse) the DM room with
|
||||||
|
`user_id` and post `body` to it
|
||||||
- `send_reply(room, event_id, body)` — threaded reply to a specific
|
- `send_reply(room, event_id, body)` — threaded reply to a specific
|
||||||
event
|
event
|
||||||
- `send_reaction(room, event_id, key)` — react to a message with an
|
- `send_reaction(room, event_id, key)` — react to a message with an
|
||||||
emoji key
|
emoji key
|
||||||
|
- `send_file(room, path, caption?)` — upload a local file and post it
|
||||||
|
as a room attachment; MIME type is inferred from the file extension,
|
||||||
|
50 MiB cap; optional `caption` is sent as a follow-up text message
|
||||||
|
- `send_redact(room, event_id, reason?)` — redact (delete) a specific
|
||||||
|
event; works on your own events, redacting others' requires moderator
|
||||||
|
power level
|
||||||
|
|
||||||
### Reading
|
### Reading
|
||||||
|
|
||||||
- `read_room(room, limit?)` — recent timeline events
|
- `read_room(room, limit?)` — recent timeline events; media attachments
|
||||||
|
appear inline as `[file: name]`, `[image: name]`, `[audio: name]`,
|
||||||
|
or `[video: name]` markers — pass the event id to `download_file`
|
||||||
|
to retrieve the attachment
|
||||||
|
- `download_file(room, event_id, dest_path?)` — download a media
|
||||||
|
attachment from a message event to a local file and return its path;
|
||||||
|
pair with `read_room` which surfaces attachments as the markers above
|
||||||
- `list_rooms()` — enumerate joined rooms
|
- `list_rooms()` — enumerate joined rooms
|
||||||
(`{ id, canonical_alias, name, member_count }` per room)
|
(`{ id, canonical_alias, name, member_count }` per room)
|
||||||
- `list_room_members(room)` — members of a room
|
- `list_room_members(room)` — members of a room
|
||||||
|
|
|
||||||
|
|
@ -567,7 +567,18 @@ impl MatrixBridge {
|
||||||
room with `join_room`. Room references accept ids (!abc:server) \
|
room with `join_room`. Room references accept ids (!abc:server) \
|
||||||
or aliases (#name:server); user references use @user:server. Every \
|
or aliases (#name:server); user references use @user:server. Every \
|
||||||
tool takes an optional `account` (a name from the agent's matrix \
|
tool takes an optional `account` (a name from the agent's matrix \
|
||||||
accounts) — omit it to act as the primary account.")]
|
accounts) — omit it to act as the primary account. \
|
||||||
|
`send_file` uploads a local file and posts it as a room attachment \
|
||||||
|
(MIME inferred from extension, 50 MiB cap); `send_file` is rejected \
|
||||||
|
with a hint if the room has unread messages — read_room then mark_read \
|
||||||
|
first. `download_file` downloads an attachment from a message event \
|
||||||
|
to a local file and returns its path; pair with `read_room` which \
|
||||||
|
surfaces attachments as `[file: name]`, `[image: name]`, \
|
||||||
|
`[audio: name]`, `[video: name]` markers. \
|
||||||
|
IMPORTANT: `send_message`, `send_dm`, `send_file`, `send_reply` are \
|
||||||
|
all rejected if the room has unread messages — always call `read_room` \
|
||||||
|
then `mark_read` on the latest event before sending to a room you \
|
||||||
|
haven't read yet.")]
|
||||||
impl ServerHandler for MatrixBridge {}
|
impl ServerHandler for MatrixBridge {}
|
||||||
|
|
||||||
#[tokio::main]
|
#[tokio::main]
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue