API v1

Connect with AnythingMCP

Turn the curated BennyBooks OpenAPI surface into MCP tools for Cursor, Claude, and custom agents.

Markdown version · llms.txt

AnythingMCP imports our OpenAPI spec and generates MCP tools. Enable only the curated set (~12 tools) — not every operation. See MCP tool design for why.

Agent-efficient by default

OpenAPI is enriched at https://bennybooks.com/openapi.json with when/when-not descriptions, x-mcp annotations, and list default limit=50. Config: config/anythingmcp-bennybooks.yaml.

Localhost vs cloud AnythingMCP

Cloud AnythingMCP cannot fetch http://localhost. Use a public tunnel (ngrok / Cloudflare Tunnel) as Base URL + OpenAPI URL, deploy BennyBooks, or run self-hosted AnythingMCP locally. setup-anythingmcp.sh refuses cloud+localhost combinations.

Prerequisites

  1. BennyBooks account with an organization
  2. API token from Settings → MCP access (read and/or propose-write)
  3. AnythingMCP account (anythingmcp.com)

Setup

  1. In AnythingMCP: Connectors → New Connector → REST
  2. Base URL: https://bennybooks.com
  3. OpenAPI URL: https://bennybooks.com/openapi.json
  4. Auth: Bearer token → your bb_live_… token
  5. Import the spec — tools are named by OpenAPI operationId
  6. Expose only the curated tools listed below (disable create_note, list_notes, etc.)
  7. Point your MCP client at the AnythingMCP endpoint

Automated setup

Run pnpm verify:mcp to confirm catalog/OpenAPI/yaml sync. Then ./scripts/setup-anythingmcp.sh with ANYTHINGMCP_URL, ANYTHINGMCP_TOKEN, and BENNYBOOKS_MCP_TOKEN set. Still toggle optional tools off if AnythingMCP enables all operations.

Curated tools (enable)

ToolScope
get_ontologypublic
list_categoriesread
list_transactionsread
get_transactionread
get_dashboard_summaryread
search_receiptsread
list_connectorsread
list_pending_proposalsread
propose_categorizationpropose-write
propose_journal_entrypropose-write
propose_receipt_linkpropose-write
attach_notepropose-write

Optional (keep off)

ToolWhy off by default
get_ontology_contextPublic JSON-LD @context only
get_proposalFetch one proposal by id
get_receiptReceipt metadata by id (not file bytes)
list_notesNotes for a transactionId
create_noteDirectly create a note without approval

Full design notes: Connect → MCP tool design. Agent playbook: /skill.md.