UseMemos
Interact with UseMemos instance — a lightweight, self-hosted memo hub. Create, search, list memos and upload attachments.
Rank
62
Safety
84
Downloads
2.7k
Updated
Oct 9, 2026
Version
1.0.3
Source
CLAWHUB
About
What it does, and when to use it.
Capability contract not published. No trust telemetry is available yet. 2.7K downloads reported by the source. Last updated 10/9/2026.
Avoid when
- Contract metadata is missing or unavailable for deterministic execution.
Risk flags: missing_or_unavailable_contract, trust_data_unavailable, schema_references_missing
Public facts
Every fact links back to the source it came from.
- Vendor
- Clawhubvendor · observed Oct 9, 2026
- Protocol compatibility
- OpenClawcompatibility · observed Oct 9, 2026
- Adoption signal
- 2.7K downloadsadoption · observed Oct 9, 2026
- Latest release
- 1.0.3release · observed Apr 3, 2026
- Handshake status
- UNKNOWNsecurity
Install and run
Setup complexity: low.
clawhub skill install s173t60wbdf3wzvvvyp3fzeqss844vm7:usememos-api- Install using `clawhub skill install s173t60wbdf3wzvvvyp3fzeqss844vm7:usememos-api` in an isolated environment before connecting it to live workloads.
- No published capability contract is available yet, so validate auth and request/response behavior manually.
- Review the upstream CLAWHUB listing at https://clawhub.ai/minstn/usememos-api before using production credentials.
Contract: missing
curl -s "https://www.xpersona.co/api/v1/agents/clawhub-minstn-usememos-api/snapshot"
Documentation
CLAWHUB
46,869 characters of source documentation, loaded on request.
Extracted files
5 files captured from the source.
SKILL.md
---
name: usememos-api
version: "1.0.3"
description: Interact with UseMemos instance — a lightweight, self-hosted memo hub. Create, search, list memos and upload attachments.
tags: ["memos", "notes", "self-hosted", "knowledge-base", "attachments"]
homepage: https://github.com/minstn/usememos
source: https://github.com/minstn/usememos
metadata:
openclaw:
requires:
env:
- USEMEMOS_URL
- USEMEMOS_TOKEN
bins:
- python3
primaryEnv: USEMEMOS_TOKEN
---
# UseMemos
## Setup
Create a `.env` file in the skill directory (`skills/usememos/.env`):
```
USEMEMOS_URL=http://192.168.0.157:5230
USEMEMOS_TOKEN=your_access_token_here
```
Get your ```USEMEMOS_TOKEN``` from UseMemos instance, login and go to: **Settings > My Account > Access Tokens**, create one there, do not forget to assign expiration (i use **Never** to avoid troubles, but hey there are also arguments against that)
**Note:** All scripts automatically load the `.env` file from the skill directory. No need to export variables manually.
## Scripts
| Script | Usage | Description |
|--------|-------|-------------|
| `create_memo.py` | `<content> [visibility]` | Create a memo (visibility: PRIVATE/PROTECTED/PUBLIC) |
| `list_memos.py` | `[limit] [tag]` | List recent memos (default: 10) |
| `search_memos.py` | `<query> [limit]` | Search memos by content |
| `upload_attachment.py` | `<filepath> [filename] [type]` | Upload a file attachment |
| `upload_and_link_attachment.py` | `<memo_id> <filepath> [filename] [type]` | Upload and link attachment to a memo |
| `memo_comments.py` | `<list\|add\|delete> [args...]` | Manage comments on a memo |
All scripts are in `scripts/` and run with `python3 scripts/<script>`.
## Examples
```bash
# Create a memo with tags
python3 scripts/create_memo.py "Meeting notes from standup #work"
# List recent memos
python3 scripts/list_memos.py 5
# Search memos
python3 scripts/search_memos.py "website redesign"
# Upload attachment standalone
python3 scripts/upload_attachment.py photo.jpg "sale_photo.jpg" "image/jpeg"
# Create memo then attach a file
python3 scripts/create_memo.py "Sale: Stromer Charger #eBike #income"
# Use the memo ID from output:
python3 scripts/upload_and_link_attachment.py <memo_id> charger_photo.jpg
# Add a comment to a memo
python3 scripts/memo_comments.py add <memo_id> "Looks great!"
# List comments on a memo
python3 scripts/memo_comments.py list <memo_id>
# Delete a comment
python3 scripts/memo_comments.py delete <comment_id>
```
## Notes
- Memo IDs are short IDs like `3UZ7uBbHsLEAwdYE5HKhjd` (not `memos/3UZ7uBbHsLEAwdYE5HKhjd`)
- Tags use `#tag` syntax inline in memo content
- Default MIME type for attachments is `image/jpeg`; pass the type explicitly for other files. Normally this will be done automatically by openclaw, but sometimes will require some tweaking/
## API Reference
See [references/api.md](references/api.md) for endpoint documentation.README.md
# UseMemos
An [OpenClaw](https://openclaw.ai) skill for interacting with [UseMemos](https://usememos.com) — a lightweight, self-hosted memo hub.
Create, search, list memos and upload attachments through your AI agent.
## Installation
### From ClawHub
```bash
clawhub install usememos
```
### Manual
Clone this repo into your OpenClaw skills directory:
```bash
git clone https://github.com/minstn/usememos.git ~/.openclaw/skills/usememos
```
## Setup
1. Copy the example environment file and fill in your values:
```bash
cp .env.example .env
```
2. Edit `.env` with your UseMemos instance URL and access token:
```
USEMEMOS_URL=http://localhost:5230
USEMEMOS_TOKEN=your_access_token_here
```
To get an access token, go to **Settings > My Account** in your UseMemos instance.
## Usage
### Create a memo
```bash
python3 scripts/create_memo.py "Buy milk and eggs #shopping"
# Created memo [3UZ7uBbHsLEAwdYE5HKhjd]
```
Visibility options: `PRIVATE` (default), `PROTECTED`, `PUBLIC`
```bash
python3 scripts/create_memo.py "Public announcement" PUBLIC
```
### List recent memos
```bash
python3 scripts/list_memos.py 5
# [abc123] Buy milk and eggs #shopping...
# [def456] Meeting notes from standup #work...
```
### Search memos
```bash
python3 scripts/search_memos.py "project idea" 10
# [xyz789] New project idea: build a CLI for...
```
### Attachments
**Upload a standalone attachment:**
```bash
python3 scripts/upload_attachment.py photo.jpg "sale_photo.jpg" "image/jpeg"
# Uploaded [abc123] sale_photo.jpg (45678 bytes)
```
**Create a memo with an attachment (two-step):**
```bash
# 1. Create the memo
python3 scripts/create_memo.py "Sale: Charger for 240 CHF #income"
# Created memo [memo123]
# 2. Upload and link in one shot
python3 scripts/upload_and_link_attachment.py memo123 charger.jpg
# Uploaded [attachments/att456] (45678 bytes)
# Linked to memo [memo123]
```
**Attach multiple files to the same memo:**
```bash
python3 scripts/create_memo.py "Bike parts lot — 3 photos #inventory"
# Created memo [memo789]
python3 scripts/upload_and_link_attachment.py memo789 front.jpg
python3 scripts/upload_and_link_attachment.py memo789 side.jpg
python3 scripts/upload_and_link_attachment.py memo789 detail.jpg
```
**Upload a non-image file (PDF, text, etc.):**
```bash
python3 scripts/upload_attachment.py invoice.pdf "invoice_feb.pdf" "application/pdf"
python3 scripts/upload_and_link_attachment.py memo123 notes.txt "meeting_notes.txt" "text/plain"
```
**Upload first, link later:**
```bash
# Upload without linking to any memo
python3 scripts/upload_attachment.py receipt.jpg
# Uploaded [att999] receipt.jpg (12345 bytes)
# Link it to a memo later using curl
curl -X PATCH "${USEMEMOS_URL}/api/v1/memos/<memo_id>" \
-H "Authorization: Bearer ${USEMEMOS_TOKEN}" \
-H "Content-Type: application/json" \
-d '{"attachments": [{"name": "attachments/att999", "filename": "receipt.jpg", "type": "image/jpeg"}]}'
```
### Comments
**Add a comment to a memo:**
```b_meta.json
{
"ownerId": "kn7d4v0hee586effw0rf4ztnax81wzds",
"slug": "usememos-api",
"version": "1.0.3",
"publishedAt": 1775209773525
}references/api.md
# UseMemos API Reference
Base URL: `https://your-memos-instance.com/api/v1`
Authentication: Bearer token in header
```
Authorization: Bearer <your-access-token>
```
## Endpoints
### Memos
**List Memos**
```
GET /api/v1/memos?pageSize={limit}
```
Query params:
- `page` (int): Page number, default 0
- `pageSize` (int): Items per page, default 10
- `filter` (string): Filter query
Response:
```json
{
"memos": [...],
"nextPageToken": "..."
}
```
**Get Memo**
```
GET /api/v1/memos/{id}
```
Note: Use the short ID, not the full name (e.g., `3UZ7uBbHsLEAwdYE5HKhjd`, not `memos/3UZ7uBbHsLEAwdYE5HKhjd`)
**Create Memo**
```
POST /api/v1/memos
```
Body:
```json
{
"content": "string",
"visibility": "PRIVATE | PROTECTED | PUBLIC"
}
```
**Update Memo**
```
PATCH /api/v1/memos/{id}
```
Body:
```json
{
"content": "string",
"visibility": "PRIVATE | PROTECTED | PUBLIC",
"attachments": [
{
"name": "attachments/{attachment_id}",
"filename": "string",
"type": "image/jpeg"
}
]
}
```
**Delete Memo**
```
DELETE /api/v1/memos/{id}
```
### Comments
Comments are memos linked to a parent memo.
**List Comments**
```
GET /api/v1/memos/{id}/comments
```
Response:
```json
{
"memos": [...],
"nextPageToken": "...",
"totalSize": 0
}
```
**Create Comment**
```
POST /api/v1/memos/{id}/comments
```
Body:
```json
{
"content": "string",
"visibility": "PRIVATE | PROTECTED | PUBLIC"
}
```
Response: A memo object representing the created comment.
**Delete Comment**
Use the standard delete memo endpoint with the comment's memo ID:
```
DELETE /api/v1/memos/{comment_id}
```
### Attachments
**Create Attachment**
```
POST /api/v1/attachments
```
Body:
```json
{
"filename": "photo.jpg",
"content": "base64-encoded-content",
"type": "image/jpeg"
}
```
Response:
```json
{
"name": "attachments/xyz",
"createTime": "2026-01-01T00:00:00Z",
"filename": "photo.jpg",
"content": "",
"externalLink": "",
"type": "image/jpeg",
"size": "12345"
}
```
**Get Attachment**
```
GET /api/v1/attachments/{id}
```
**Delete Attachment**
```
DELETE /api/v1/attachments/{id}
```
### Tags
**List Tags**
```
GET /api/v1/tags
```
### Users
**Get Current User**
```
GET /api/v1/users/me
```
## Response Format
Standard memo object:
```json
{
"name": "memos/abc123",
"state": "NORMAL",
"creator": "users/1",
"createTime": "2026-01-01T00:00:00Z",
"updateTime": "2026-01-01T00:00:00Z",
"displayTime": "2026-01-01T00:00:00Z",
"content": "Memo content here",
"visibility": "PRIVATE",
"pinned": false,
"attachments": [],
"relations": [],
"tags": [],
"property": {...}
}
```
Standard attachment object:
```json
{
"name": "attachments/xyz",
"createTime": "2026-01-01T00:00:00Z",
"filename": "photo.jpg",
"content": "",
"externalLink": "",
"type": "image/jpeg",
"size": "0",
"memo": "memos/abc"
}
```
## Important Notes
- Memo IDs: Use the short ID in API calls (e.g., `3UZ7uBbHsLEAwdYE5HKhjd`), not the full namCHANGELOG.md
# Changelog ## 1.0.2 (2026-03-06) ### Added - `memo_comments.py` script to list, add, and delete comments on memos - Comments API documentation in references/api.md ### Fixed - Upload scripts now validate attachment size > 0 to catch silent upload failures - `upload_and_link_attachment.py` accepts full resource names (`memos/...`) by stripping the prefix automatically ## 1.0.1 (2026-03-05) ### Fixed - **Attachment linking bug**: uploading multiple images to a memo replaced all previous attachments instead of appending — only the last image survived. The PATCH now fetches existing attachments first and appends the new one. ### Added - Integration tests for image uploads (1 PNG, 2 PNGs, 1 JPG, 3 JPGs) that run against a live UseMemos instance using the actual scripts - `package.sh` script for packaging the skill for clawhub.ai publishing ## 1.0.0 (2026-02-24) Initial release. - Create memos with visibility control and inline `#tag` support - List recent memos with optional limit and tag filter - Search memos by content keyword - Upload file attachments (base64-encoded via API) - Upload and link attachments to existing memos in one step - API reference documentation for UseMemos v1 endpoints
AionUi
Free, local, open-source 24/7 Cowork app and OpenClaw for Gemini CLI, Claude Code, Codex, OpenCode, Qwen Code, Goose CLI, Auggie, and more | 🌟 Star if you like it!
activepieces
AI Agents & MCPs & AI Workflow Automation • (~400 MCP servers for AI agents) • AI Automation / AI Agent with MCPs • AI Workflows & AI Agents • MCPs for AI Agents
cherry-studio
AI productivity studio with smart chat, autonomous agents, and 300+ assistants.
CopilotKit
The Frontend for Agents & Generative UI. React + Angular
Machine-readable data
The same record, as JSON, for agents and crawlers.
{
"facts": [
{
"factKey": "vendor",
"category": "vendor",
"label": "Vendor",
"value": "Clawhub",
"href": "https://clawhub.ai/minstn/skills/usememos-api",
"sourceUrl": "https://clawhub.ai/minstn/skills/usememos-api",
"sourceType": "profile",
"confidence": "medium",
"observedAt": "2026-10-09T12:06:02.324Z",
"isPublic": true
},
{
"factKey": "protocols",
"category": "compatibility",
"label": "Protocol compatibility",
"value": "OpenClaw",
"href": "https://www.xpersona.co/api/v1/agents/clawhub-minstn-usememos-api/contract",
"sourceUrl": "https://www.xpersona.co/api/v1/agents/clawhub-minstn-usememos-api/contract",
"sourceType": "contract",
"confidence": "medium",
"observedAt": "2026-10-09T12:06:02.324Z",
"isPublic": true
},
{
"factKey": "traction",
"category": "adoption",
"label": "Adoption signal",
"value": "2.7K downloads",
"href": "https://clawhub.ai/minstn/usememos-api",
"sourceUrl": "https://clawhub.ai/minstn/usememos-api",
"sourceType": "profile",
"confidence": "medium",
"observedAt": "2026-10-09T12:06:02.324Z",
"isPublic": true
},
{
"factKey": "latest_release",
"category": "release",
"label": "Latest release",
"value": "1.0.3",
"href": "https://clawhub.ai/minstn/usememos-api",
"sourceUrl": "https://clawhub.ai/minstn/usememos-api",
"sourceType": "release",
"confidence": "medium",
"observedAt": "2026-04-03T09:49:33.525Z",
"isPublic": true
},
{
"factKey": "handshake_status",
"category": "security",
"label": "Handshake status",
"value": "UNKNOWN",
"href": "https://www.xpersona.co/api/v1/agents/clawhub-minstn-usememos-api/trust",
"sourceUrl": "https://www.xpersona.co/api/v1/agents/clawhub-minstn-usememos-api/trust",
"sourceType": "trust",
"confidence": "medium",
"observedAt": null,
"isPublic": true
}
],
"events": [
{
"eventType": "release",
"title": "Release 1.0.3",
"description": "- Added scripts/load_env.py to automatically load environment variables from a .env file in the skill directory. - Updated setup instructions: scripts now read environment variables from the .env file; manual export is no longer required. - Revised documentation for improved clarity on configuration and token setup. - Minor improvements in usage notes.",
"href": "https://clawhub.ai/minstn/usememos-api",
"sourceUrl": "https://clawhub.ai/minstn/usememos-api",
"sourceType": "release",
"confidence": "medium",
"observedAt": "2026-04-03T09:49:33.525Z",
"isPublic": true
}
]
}Record generated Oct 9, 2026.
