practicpro_document_editor
ChatGPTWork with PracticPro document pages (estimates, proposals, contracts, change orders). Actions: "view_page" (see the PDF page as an image to analyze layout), "add_fields" (add fillable inputs like signature, date, text fields for the recipient to fill). The "File layout" section on a document page shows row IDs for each page.
practicpro_document_editor
ChatGPTWork with PracticPro document pages (estimates, proposals, contracts, change orders). Actions: "view_page" (see the PDF page as an image to analyze layout), "add_fields" (add fillable inputs like signature, date, text fields for the recipient to fill). The "File layout" section on a document page shows row IDs for each page.
practicpro_get_help
ChatGPTFetch specialized PracticPro knowledge on a specific topic. Use this ONLY when you actually need guidance — it is a reference book, not a preface. Available topics: entity_model, create, billing, files, custom_pages, scheduling, phone, email, lifecycle, glossary. Call with no topic to see the list.
practicpro_get_help
ChatGPTFetch specialized PracticPro knowledge on a specific topic. Use this ONLY when you actually need guidance — it is a reference book, not a preface. Available topics: entity_model, create, billing, files, custom_pages, scheduling, phone, email, lifecycle, glossary. Call with no topic to see the list.
practicpro_grep
ChatGPTSearch the current page's JavaScript source for a pattern. Returns matching lines with context. Use to locate where a specific symbol is set, find an error code in code, or trace an unfamiliar identifier. Reads from the last page you navigated to.
practicpro_grep
ChatGPTSearch the current page's JavaScript source for a pattern. Returns matching lines with context. Use to locate where a specific symbol is set, find an error code in code, or trace an unfamiliar identifier. Reads from the last page you navigated to.
practicpro_inspect
ChatGPTInspect the current page. Three modes: 1. Page sections: pass "forms", "actions", "navigation", "uploads", or "ui_actions" to see that section from the current page. 2. Full content: pass "full_content" to read the complete page body text without truncation. Use when practicpro_navigate says "(body truncated)". Pass offset to read from a specific character position. 3. JS code: pass a button label (e.g. "Save Invoice") or function name to see the code it triggers. Reads from the last page you navigated to. Use when you need details beyond the navigate summary.
practicpro_inspect
ChatGPTInspect the current page. Three modes: 1. Page sections: pass "forms", "actions", "navigation", "uploads", or "ui_actions" to see that section from the current page. 2. Full content: pass "full_content" to read the complete page body text without truncation. Use when practicpro_navigate says "(body truncated)". Pass offset to read from a specific character position. 3. JS code: pass a button label (e.g. "Save Invoice") or function name to see the code it triggers. Reads from the last page you navigated to. Use when you need details beyond the navigate summary.
practicpro_login
ChatGPTConnect to, disconnect from, or check your PracticPro connection. Actions: "connect" (start login with username), "confirm" (submit the PIN from SMS/email), "disconnect" (log out), "status" (check connection).
practicpro_login
ChatGPTConnect to, disconnect from, or check your PracticPro connection. Actions: "connect" (start login with username), "confirm" (submit the PIN from SMS/email), "disconnect" (log out), "status" (check connection).
practicpro_navigate
ChatGPTRead a PracticPro page (GET). By default this reads SILENTLY — the user's screen is NOT affected. Pass show_user=true ONLY on the LAST navigation when you want the user to see the result page. To find an entity by name, use /search?search=<term> — do NOT browse list pages and scroll.
practicpro_navigate
ChatGPTRead a PracticPro page (GET). By default this reads SILENTLY — the user's screen is NOT affected. Pass show_user=true ONLY on the LAST navigation when you want the user to see the result page. To find an entity by name, use /search?search=<term> — do NOT browse list pages and scroll.
practicpro_remember
ChatGPTSave a fact about the user for future conversations. Use this when the user tells you something worth remembering - their role, preferences, responsibilities, patterns, or important context. This memory persists across sessions and is loaded automatically in future conversations.
practicpro_remember
ChatGPTSave a fact about the user for future conversations. Use this when the user tells you something worth remembering - their role, preferences, responsibilities, patterns, or important context. This memory persists across sessions and is loaded automatically in future conversations.
practicpro_report_gap
ChatGPTReflect on why you are stuck and tell us what is structurally missing. Call this after 2-3 failed attempts on the same operation, or when you realize you are guessing instead of reading. This is NOT a bug report or a "please fix it" request. It is a postmortem: step outside your current attempt, look at yourself, and describe the gap between how you are approaching this and how a real human user would. A good report reads like a researcher reflecting on their own experience, not a stack trace. Shallow reports ("button unclear") waste the slot — we are trying to learn what is invisible to you that a user sees.
practicpro_report_gap
ChatGPTReflect on why you are stuck and tell us what is structurally missing. Call this after 2-3 failed attempts on the same operation, or when you realize you are guessing instead of reading. This is NOT a bug report or a "please fix it" request. It is a postmortem: step outside your current attempt, look at yourself, and describe the gap between how you are approaching this and how a real human user would. A good report reads like a researcher reflecting on their own experience, not a stack trace. Shallow reports ("button unclear") waste the slot — we are trying to learn what is invisible to you that a user sees.
practicpro_submit
ChatGPTSubmit a form/action in PracticPro (POST request). Only use URLs from the "Buttons on this page" section that say "use practicpro_submit". NEVER guess POST URLs. IMPORTANT: if the system message at the start of your turn says "BRIDGE ACTIVE", and you are editing a record the user has open in their workspace (updating a route, invoice, job, etc.), use practicpro_fill_input + practicpro_click to drive the form in the user's own browser instead. Direct POSTs via this tool often clobber fields you did not include — many PracticPro save endpoints are full-replace. practicpro_submit is still the right choice for creates, one-shot actions (send, officialize), JSON API endpoints, and anything outside a record edit.
practicpro_submit
ChatGPTSubmit a form/action in PracticPro (POST request). Only use URLs from the "Buttons on this page" section that say "use practicpro_submit". NEVER guess POST URLs. IMPORTANT: if the system message at the start of your turn says "BRIDGE ACTIVE", and you are editing a record the user has open in their workspace (updating a route, invoice, job, etc.), use practicpro_fill_input + practicpro_click to drive the form in the user's own browser instead. Direct POSTs via this tool often clobber fields you did not include — many PracticPro save endpoints are full-replace. practicpro_submit is still the right choice for creates, one-shot actions (send, officialize), JSON API endpoints, and anything outside a record edit.
practicpro_upload_file
ChatGPTUpload a file to PracticPro and attach it to an entity. IMPORTANT: Before uploading, navigate to the target entity page first - the "Upload targets" section at the bottom shows the exact for_type, for_id, and job_id values to use. Never guess these values.
practicpro_upload_file
ChatGPTUpload a file to PracticPro and attach it to an entity. IMPORTANT: Before uploading, navigate to the target entity page first - the "Upload targets" section at the bottom shows the exact for_type, for_id, and job_id values to use. Never guess these values.
practicpro_view_rendered
ChatGPTFetch a PracticPro page as a real user sees it (after JavaScript runs). Use this ONLY when practicpro_navigate returns empty containers or missing form values because the page loads its content dynamically. Slower and more expensive than practicpro_navigate - always try practicpro_navigate FIRST and only fall back to this when the data you need clearly is not in the raw HTML. Returns the fully rendered page text including all input values the user currently sees.
practicpro_view_rendered
ChatGPTFetch a PracticPro page as a real user sees it (after JavaScript runs). Use this ONLY when practicpro_navigate returns empty containers or missing form values because the page loads its content dynamically. Slower and more expensive than practicpro_navigate - always try practicpro_navigate FIRST and only fall back to this when the data you need clearly is not in the raw HTML. Returns the fully rendered page text including all input values the user currently sees.