Skip to content

ssntpl/openclaw-otper

Repository files navigation

openclaw-otper

npm version License

OpenClaw plugin for Otper — exposes Otper boards, lists, cards, labels, and comments as agent tools. Wraps @ssntpl/otper-cli so an LLM agent can search boards, inspect cards, create/update/move cards, manage labels, and post or react to comments without leaving the chat.

Install

openclaw plugins install clawhub:@ssntpl/openclaw-otper

Or from npm directly:

openclaw plugins install npm:@ssntpl/openclaw-otper

Configure

Generate a personal access token at https://otper.com/settings/tokens, then provide it via any one of these (resolved in order):

1. Plugin config:

{
  "plugins": {
    "openclaw-otper": {
      "token": "238|...",
      "baseUrl": "https://otper.com"
    }
  }
}

2. Environment variables:

export OTPER_TOKEN="238|..."
export OTPER_BASE_URL="https://otper.com"   # optional, defaults to https://otper.com

3. Reuse otper-cli's saved login:

npm install -g @ssntpl/otper-cli
otper auth:login            # writes ~/.otper-cli/default/config.json

If you already use otper-cli, no extra setup is needed — the plugin reads the same config file.

Tools

31 tools across 8 areas. Tool names use the otper_ prefix.

Identity & search

Tool Description
otper_me Profile of the user the configured token authenticates as.
otper_search_users Search users by name, email, or username.
otper_search_boards Search boards by name.

Boards

Tool Description
otper_show_board Get a board by id with its lists and labels.
otper_show_board_by_slug Get a board by team-slug + board-slug.

Lists

Tool Description
otper_list_lists All lists on a board.
otper_show_list A list with its cards (paginated).
otper_create_list Create a list on a board.
otper_rename_list Update name/description/color/limits.
otper_reorder_list Move a list relative to another.

Cards

Tool Description
otper_list_cards Cards in a list with the same labels:bug;assignee:alice filter syntax as the Otper UI.
otper_show_card A single card by id.
otper_show_card_by_slug A single card by slug (e.g. from a URL).
otper_create_card New card in a list.
otper_update_card Update title, description, due date, etc.
otper_move_card Move to another list, optionally above a specific card.
otper_archive_card Archive (or unarchive) — reversible alternative to delete.
otper_assign_card / otper_unassign_card Add/remove user assignees.
otper_label_card / otper_unlabel_card Attach/detach labels.

Comments

Tool Description
otper_list_card_comments Up to 50 comments on a card, newest first.
otper_comment_on_card Add a comment, optionally as a reply.
otper_update_comment Edit an existing comment.
otper_react_to_comment Toggle a reaction (like, love, laugh, wow, sad, angry).

Labels

Tool Description
otper_list_labels Labels defined on a board.
otper_create_label Create a label on a board.
otper_update_label Update name, description, or color.

Teams & priorities

Tool Description
otper_show_team Team with members and visible boards.
otper_list_team_users Just the members of a team.
otper_my_priorities Today's priority cards for a user (defaults to authenticated user).

Excluded by design

Destructive deletions (card:delete, label:delete, comment:delete, list:delete) and high-impact admin operations (board:create) are not exposed to the agent. Use the otper-cli for those manually.

Filter syntax for otper_list_cards / otper_show_list

The search parameter mirrors the Otper UI exactly:

  • Free text → matches title, card number, assignee name, label name
    bug
    
  • Colon filters joined with ;
    labels:bug;assignee:alice;status:not completed
    due date:overdue
    due date:today,tomorrow,next week,not set
    
  • Card-number lookup
    #ENG123
    

Development

git clone git@github.com:ssntpl/openclaw-otper.git
cd openclaw-otper
npm install
npm run lint               # type-check
OTPER_TOKEN=... npx tsx -e "import('./index.ts').then(p => console.log(p.default.id))"

The plugin ships as raw TypeScript (no build step) — openclaw loads the source directly. Add a new tool by:

  1. Add the descriptor in the relevant tools/<area>.ts file
  2. Update this README's tool table
  3. Run npm run lint to verify types

Library

If you only need the underlying API and not the openclaw plugin shape, depend on @ssntpl/otper-cli directly:

import { OtperClient, cards } from "@ssntpl/otper-cli";
const client = new OtperClient({ baseUrl: "https://otper.com", token: "..." });
const card = await cards.getCard(client, "1234");

License

MIT © SSNTPL

About

OpenClaw plugin for Otper boards (https://otper.com) — exposes Otper as 31 agent tools.

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages