{"schemaVersion":"2024-11-05","name":"towops","version":"0.1.0","vendor":"TowOps","description":"AI agent integration for TowOps tow & recovery dispatch platform. Supports listing and creating invoices, work orders, customers, reading the dispatch board, and queuing human approvals.","tools":[{"name":"list_invoices","description":"List invoices for the current tenant. Filter by status. Use this to find invoices for a specific time period or billing status.","inputSchema":{"type":"object","properties":{"status":{"type":"string","description":"Filter by invoice status (draft, approved, paid, overdue, etc.)"},"limit":{"type":"integer","description":"Maximum number of results (1-200). Default: 50.","minimum":1,"maximum":200},"cursor":{"type":"string","description":"Pagination cursor from a previous response."}},"required":[]},"annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true}},{"name":"get_invoice","description":"Get a single invoice with all its line items. Use this when you need full invoice details including amounts, status, and itemized charges.","inputSchema":{"type":"object","properties":{"invoice_id":{"type":"string","format":"uuid","description":"UUID of the invoice to retrieve."}},"required":["invoice_id"]},"annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true}},{"name":"create_invoice_draft","description":"Create a new invoice draft linked to a work order. The draft is NOT sent to the customer — it requires human review and approval before sending. Use this to pre-populate invoices based on job details.","inputSchema":{"type":"object","properties":{"work_order_id":{"type":"string","format":"uuid","description":"UUID of the work order to link this invoice to."},"line_items":{"type":"array","description":"Invoice line items (charges).","items":{"type":"object","required":["name","category","quantity","unit_type","unit_price_cents","taxable"],"properties":{"name":{"type":"string"},"description":{"type":"string"},"category":{"type":"string"},"quantity":{"type":"number"},"unit_type":{"type":"string"},"unit_price_cents":{"type":"integer","description":"Price in cents (e.g. 15000 = $150.00)"},"taxable":{"type":"boolean"}}}},"notes":{"type":"string","description":"Customer-visible notes on the invoice."},"billing_email":{"type":"string","format":"email","description":"Override billing email."}},"required":["work_order_id"]},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false}},{"name":"list_work_orders","description":"List work orders for the current tenant. Filter by status. Use this to find jobs that need billing or are in progress.","inputSchema":{"type":"object","properties":{"status":{"type":"string","description":"Filter by work order status (new, in_progress, completed, etc.)"},"limit":{"type":"integer","minimum":1,"maximum":200,"description":"Max results. Default: 50."},"cursor":{"type":"string","description":"Pagination cursor."}},"required":[]},"annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true}},{"name":"get_work_order","description":"Get a single work order by ID. Use this to retrieve full job details before creating an invoice draft.","inputSchema":{"type":"object","properties":{"work_order_id":{"type":"string","format":"uuid","description":"UUID of the work order."}},"required":["work_order_id"]},"annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true}},{"name":"create_work_order","description":"Create a new work order. Use this when dispatching a new job for a customer. The work order starts in 'new' status and will appear on the operator queue for review.","inputSchema":{"type":"object","properties":{"customer_id":{"type":"string","format":"uuid","description":"UUID of the customer."},"service_type":{"type":"string","description":"Service type (e.g. light_duty_tow, roadside_service)."},"pickup_location":{"type":"string","description":"Pickup address or location description."},"dropoff_location":{"type":"string","description":"Dropoff address (if applicable)."},"vin":{"type":"string","description":"Vehicle VIN."},"unit_number":{"type":"string","description":"Fleet unit number."},"internal_notes":{"type":"string"},"customer_notes":{"type":"string"},"billing_email":{"type":"string","format":"email"}},"required":["service_type"]},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false}},{"name":"list_customers","description":"List customers. Use search to find a specific customer by name, email, or company. Use this before creating a work order to get the correct customer_id.","inputSchema":{"type":"object","properties":{"search":{"type":"string","description":"Search query (matches company name, email)."},"limit":{"type":"integer","minimum":1,"maximum":100,"description":"Max results. Default: 50."}},"required":[]},"annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true}},{"name":"get_dispatch_board","description":"Get the current dispatch board state including all active jobs, truck assignments, and unassigned work orders. Read-only snapshot.","inputSchema":{"type":"object","properties":{},"required":[]},"annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true}},{"name":"search_audit_log","description":"Search the audit log for actions on invoices, work orders, customers, and agent activity. Useful for compliance checks and troubleshooting.","inputSchema":{"type":"object","properties":{"entity_type":{"type":"string","description":"Filter by entity type (invoice, work_order, customer)."},"actor":{"type":"string","description":"Filter by actor ID (user UUID or agent ID)."},"since":{"type":"string","format":"date-time","description":"ISO 8601 start time."},"until":{"type":"string","format":"date-time","description":"ISO 8601 end time."},"limit":{"type":"integer","minimum":1,"maximum":100,"description":"Max results. Default: 50."}},"required":[]},"annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true}},{"name":"propose_invoice_approval","description":"Request human approval for a draft invoice. This does NOT approve the invoice — it creates an item in the operator queue asking a human to review and approve. Always use this instead of approving directly.","inputSchema":{"type":"object","properties":{"invoice_id":{"type":"string","format":"uuid","description":"UUID of the invoice to request approval for."},"justification":{"type":"string","description":"Explanation of why this invoice should be approved. Shown to the human reviewer."}},"required":["invoice_id","justification"]},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false}}],"resources":[{"uri":"towops://audit-log","name":"Audit Log","description":"Complete audit trail of all actions in the tenant. Read-only.","mimeType":"application/json"},{"uri":"towops://dispatch-board","name":"Dispatch Board","description":"Live snapshot of the dispatch board including trucks and unassigned jobs.","mimeType":"application/json"}],"auth":{"type":"bearer","scheme":"tk_agent_*","description":"Agent API keys prefixed with tk_agent_. Generate at /settings/agents."},"scopes":[{"id":"read_invoices","label":"Read Invoices"},{"id":"write_invoices_draft","label":"Create Invoice Drafts"},{"id":"read_work_orders","label":"Read Work Orders"},{"id":"write_work_orders","label":"Create Work Orders"},{"id":"read_customers","label":"Read Customers"},{"id":"read_dispatch","label":"Read Dispatch Board"},{"id":"read_audit","label":"Read Audit Logs"},{"id":"propose_approvals","label":"Propose Approvals"}],"rateLimits":{"starter":{"perMinute":60,"perHour":1000},"standard":{"perMinute":300,"perHour":5000},"premium":{"perMinute":1000,"perHour":20000}},"idempotency":{"header":"Idempotency-Key","ttlHours":24,"description":"Send a UUID in Idempotency-Key on write requests for safe retries."},"dryRun":{"header":"X-TowOps-Dry-Run","value":"true","description":"Send X-TowOps-Dry-Run: true on write requests to preview without persisting."},"links":{"api":"https://towops.xyz/api/v1","openapi":"https://towops.xyz/api/v1/openapi.json","mcp":"https://towops.xyz/api/mcp","docs":"https://towops.xyz/docs/agents","llmstxt":"https://towops.xyz/llms.txt"}}