{"ok":true,"site":{"host":"dollycrm.app","url":"https://www.dollycrm.app/","type":"live","desc":"A mock CRM example for @dolly/rig.","tools":[{"name":"search_contacts","kind":"act","impl":"imperative","description":"Search CRM contacts by name, company, or email. Opens the contacts page filtered to the matches.","annotations":{"readOnlyHint":true},"inputSchema":{"type":"object","properties":{"query":{"type":"string","description":"Name, company, or email fragment to search for."}},"required":["query"],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/","/contacts","/deals","/settings","/dev"]},{"name":"create_contact","kind":"transact","impl":"imperative","description":"Create a new CRM contact. The new contact appears at the top of the contacts page. Duplicates are checked automatically (same email, or same name and company) — if the contact already exists nothing is created, so there is no need to search for duplicates first.","annotations":{},"inputSchema":{"type":"object","properties":{"name":{"type":"string","description":"Full name of the contact."},"company":{"type":"string","description":"Company the contact works for."},"email":{"type":"string","description":"Email address of the contact."},"status":{"type":"string","enum":["Lead","Customer","Churned"],"description":"Optional status; defaults to Lead."}},"required":["name","company","email"],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/","/contacts","/deals","/settings","/dev"]},{"name":"remove_contact","kind":"transact","impl":"imperative","description":"Remove a CRM contact. Match the contact by name, company, or email. The person is asked to approve the removal before it happens.","annotations":{"destructiveHint":true},"inputSchema":{"type":"object","properties":{"contact":{"type":"string","description":"Name, company, or email of the contact to remove."}},"required":["contact"],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/","/contacts","/deals","/settings","/dev"]},{"name":"create_deal","kind":"act","impl":"imperative","description":"Create a new deal in the pipeline.","annotations":{},"inputSchema":{"type":"object","properties":{"name":{"type":"string","description":"Short name for the deal, e.g. “Annual renewal”."},"company":{"type":"string","description":"Company the deal is with."},"value":{"type":"number","description":"Deal value in US dollars."},"stage":{"type":"string","enum":["Qualified","Proposal","Negotiation","Won"],"description":"Optional pipeline stage; defaults to Qualified."}},"required":["name","company","value"],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/","/contacts","/deals","/settings","/dev"]},{"name":"remove_deal","kind":"act","impl":"imperative","description":"Remove a deal from the pipeline. Match the deal by its name or company. The person is asked to approve the removal before it happens.","annotations":{"destructiveHint":true},"inputSchema":{"type":"object","properties":{"deal":{"type":"string","description":"Deal name or company to match."}},"required":["deal"],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/","/contacts","/deals","/settings","/dev"]},{"name":"update_deal_stage","kind":"act","impl":"imperative","description":"Move a deal to a new pipeline stage. Match the deal by its name or company. Stages: Qualified, Proposal, Negotiation, Won.","annotations":{},"inputSchema":{"type":"object","properties":{"deal":{"type":"string","description":"Deal name or company to match."},"stage":{"type":"string","enum":["Qualified","Proposal","Negotiation","Won"],"description":"The pipeline stage to move the deal to."}},"required":["deal","stage"],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/","/contacts","/deals","/settings","/dev"]},{"name":"summarize_pipeline","kind":"act","impl":"imperative","description":"Summarize the current deal pipeline: open value, deal counts per stage, and win rate.","annotations":{"readOnlyHint":true},"inputSchema":{"type":"object","properties":{},"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/","/contacts","/deals","/settings","/dev"]},{"name":"update_crm_settings","kind":"act","impl":"imperative","description":"Update workspace settings: rename the workspace shown in the sidebar.","annotations":{},"inputSchema":{"type":"object","properties":{"workspaceName":{"type":"string","description":"New name for the workspace, e.g. “Acme Inc.”."}},"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/","/contacts","/deals","/settings","/dev"]}],"category":"Productivity & Business","favicon":"/favicons/dollycrm.app.png","apiSurface":"spec","toolCount":8}}