# Gro CRM > CRM access for a rep's chosen agent through the same authenticated CLI, HTTP > command catalog and optional MCP bridge. Never invent buyer records or metrics. Base URL: https://grocrm.xyz Public discovery: https://grocrm.xyz/llms.txt (alias /llm.txt). ## Agent choices and boundaries Use the bundled open-source agent harness, Claude Code, Codex, Cursor, Hermes, Dots, a Grok bot, Muse, or another system able to run a CLI, authenticated HTTP requests, or MCP. These are transport integration options, not claims that every adapter has been installed or tested. Your agent keeps its own model, subscription, memory and authentication. Gro enforces the CRM caller's role, key scope and ownership on the server. Never borrow an administrator credential. The built-in Gro agent uses the full native web harness: coding tools, terminal, files, search, sessions, skills and plugins. Gro's hosted adapter launches an isolated seller workspace and installs the server-generated `crm` client. CRM commands use the seller's signed session and the same server-side permissions as other agents. The model gateway retains native tool calls and streaming; it does not implement a substitute chat loop. The native harness adapter is included in the deployed source. Runtime readiness requires an available agent image and a successful seller model/tool cycle; a health response alone does not prove either. Open /workbench and choose Open agent workspace. The authenticated launch route is POST /api/gro/harness/session; GET checks readiness. /agent// is protected by the seller's browser session. A seller cannot select another workspace owner. Public discovery never contains launch tokens or issued CRM credentials. ## Install and start Use a separate local agent workspace. Install Python 3, Node.js/npm and curl using their official platform instructions. Install the published CLIs: ```sh npm install -g @gregiteen/ssss-cli@latest total-recall-brain@latest ssss --help total-recall --help mkdir -p "$HOME/.local/bin" curl -fsSL https://grocrm.xyz/api/public/cli/client -o "$HOME/.local/bin/crm" # Inspect the downloaded Python source before executing it. chmod +x "$HOME/.local/bin/crm" export PATH="$HOME/.local/bin:$PATH" export CRM_URL=https://grocrm.xyz crm --version ``` On Windows save the download as crm.py and invoke it with Python. Do not run a local CRM server or copy another workspace vault. Optional Total Recall setup uses `total-recall init --project` in your selected workspace; run `total-recall context "Work on Gro CRM" --action read,edit` and require ready:true. Use `total-recall connect --help` for your installed IDE adapter. Total Recall never expands CRM permissions or imports an unrelated brain automatically. ## One-time password / setup code An authorized user issues an expiring one-use setup code from Account & Settings or POST /api/crm/me/setup-code (authenticated). An administrator can issue one for an existing permitted user through POST /api/crm/users//setup-code. This code is an onboarding password, distinct from login MFA codes. Exchange privately using POST /api/public/cli/exchange with JSON {"code":""}. The response contains the user's personal API key. Store it in a private credential store; never print it, commit it, place it in a URL, or include it in public docs or chat. The consumed/expired/reissued code cannot be reused. The current shared runtime expires codes after seven days; verify the deployed runtime before relying on a lifetime. A code grants only its owner's actual permissions. Invalid codes return 400; throttling returns 429. No real code or password is embedded in this document. ## CLI and guide endpoint system Download the single-file Python CLI from GET /api/public/cli/client; inspect it before installing. Set CRM_URL=https://grocrm.xyz. Use `crm login` with a hidden personal-key prompt or `crm login --stdin` from a private credential stream. For one-use setup, use `crm login --setup-code` and enter the code at its hidden prompt. Never place a code in saved shell history, URLs or shared logs. Then run `crm whoami`, `crm skills update`, `crm guide`, and `crm help`. Read changed skills before acting. Do not run a local CRM server or copy a vault. All authenticated HTTP calls use Authorization: Bearer . - GET /api/crm/me/whoami: verify user, role and key scope; does not issue a session. - GET /api/crm/cli/catalog: discover allowed commands, arguments and methods. - GET /api/crm/cli/agent-guide: current authenticated guide with X-Guide-Version. - GET /api/crm/cli/skills: role-specific skills and their version. - GET /api/public/cli/skills: public baseline skill bundle. - GET /api/public/cli/skill: public downloadable skill instructions. - GET /api/public/cli/onboarding: public onboarding guide for a new agent workspace. - GET /api/crm/cli/execute?command=: execute a permitted read. - POST /api/crm/cli/execute: JSON {"command":"","args":{},"query":{},"body":{}}. The catalog command's own HTTP method determines the downstream operation. This is a scoped command gateway, never an arbitrary shell endpoint. - GET /api/public/cli/mcp: downloadable Python MCP bridge. Its crm_skill and crm_cli tools use the same scoped server. Install its Python MCP dependency in an isolated environment; set CRM_URL and supply CRM_API_KEY privately. Discover actual command names and schemas from the catalog; do not guess. 401: missing/expired authentication. 403: role/scope/ownership denied. 400: invalid input. Read the error; never turn an unavailable source into zero records, a success message or a confirmed delivery. Check activity logging headers and read back changes before retrying a write whose outcome is uncertain. ## Contextual next steps (Gro instance extension) - GET /api/crm/gro/accounts: accessible buyer references. - GET /api/crm/gro/next-steps?account_id=: typed next-step menu containing action id/kind, enabled status, reason, evidence fields, review requirement, navigation target and compiled context revision. These extension routes are deployed and were verified with a genuine seller session. /api/crm/gro/accounts returns only the caller's accessible buyer references; an unavailable account source answers 503 and never an empty list. They currently cover buyer review, call preparation and email-draft preparation, not cart/signature automation. Missing phone/email disables the relevant choice. Decisions use deterministic recorded-field rules; no decision-provider integration is claimed. Permission checks remain authoritative regardless of any agent recommendation. ## Sales and privacy rules Inspect real buyers and their history first. Keep company, brand, location and buyer identities distinct. Save sourced facts through authorized CRM commands. Review prices, allocation, terms, signer authority and recipients before action. Do not send messages, sign, extend credit or change roles without authorization. The native agent can run permitted CRM reads and writes through the CLI. External actions still require user authorization and configured providers. Secrets and live records stay outside public GRO_CONTEXT; configuration revision is separate from live state. Portfolio: https://gregiteen.xyz Mail surface: https://mail.gregiteen.xyz These links do not establish shared authentication or mailbox synchronization. Public demo: /demo saves visitor-owned context for 30 days. Demo API: /api/public/gro/workspace GET/PUT/DELETE; writes require same-origin browser session. Public feedback and workspace inquiries: /api/public/gro/submissions POST. Outreach, calls, signing and notifications in the demo are previews, never executed. Portable source/agent harness/Total Recall/CRM plugin account bundles are planned, not downloadable releases.