{"protocolVersion":"0.3.0","name":"Deepgrids ACE","description":"The RealPage seller's revenue AI in Deepgrids. Answers questions about the seller's own accounts, pipeline, forecast, stakeholders and deals from their Salesforce, email, calendar and call notes, with sources. Acts as the seller who issued the access token; it never approves or executes changes (CRM updates are only proposed for the seller's approval).","url":"https://demo.deepgrids.com/api/live/a2a","preferredTransport":"JSONRPC","additionalInterfaces":[{"url":"https://demo.deepgrids.com/api/live/a2a","transport":"JSONRPC"}],"provider":{"organization":"Deepgrids","url":"https://demo.deepgrids.com"},"version":"1.0.0","documentationUrl":"https://demo.deepgrids.com/realpage#/connections","capabilities":{"streaming":false,"pushNotifications":false,"stateTransitionHistory":false},"securitySchemes":{"bearer":{"type":"http","scheme":"bearer","bearerFormat":"Deepgrids access token (dgk_…)","description":"Create a token in Deepgrids → Connections → \"Your agents can use ACE\"."},"oauth2":{"type":"oauth2","description":"Sign in as the seller with Deepgrids OAuth. Clients register themselves (RFC 7591) or present a client ID metadata document; PKCE (S256) is required.","oauth2MetadataUrl":"https://demo.deepgrids.com/.well-known/oauth-authorization-server","flows":{"authorizationCode":{"authorizationUrl":"https://demo.deepgrids.com/api/live/oauth/authorize","tokenUrl":"https://demo.deepgrids.com/api/live/oauth/token","refreshUrl":"https://demo.deepgrids.com/api/live/oauth/token","scopes":{"read":"Ask ACE about the seller's own accounts, pipeline, forecast and stakeholders.","propose":"Prepare CRM updates as proposals the seller approves in Deepgrids.","offline_access":"Keep the connection alive between sessions with a refresh token."}}}}},"security":[{"bearer":[]},{"oauth2":["read"]}],"defaultInputModes":["text/plain","application/json"],"defaultOutputModes":["text/plain","application/json"],"skills":[{"id":"ask_ace","name":"Ask ACE","description":"Ask Deepgrids ACE, the seller's revenue AI, any question about their own book of business at RealPage: accounts, opportunities, pipeline, forecast, stakeholders, next steps, deal strategy, negotiation, pricing, or a draft message. ACE answers from the seller's own Salesforce, email, calendar and call notes (with numbered sources) plus public research, exactly as it would inside Deepgrids. Takes 10-100 seconds. Returns the answer text and the sources it cited. Any CRM change ACE suggests is only a proposal that waits for the seller's approval in Deepgrids; this tool never changes a record or sends anything. Send plain text.","tags":["sales","crm","pipeline","forecast","account","research","strategy","question"],"examples":["Which of my deals are most at risk this quarter and why?","Prep me for tomorrow’s call with Greystar."],"inputModes":["text/plain","application/json"],"outputModes":["text/plain","application/json"]},{"id":"morning_brief","name":"Morning brief","description":"Today's prioritized brief for the seller from Deepgrids: a short summary and the top items that need attention (deals, meetings, follow-ups, risks), computed from their own records. Read-only. Takes no arguments. Send a data part {\"skill\":\"morning_brief\",\"args\":{…}} with args matching: {}.","tags":["brief","today","priorities","agenda"],"examples":["What should I focus on today?"],"inputModes":["application/json"],"outputModes":["text/plain","application/json"]},{"id":"account_brief","name":"Account brief","description":"Everything Deepgrids holds on one of the seller's accounts: the Salesforce account, its opportunities (stage, amount, close date, next step, line items, history), contacts and buying roles, recent emails, meetings and call notes, and agent findings. Resolves the account by name among records the seller can see. Read-only. Returns citable plain text (up to ~12,000 characters). Send a data part {\"skill\":\"account_brief\",\"args\":{…}} with args matching: {\"account\":{\"type\":\"string\",\"minLength\":2,\"maxLength\":200,\"description\":\"Account (company) or opportunity name, as it appears in Salesforce; partial names work.\"}}.","tags":["account","dossier","crm","opportunities","contacts","stakeholders"],"examples":["{\"account\":\"Greystar\"}"],"inputModes":["application/json"],"outputModes":["text/plain","application/json"]},{"id":"pipeline_movement","name":"Pipeline movement","description":"What changed in the seller's pipeline over a recent window, computed exactly from the change history of their Salesforce records: deals won, lost, advanced, moved back, close dates pushed or pulled in, amount changes, new deals and next-step updates. Read-only. Send a data part {\"skill\":\"pipeline_movement\",\"args\":{…}} with args matching: {\"days\":{\"type\":\"integer\",\"enum\":[7,14,30,90],\"description\":\"Window in days. Default 7.\"}}.","tags":["pipeline","forecast","changes","weekly update","deals"],"examples":["{\"days\":7}"],"inputModes":["application/json"],"outputModes":["text/plain","application/json"]},{"id":"list_findings","name":"Open findings","description":"Open findings from the seller's Deepgrids monitoring agents (deal risks, stalled deals, missing next steps, buyer signals), most severe first, each with title, detail, severity ('act', 'watch' or 'info'), the account or deal it concerns, and when it was found. Read-only. Send a data part {\"skill\":\"list_findings\",\"args\":{…}} with args matching: {\"limit\":{\"type\":\"integer\",\"minimum\":1,\"maximum\":50,\"description\":\"How many findings to return. Default 20.\"}}.","tags":["risks","alerts","findings","signals","monitoring"],"examples":["{\"limit\":10}"],"inputModes":["application/json"],"outputModes":["text/plain","application/json"]},{"id":"propose_crm_update","name":"Propose a CRM update","description":"Prepare (not perform) an update to one of the seller's Salesforce opportunities: next step, close date, stage and/or amount. Deepgrids checks the record, the seller's Salesforce permissions and org policy, and creates a proposal that the seller must review and approve in Deepgrids before anything is written. Returns the proposal id, the field-by-field diff, any blockers and the review link. Requires a token with the 'propose' scope. Nothing is written to Salesforce by this tool. Send a data part {\"skill\":\"propose_crm_update\",\"args\":{…}} with args matching: {\"opportunity\":{\"type\":\"string\",\"minLength\":2,\"maxLength\":200,\"description\":\"Opportunity name (or a distinctive part of it) among the seller’s visible opportunities.\"},\"next_step\":{\"type\":\"string\",\"maxLength\":255,\"description\":\"New Next Step text.\"},\"close_date\":{\"type\":\"string\",\"pattern\":\"^\\\\d{4}-\\\\d{2}-\\\\d{2}$\",\"description\":\"New close date, YYYY-MM-DD.\"},\"stage\":{\"type\":\"string\",\"maxLength\":120,\"description\":\"New stage, exactly as named in the seller’s Salesforce picklist.\"},\"amount\":{\"type\":\"number\",\"minimum\":0,\"maximum\":1000000000000,\"description\":\"New amount in the opportunity currency.\"}}.","tags":["crm","salesforce","update","proposal","next step","close date"],"examples":["{\"opportunity\":\"Greystar - OneSite Expansion\",\"next_step\":\"Security review call 10/2\",\"close_date\":\"2026-10-30\"}"],"inputModes":["application/json"],"outputModes":["text/plain","application/json"]},{"id":"realpage_knowledge","name":"RealPage knowledge","description":"How a top RealPage seller thinks, plus the verified RealPage facts that match a topic: products and what each solves, RealPage-published proof points, competitor positioning (Yardi, Entrata, MRI, ResMan and others), the DOJ settlement and rent-algorithm laws, buyers and market. Every fact carries its public source and date. Instant, no model, works with no systems connected. Use it before writing anything about RealPage. Send a data part {\"skill\":\"realpage_knowledge\",\"args\":{…}} with args matching: {\"topic\":{\"type\":\"string\",\"minLength\":2,\"maxLength\":500,\"description\":\"What the seller needs, e.g. \\\"handle we are happy with Yardi\\\", \\\"Lumina AI\\\", \\\"DOJ settlement terms\\\", \\\"bad debt proof point\\\".\"}}.","tags":["realpage","products","competitors","proof points","compliance","knowledge"],"examples":["{\"topic\":\"a prospect says they are happy with Yardi\"}"],"inputModes":["application/json"],"outputModes":["text/plain","application/json"]},{"id":"search","name":"Search Deepgrids","description":"Searches the seller's Deepgrids workspace (accounts, opportunities, contacts from their Salesforce, plus RealPage product and competitor knowledge) and returns matching items with an id to pass to fetch. Read-only. Send a data part {\"skill\":\"search\",\"args\":{…}} with args matching: {\"query\":{\"type\":\"string\",\"minLength\":2,\"maxLength\":300,\"description\":\"Company, deal, person or topic.\"}}.","tags":["search","accounts","opportunities","contacts"],"examples":["{\"query\":\"Trammell Crow\"}"],"inputModes":["application/json"],"outputModes":["text/plain","application/json"]},{"id":"fetch","name":"Fetch from Deepgrids","description":"Reads one item returned by search in full: an account brief with its deals, people and activity, an opportunity or contact record, or a RealPage knowledge fact with its source. Read-only. Send a data part {\"skill\":\"fetch\",\"args\":{…}} with args matching: {\"id\":{\"type\":\"string\",\"minLength\":3,\"maxLength\":120,\"description\":\"An id from search.\"}}.","tags":["fetch","read"],"examples":["{\"id\":\"account_…\"}"],"inputModes":["application/json"],"outputModes":["text/plain","application/json"]},{"id":"revenue_numbers","name":"My revenue numbers","description":"The seller's own revenue numbers, computed exactly by Deepgrids from their Salesforce records (never estimated by a model): quarter to date closed won, commit, best case and pipeline; forecast scenarios and a deal-by-deal risk-adjusted forecast with red flags; pipeline by stage; next quarter; win rate over 12 months overall and by deal type, source, product line, product and competitor; average deal size and sales cycle; discounting on won versus lost deals and win rate by discount band; open deals older than the typical won cycle; the biggest open deals with their next steps; pushed close dates and deals with no next step. Instant, read-only. Use it for any question about the seller's own quota, forecast, pipeline, win rate, discounting, cycle time or biggest deals, then reason over these numbers. Send a data part {\"skill\":\"revenue_numbers\",\"args\":{…}} with args matching: {}.","tags":["forecast","pipeline","win rate","discount","quota","numbers","metrics"],"examples":["{}"],"inputModes":["application/json"],"outputModes":["text/plain","application/json"]},{"id":"revenue_math","name":"Revenue math","description":"Exact revenue calculations done by code, with the formula and every step shown, so answers never rest on model arithmetic. Operations: coverage (pipeline needed for a target at a win rate, wins and opportunities needed), pace (quota attainment, run rate, needed per day), forecast (conservative, likely and stretch from a list of commit/best/pipeline deals, concentration), discount (dollars given away and the volume increase needed to hold gross profit), deal (TCV, ACV, exit ARR and ramp growth of a multi-year deal, effective discount), payment_terms (present value of upfront vs quarterly/monthly/net-N payments), retention (NRR and GRR), payback (CAC payback, LTV, LTV:CAC), funnel (wins, opportunities, meetings and outreach needed), price_increase (uplift and break-even loss). Works with no systems connected. Use it whenever a revenue question involves numbers. Send a data part {\"skill\":\"revenue_math\",\"args\":{…}} with args matching: {\"op\":{\"type\":\"string\",\"enum\":[\"coverage\",\"pace\",\"forecast\",\"discount\",\"deal\",\"payment_terms\",\"retention\",\"payback\",\"funnel\",\"price_increase\"],\"description\":\"Which calculation.\"},\"inputs\":{\"type\":\"string\",\"maxLength\":6000,\"description\":\"A JSON object with the inputs for the operation. coverage: target, closed, win_rate, pipeline, avg_deal, weeks_left. pace: quota, closed, period_start, period_end, today. forecast: closed, target, deals [{name, amount, category, probability}]. discount: list_price, discount, gross_margin, term_years. deal: years [annual amounts], list_per_year, one_time. payment_terms: amount, schedule, compare_to, cost_of_capital. retention: start_arr, expansion, contraction, churn. payback: cac, monthly_revenue, gross_margin, monthly_churn. funnel: target, avg_deal, win_rate, meeting_to_opp, outreach_to_meeting. price_increase: current, new_price, customers. Rates as percentages (25) or fractions (0.25); amounts as numbers or \\\"1.5M\\\".\"}}.","tags":["math","calculator","coverage","discount","tcv","acv","nrr","payback","forecast"],"examples":["{\"op\":\"coverage\",\"inputs\":\"{\\\"target\\\":2000000,\\\"closed\\\":500000,\\\"win_rate\\\":25,\\\"pipeline\\\":4500000}\"}","{\"op\":\"discount\",\"inputs\":\"{\\\"list_price\\\":100000,\\\"discount\\\":15,\\\"gross_margin\\\":70}\"}"],"inputModes":["application/json"],"outputModes":["text/plain","application/json"]},{"id":"revenue_playbook","name":"Revenue playbook","description":"How the best enterprise sellers, managers and deal desks handle a revenue situation: calling a forecast and what makes a deal commit, pipeline coverage and generation, qualifying and inspecting deals (MEDDPICC as questions, testing a champion, slip signals), multi-threading, mutual action plans, pricing and discount discipline, negotiating, multi-year and payment-term structure, renewals and expansion, competing and displacing incumbents, business cases, and running a pipeline review. Returns the sections that match a topic. Instant; works with no systems connected. Send a data part {\"skill\":\"revenue_playbook\",\"args\":{…}} with args matching: {\"topic\":{\"type\":\"string\",\"minLength\":2,\"maxLength\":500,\"description\":\"The situation or question, in plain language.\"}}.","tags":["playbook","forecast","negotiation","pricing","qualification","renewal","strategy"],"examples":["{\"topic\":\"procurement wants 20% off to sign this quarter\"}"],"inputModes":["application/json"],"outputModes":["text/plain","application/json"]},{"id":"deal_desk","name":"Deal desk","description":"The deal desk view of the seller's visible deals, counted from their own records: the approval queue (who must approve each deal's discount, term and payment structure under the org's policy, days waiting, SLA risk, margin given away), or for one named opportunity the structure against policy, the approval chain, precedent from similar closed deals and the fastest compliant alternative. Read-only. Send a data part {\"skill\":\"deal_desk\",\"args\":{…}} with args matching: {\"opportunity\":{\"type\":\"string\",\"minLength\":2,\"maxLength\":200,\"description\":\"Optional opportunity name for the one-deal view.\"},\"limit\":{\"type\":\"integer\",\"minimum\":1,\"maximum\":25,\"description\":\"Queue rows to return. Default 10.\"}}.","tags":["deal desk","approvals","discount","pricing","policy","margin"],"examples":["{\"skill\":\"deal_desk\",\"args\":{}}","{\"skill\":\"deal_desk\",\"args\":{\"opportunity\":\"Greystar - OneSite Expansion\"}}"],"inputModes":["application/json"],"outputModes":["text/plain","application/json"]},{"id":"forecast_defense","name":"Forecast defense","description":"For each commit and best-case deal this quarter: the questions a manager will ask (close date in the past, stage age, pushes, no executive, pending approval, gone quiet, amount changes, competitor, missing next step), the answer the records support, how confident comparable deals say to be, and what changed in the last week. Traffic light per deal. Read-only; suggested fixes are only described, never applied. Send a data part {\"skill\":\"forecast_defense\",\"args\":{…}} with args matching: {\"bucket\":{\"type\":\"string\",\"enum\":[\"commit\",\"best\",\"all\"],\"description\":\"Which forecast bucket. Default all.\"},\"limit\":{\"type\":\"integer\",\"minimum\":1,\"maximum\":25,\"description\":\"Deals to return. Default 10.\"}}.","tags":["forecast","commit","pipeline","manager","risk"],"examples":["{\"skill\":\"forecast_defense\",\"args\":{\"bucket\":\"commit\"}}"],"inputModes":["application/json"],"outputModes":["text/plain","application/json"]},{"id":"compliance_check","name":"Compliance check","description":"Checks customer-facing text (email, Slack, call script, RFP answer, LinkedIn) against the org's Compliance Shield rules: rent-pricing and DOJ settlement terms, fair housing, consumer protection and local rent-algorithm laws. Returns each issue with the quoted words, why, the safe rewording and the legal citation. Deterministic rules, no model. Each check is recorded in the org's compliance log. Guardrail, not legal advice. Send a data part {\"skill\":\"compliance_check\",\"args\":{…}} with args matching: {\"text\":{\"type\":\"string\",\"minLength\":2,\"maxLength\":8000,\"description\":\"The words to check, exactly as they would go out.\"},\"channel\":{\"type\":\"string\",\"enum\":[\"email\",\"slack\",\"call\",\"rfp\",\"linkedin\",\"other\"],\"description\":\"Where it would go. Default email.\"}}.","tags":["compliance","legal","doj","fair housing","review","wording"],"examples":["{\"skill\":\"compliance_check\",\"args\":{\"text\":\"Our pricing guarantees you beat the market rent.\",\"channel\":\"email\"}}"],"inputModes":["application/json"],"outputModes":["text/plain","application/json"]},{"id":"rfp_answer_lookup","name":"RFP answer lookup","description":"Finds approved answers for an RFP or security questionnaire question in the org's Answer library (past proposals, product and security documents the org uploaded), with the passage and its title. Returns nothing rather than guessing when the library has no match. Read-only. Send a data part {\"skill\":\"rfp_answer_lookup\",\"args\":{…}} with args matching: {\"question\":{\"type\":\"string\",\"minLength\":3,\"maxLength\":2000,\"description\":\"The RFP or questionnaire question.\"},\"limit\":{\"type\":\"integer\",\"minimum\":1,\"maximum\":10,\"description\":\"Passages to return. Default 5.\"}}.","tags":["rfp","questionnaire","security","answers","proposal","library"],"examples":["{\"skill\":\"rfp_answer_lookup\",\"args\":{\"question\":\"Do you encrypt data at rest?\"}}"],"inputModes":["application/json"],"outputModes":["text/plain","application/json"]},{"id":"overnight_stack","name":"Overnight stack summary","description":"What Deepgrids' night shift prepared for the seller this morning: the stack of cards (hygiene fixes, follow-ups, meeting prep, research, RFP work), why each matters, the deal value it touches and whether each is waiting, approved or skipped. Any card that would change another system is a proposal the seller approves with their own click in Deepgrids; this skill never approves one. Send a data part {\"skill\":\"overnight_stack\",\"args\":{…}} with args matching: {\"limit\":{\"type\":\"integer\",\"minimum\":1,\"maximum\":30,\"description\":\"Cards to return. Default 12.\"}}.","tags":["overnight","morning","hygiene","follow-ups","prep","queue"],"examples":["{\"skill\":\"overnight_stack\",\"args\":{}}"],"inputModes":["application/json"],"outputModes":["text/plain","application/json"]}]}