{"protocolVersion":"0.2.0","name":"DcisionAI","description":"Front door to the DcisionAI agent team — EA · Analyst · Ops · Decision · Guardian. Delegates each task to the owning specialist.","url":"https://mcp-msp.dcisionai.com/a2a","preferredTransport":"JSONRPC","version":"1.0.0","provider":{"organization":"DcisionAI","url":"https://dcisionai.com"},"capabilities":{"streaming":false,"pushNotifications":false,"stateTransitionHistory":true},"defaultInputModes":["text/plain","application/json"],"defaultOutputModes":["text/plain","application/json"],"skills":[{"id":"ria.daily_brief","name":"Morning brief","description":"Assemble today's docket + data highlights + a warm greeting — the EA morning brief, tiered descriptive/predictive/prescriptive.","tags":["brief","docket","concierge"],"examples":["What's on my plate today?","Give me the morning brief"],"inputModes":["text/plain","application/json"],"outputModes":["text/plain","application/json"]},{"id":"ria.orchestrate","name":"Coordinate the team","description":"Fan out to the specialist agents (Analyst, Guardian, Decision) and synthesize — the EA coordinating the team on one request.","tags":["orchestrate","coordinator","synthesis"],"examples":["Give me the full picture","What's coming and what should I do?"],"inputModes":["text/plain","application/json"],"outputModes":["text/plain","application/json"]},{"id":"ria.forecast","name":"Forecast the book","description":"Forecast the book forward (3/12-month) with confidence bands and domain risk flags — capacity breach, concentration, occupancy, SLA.","tags":["forecast","predictive","risk"],"examples":["What's coming next quarter?","Which books will breach capacity?"],"inputModes":["text/plain","application/json"],"outputModes":["text/plain","application/json"]},{"id":"ria.data_story","name":"Narrate the data","description":"Narrate firm/advisor performance from the metrics — growth drivers, book quality, concentration. The analyst data story.","tags":["narrative","eda","descriptive"],"examples":["Tell the story of the firm's performance","Write the board narrative"],"inputModes":["text/plain","application/json"],"outputModes":["text/plain","application/json"]},{"id":"ria.reconcile_billing","name":"Reconcile billing","description":"Reconcile an advisory-fee billing export against the fee-schedule book and custodian cash — auto-approve / needs-review / liquidate, with a per-account audit trail.","tags":["billing","reconciliation","operations","fiduciary"],"examples":["Reconcile this quarter's Vanguard billing file","Check the billing run for wrong rep codes or overbilled fees"],"inputModes":["text/plain","application/json"],"outputModes":["text/plain","application/json"]},{"id":"ria.answer_policy","name":"Answer a policy question","description":"Answer an internal policy/process question from the firm's knowledge base, scoped to the asker's role, with document citations. Says so when no document covers it.","tags":["knowledge-base","policy","compliance","rbac"],"examples":["How much vacation do I have?","What are our personal-trading blackout rules?"],"inputModes":["text/plain","application/json"],"outputModes":["text/plain","application/json"]},{"id":"decide","name":"Decide from any dataset","description":"Data-agnostic decision intake — hand it a dataset in ANY format (CSV / Excel / JSON / Parquet, inline records or a file), and it ingests, tags column roles, gates readiness, detects the problem shape (assignment / selection / budget / routing / scheduling / forecasting), surfaces the opportunity levers, and recommends the CERTIFIED card that solves it. Data-agnostic ingress, certified egress — it routes to a frozen, fingerprinted card, never ad-hoc math.","tags":["data-agnostic","optimization","assignment","selection","routing","certified","agentforce","a2a"],"examples":["Here's my dataset — profile it and recommend the optimization","What decision can I make from this data, and which provable model fits?"],"inputModes":["text/plain","application/json"],"outputModes":["text/plain","application/json"]},{"id":"ria.optimize_capacity","name":"Rebalance advisor workload","description":"Rebalance advisor workload — solve for the fewest client reassignments that bring every advisor inside a fair-share capacity band (households). Returns before/after loads + the transfer plan.","tags":["optimization","capacity","workload","assignment"],"examples":["Which advisors are over capacity and how should we rebalance?","Rebalance the book so no advisor is overloaded"],"inputModes":["text/plain","application/json"],"outputModes":["text/plain","application/json"]},{"id":"optimize_fill","name":"Certified fill on the live book","description":"Certified optimal fill on the tenant's LIVE book. Points the book at the system of record (no-copy read-through — Salesforce today), binds it to the frozen staffing card (BCH-230), and SOLVES — returning a provable certificate (objective + binding constraints + provenance), never a black-box score. The A2A entry an Agentforce agent calls to get a PROVABLE fill on live data that never leaves the system of record. Params: program, card_id, source, vertical.","tags":["optimization","assignment","staffing","fill","certified","agentforce","a2a","no-copy","salesforce"],"examples":["Produce a certified optimal fill for the Pontoon program","Bind the live Salesforce book to BCH-230 and solve"],"inputModes":["text/plain","application/json"],"outputModes":["text/plain","application/json"]},{"id":"ria.scan_risks","name":"Scan forward risks","description":"Sweep the book for forward risks (capacity, concentration, occupancy, SLA) and rank them — the Guardian's always-on scan.","tags":["monitor","risk","guardian"],"examples":["What risks are building?","Scan the book for problems ahead"],"inputModes":["text/plain","application/json"],"outputModes":["text/plain","application/json"]},{"id":"ops.deploy_frontend","name":"Deploy the frontend","description":"Redeploy the React frontend for a tenant. Looks up the tenant's public API base URL, sets REACT_APP_MCP_SERVER_URL on the Vercel project, and triggers a production Vercel deploy. Use this after a backend gateway/domain change or frontend code push so the web layer picks up the new backend. Params: project_name, tenant_id, product (optional).","tags":["vercel","frontend","deploy","operations","tenant","provisioning"],"examples":["Redeploy the RIA frontend","Update the WFM Vercel project to point at the new gateway","Deploy frontend for tenant vdart-wfm"],"inputModes":["text/plain","application/json"],"outputModes":["text/plain","application/json"]},{"id":"onboarding.onboard_customer","name":"Onboard a customer","description":"Provision a dedicated single-tenant DcisionAI deployment: Aura Neo4j, Northflank project, Vercel project + custom domain, and Supabase tenant record.","tags":["onboarding","provisioning","tenant","dedicated"],"examples":["Onboard Acme Advisors for RIA at acme.dcisionai.com","Provision a new WFM tenant for Stark Industries at stark.dcisionai.com"],"inputModes":["text/plain","application/json"],"outputModes":["text/plain","application/json"]},{"id":"onboarding.get_status","name":"Get onboarding status","description":"Retrieve the status and artifacts of an in-flight or completed onboarding run.","tags":["onboarding","status"],"examples":["What is the status of onboarding run 123e4567?"],"inputModes":["text/plain","application/json"],"outputModes":["text/plain","application/json"]}],"capabilitiesUrl":"https://mcp-msp.dcisionai.com/latest/capabilities"}