feat(files): introduce upload_file tool for staging files and enhance save_file documentation
This commit is contained in:
49
README.md
49
README.md
@@ -41,7 +41,8 @@ A Go MCP server for capturing and retrieving thoughts, memory, and project conte
|
||||
| `recall_context` | Semantic + recency context block for injection |
|
||||
| `link_thoughts` | Create a typed relationship between thoughts |
|
||||
| `related_thoughts` | Explicit links + semantic neighbours |
|
||||
| `save_file` | Store a file (base64 or by resource URI) and optionally link it to a thought |
|
||||
| `upload_file` | Stage a file from a server-side path or base64 and get an `amcs://files/{id}` resource URI |
|
||||
| `save_file` | Store a file (base64 or resource URI) and optionally link it to a thought |
|
||||
| `load_file` | Retrieve a stored file by ID; returns metadata, base64 content, and an embedded MCP binary resource |
|
||||
| `list_files` | Browse stored files by thought, project, or kind |
|
||||
| `backfill_embeddings` | Generate missing embeddings for stored thoughts |
|
||||
@@ -185,7 +186,37 @@ Files can optionally be linked to a thought by passing `thought_id`, which also
|
||||
|
||||
### MCP tools
|
||||
|
||||
**Save via base64** (small files or when HTTP is not available):
|
||||
**Stage a file and get a URI** (`upload_file`) — preferred for large or binary files:
|
||||
|
||||
```json
|
||||
{
|
||||
"name": "diagram.png",
|
||||
"content_path": "/absolute/path/to/diagram.png"
|
||||
}
|
||||
```
|
||||
|
||||
Or with base64 for small files (≤10 MB):
|
||||
|
||||
```json
|
||||
{
|
||||
"name": "diagram.png",
|
||||
"content_base64": "<base64-payload>"
|
||||
}
|
||||
```
|
||||
|
||||
Returns `{"file": {...}, "uri": "amcs://files/<id>"}`. Pass `thought_id`/`project` to link immediately, or omit them and use the URI in a later `save_file` call.
|
||||
|
||||
**Link a staged file to a thought** (`save_file` with `content_uri`):
|
||||
|
||||
```json
|
||||
{
|
||||
"name": "meeting-notes.pdf",
|
||||
"thought_id": "optional-thought-uuid",
|
||||
"content_uri": "amcs://files/<id-from-upload_file>"
|
||||
}
|
||||
```
|
||||
|
||||
**Save small files inline** (`save_file` with `content_base64`, ≤10 MB):
|
||||
|
||||
```json
|
||||
{
|
||||
@@ -197,19 +228,7 @@ Files can optionally be linked to a thought by passing `thought_id`, which also
|
||||
}
|
||||
```
|
||||
|
||||
**Save via resource URI** (preferred for binary; avoids base64 overhead):
|
||||
|
||||
Upload the file binary via HTTP first (see below), then pass the returned URI to `save_file`:
|
||||
|
||||
```json
|
||||
{
|
||||
"name": "meeting-notes.pdf",
|
||||
"thought_id": "optional-thought-uuid",
|
||||
"content_uri": "amcs://files/<id-from-upload>"
|
||||
}
|
||||
```
|
||||
|
||||
`content_base64` and `content_uri` are mutually exclusive.
|
||||
`content_base64` and `content_uri` are mutually exclusive in both tools.
|
||||
|
||||
**Load a file** — returns metadata, base64 content, and an embedded MCP binary resource (`amcs://files/{id}`):
|
||||
|
||||
|
||||
Reference in New Issue
Block a user