| name | repairshopr-estimate |
| description | Create and manage estimates in RepairShopr |
| license | MIT |
| compatibility | opencode |
| metadata | {"audience":"technicians, sales, administrators","api":"GET /estimates, POST /estimates, GET /estimates/{id}, PUT /estimates/{id}, DELETE /estimates/{id}, POST /estimates/{id}/convert_to_invoice, POST /estimates/{id}/line_items, PUT /estimates/{id}/line_items/{line_item_id}, DELETE /estimates/{id}/line_items/{line_item_id}"} |
What I do
I manage repair estimates, which are cost proposals for work. I can list, create, retrieve, update, delete estimates, convert them to invoices, and manage line items (parts/labor) within estimates.
When to use me
Use this when:
- Providing customers with cost estimates before work begins
- Converting approved estimates to invoices
- Adding or modifying line items (parts, labor, services)
- Tracking estimate status (Fresh, Draft, Approved, Declined)
- Managing estimate line items and pricing
How to use
Required API base URL:
VITE_REPAIRSHOPR_SUBDOMAIN
VITE_REPAIRSHOPR_API_KEY
Permissions:
- "Estimates - List/Search" for listing
- "Estimates - Create" for creating
- "Estimates - View Details" for viewing single and print/email
- "Estimates - Edit" for updating and line item management
- "Estimates - Delete" for deletion
List Estimates (GET /estimates)
Optional:
mine (boolean) - Only my estimates
status (string) - Filter by status: "approved", "declined"
page (integer) - Page number (50 per page)
Create Estimate (POST /estimates)
Required:
date (string) - Estimate date (ISO 8601)
customer_id (integer) - Customer
Optional:
name (string) - Estimate name/title
number (string) - Custom estimate number
status (string) - "Fresh", "Draft", "Approved", "Declined" (default Fresh)
note (string) - Customer-facing notes
ticket_id (integer) - Associated ticket
location_id (integer) - Location
line_items (array) - Array of line item objects with item, name, cost, price, quantity, taxable
Get Estimate (GET /estimates/{id})
id (integer) - Estimate ID or number
Update Estimate (PUT /estimates/{id})
id (integer) - Estimate ID
Optional body similar to create (but typically doesn't include line_items fully; use line item endpoints)
Delete Estimate (DELETE /estimates/{id})
id (integer) - Estimate ID
Add Line Item (POST /estimates/{id}/line_items)
id (integer) - Estimate ID
Body includes line item fields (item, name, cost, price, quantity, taxable)
Update Line Item (PUT /estimates/{id}/line_items/{line_item_id})
id, line_item_id - IDs
Body includes updatable line item fields
Delete Line Item (DELETE /estimates/{id}/line_items/{line_item_id})
Convert to Invoice (POST /estimates/{id}/convert_to_invoice)
id (integer) - Estimate ID
Requires "Estimates - View Details" and "Invoices - Create"
Print/Email:
POST /estimates/{id}/print - Queue print job
POST /estimates/{id}/email - Email to customer
Example call:
const estimate = await skill({ name: "repairshopr-estimate" }, {
customer_id: 123,
date: "2024-01-15",
name: "Screen Replacement Estimate",
status: "Draft",
line_items: [
{ item: "LCD Display", name: "13\" Retina Display", cost: 150, price: 299, quantity: 1, taxable: true },
{ item: "Labor", name: "Screen Replacement Service", cost: 0, price: 89, quantity: 1, taxable: false }
]
})
await skill({ name: "repairshopr-estimate" }, {
line_items: [
{ item: "Battery", name: "Replacement Battery", price: 79, quantity: 1 }
]
}, { id: estimate.., : , : { : } })
Response includes:
- Estimate object with
subtotal, total, tax, line_items array, status, etc.
- Convert returns
invoice object
Important
date and customer_id are required for creation
- Line items require
item and price at minimum; cost is optional
valid item error occurs when item is blank
- Converting to invoice requires at least one line item
Related skills
repairshopr-invoice - After estimate conversion
repairshopr-line-item - For line item management
repairshopr-ticket-create - To link estimate to ticket