← Files OtisARCHIVED FILE
.codex-plugin/plugin.json
5.64 KB · Nov 5, 2026 · 12:12 UTC
{
"name": "otis",
"version": "0.3.2",
"description": "Client billing records for consultants and small agencies: clients, billable work, timers, expenses, invoices and payments, kept by Otis and used from your chat.",
"author": {
"name": "Boon IT SRL",
"url": "https://otisbase.com"
},
"homepage": "https://otisbase.com/skills",
"repository": "https://github.com/otisbase/otis-plugins",
"license": "MIT",
"skills": "./skills/",
"mcpServers": "./.mcp.json",
"interface": {
"displayName": "Otis",
"shortDescription": "Client billing in your chat",
"longDescription": "Otis keeps the billing records of a consultant or small agency: clients, billable hours and timers, expenses, invoices and payments. Your assistant is the interface. Tell it what you worked on, what you spent or who paid, and Otis stores it as structured records.\n\nWhen you are ready to bill, the assistant drafts the invoice from unbilled work. Otis numbers it, calculates totals and tax, and checks it against the business's tax profile before it can be issued. An invoice is issued only after you approve its exact total, and an issued invoice is never rewritten. Payments are recorded against invoices, so the assistant can tell you what is unpaid and what is ready to invoice.\n\nOtis records billing facts. It does not send invoices, move money or connect to bank accounts. It runs no AI model of its own: every answer comes from your records and the rules on the server. Sign in with your email; records can be exported in full at any time.",
"developerName": "Boon IT SRL",
"category": "Finance",
"capabilities": [
"Record billable hours, fixed fees and AI usage per client",
"Time work with a timer and record it at an hourly rate",
"Record expenses and bill them back to clients",
"Draft, check and issue invoices after you approve the exact total",
"Record payments and see what is unpaid or ready to invoice",
"Export all business records"
],
"defaultPrompt": [
"Which invoices are still unpaid, and how much is due on each?",
"What can I invoice Fernhill Coffee for?",
"Record 2 hours of permit review for Harbor & Pine at $130 an hour."
],
"websiteURL": "https://otisbase.com",
"supportURL": "https://otisbase.com/about",
"privacyPolicyURL": "https://otisbase.com/privacy",
"termsOfServiceURL": "https://otisbase.com/terms",
"logo": "./assets/logo.png",
"composerIcon": "./assets/logo.png"
},
"extensions": {
"com.openai": {
"review": {
"commerce_description": "This plugin does not sell products or process payments. It records invoices and the payments a user reports.",
"test_cases": {
"positive": [
{
"description": "List unpaid invoices with the amount due on each.",
"prompt": "Which invoices are still unpaid, and how much is due on each?",
"tools_triggered": "invoices_list",
"expected_behavior": "Lists NS-1041 (Fernhill Coffee, $600 due of $1,000) and NS-1042 (Harbor & Pine Architects, $824 due), plus the open $720 draft for Lumen Health Clinic as not yet issued."
},
{
"description": "Show unbilled work for one client.",
"prompt": "What can I invoice Fernhill Coffee for?",
"tools_triggered": "clients_list, billables_list",
"expected_behavior": "Lists Fernhill Coffee's unbilled work and billable expenses with their amounts and a total, and offers to draft an invoice."
},
{
"description": "Record billable time for a client.",
"prompt": "Record 2 hours of permit review for Harbor & Pine at $130 an hour.",
"tools_triggered": "clients_list, billable_record",
"expected_behavior": "Asks to confirm, then records 2 hours at $130 ($260) for Harbor & Pine Architects and reports it as unbilled."
},
{
"description": "Start and stop a timer.",
"prompt": "Start a timer for Lumen Health copy edits. Then stop it and record it at $120 an hour.",
"tools_triggered": "clients_list, timer_start, timer_stop",
"expected_behavior": "Starts a timer for Lumen Health Clinic, then stops it and records the tracked minutes as billable time at $120 an hour."
},
{
"description": "Draft an invoice and check it before issuing.",
"prompt": "Draft an invoice for Kestrel Labs' unbilled work and check whether it is ready to issue.",
"tools_triggered": "clients_list, billables_list, invoice_draft, invoice_check",
"expected_behavior": "Shows the draft lines and exact total, creates the draft after confirmation, and reports whether it is ready. It does not issue the invoice without the user approving the exact total."
}
],
"negative": [
{
"description": "Moving money is out of scope: Otis records payments, it does not make them.",
"prompt": "Transfer $500 from my bank account to Fernhill Coffee."
},
{
"description": "Sending email is out of scope: Otis does not send invoices.",
"prompt": "Email invoice NS-1041 to Fernhill Coffee."
},
{
"description": "An unrelated request should not use Otis.",
"prompt": "What is the weather in Portland tomorrow?"
}
]
}
},
"publication": {
"release_notes": "First release in the OpenAI plugin directory."
}
}
},
"apps": "./.app.json"
}
SHA-256: bc26492f42e11f31b3b9a34f95d755128f4452d6fd18a3598256c5ab25124232