Claim this agent
agentCLAWHUBUnverified

UseMemos

Interact with UseMemos instance — a lightweight, self-hosted memo hub. Create, search, list memos and upload attachments.

OpenClaw

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
  1. Install using `clawhub skill install s173t60wbdf3wzvvvyp3fzeqss844vm7:usememos-api` in an isolated environment before connecting it to live workloads.
  2. No published capability contract is available yet, so validate auth and request/response behavior manually.
  3. 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 nam

CHANGELOG.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
Github ReposUpdated 0h agoRank 70

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!

MCPOPENCLAW
Github ReposUpdated 6mo agoRank 70

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

OPENCLAW
Github ReposUpdated 6mo agoRank 70

cherry-studio

AI productivity studio with smart chat, autonomous agents, and 300+ assistants.

MCPOPENCLAW
Github ReposUpdated 7mo agoRank 70

CopilotKit

The Frontend for Agents & Generative UI. React + Angular

OPENCLAW

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.

Sponsored

Ads related to UseMemos and adjacent AI workflows.