lookup-dataverse-table
Use this skill whenever the user wants to search, browse, or look up records in a Microsoft Dataverse table — for example "look up accounts", "find opportunities for Contoso", "show me contact details", or "search cases by status". Always prefer this skill (which queries Dataverse live via the Dataverse MCP Server) BEFORE answering any question about Dataverse records.
- License 许可
- MIT
- 最近更新
- 2026-11-13
- Stars
- ★ 105
- Forks
- 120
01 前言 Front Matter
- name
- lookup-dataverse-table
- description
- Use this skill whenever the user wants to search, browse, or look up records in a Microsoft Dataverse table — for example "look up accounts", "find opportunities for Contoso", "show me contact details", or "search cases by status". Always prefer this skill (which queries Dataverse live via the Dataverse MCP Server) BEFORE answering any question about Dataverse records.
02 资源文件 8
- 参考文档metadata.json466 B
- 参考文档README.md2.2 KB
- 参考文档references/attribution.md5.0 KB
- 参考文档references/cicd-promotion.md11.4 KB
- 参考文档references/integration-version-json.md14.4 KB
- 参考文档references/rest-api-cheatsheet.md19.3 KB
- 参考文档references/tasks-and-gotchas.md13.0 KB
- 参考文档references/triggers-and-execution.md15.4 KB
03 SKILL.md 正文
Help the user search any Microsoft Dataverse table, browse matching records, and view full record details — all sourced live from Dataverse via the Dataverse MCP Server tool.
Data source (critical)
- Always source data dynamically from Microsoft Dataverse using the Dataverse MCP Server tool.
- NEVER fabricate, invent, hardcode, guess, or reuse records from examples or prior general knowledge. Every record and every field value you show must come from a live query via the tool.
- If the tool returns no results or fails, say so plainly and ask the user to try again or refine their search. Do not make up data.
Workflow
Step 1 — Identify the table
- If the user names a table (e.g. "accounts", "opportunities", "contacts"), use that table.
- If the user is ambiguous, ask: "Which table would you like to search? For example: contacts, accounts, opportunities, leads, etc."
- Use
describe('tables/')to resolve the table's logical name if needed.
Step 2 — Discover the schema
Before querying, call describe('tables/{tablename}') to retrieve:
- The table's primary name field (used for display).
- The table's primary key field (used internally for record lookup).
- Available columns and their logical names and types.
Note the primary key field name (e.g. accountid) so you can request its
value when querying. The primary key GUID values returned by later queries
stay internal — never display them to the user.
Step 3 — Find records
- Query the table using
read_query, always retrieving at least:- The primary name field
- A key identifier field (e.g. email, account number, status)
- The primary key (for internal use only)
- Apply any search filters the user provides (name, keyword, status, date range, related record, etc.).
- Return at most 15 rows. If more than 15 records match, show the first 15 and prompt the user to narrow the search.
- If a field has no value, show
(none).
Present results as a numbered markdown list, or a table with a leading number column so the user can select by number:
| # | Record Name | Key Identifier |
|---|---|---|
| 1 | Example Corp | account@example.com |
| 2 | Another Record | 555-0100 |
Step 4 — Select a record
When the user selects a record (by number, name, or identifier):
- Re-query the Dataverse table using the internally stored primary key GUID.
- Display the most useful ~20 fields for that record, presented as a readable labeled list or table.
- Omit empty/null fields unless the user requests the full record.
- Never reveal GUIDs or internal identifiers.
Example detail view:
| Field | Value |
|---|---|
| Name | Example Corp |
| account@example.com | |
| Phone | 555-0100 |
| City | Seattle |
| State | WA |
Remembering preferred fields
- If the user requests a different set of fields (add, remove, or replace), remember those preferences using memory tools.
- Default to the user's preferred field set on all subsequent detail lookups — in this and future conversations — until the user changes it again.
Supported tables
The skill works with any Dataverse table. Common examples:
| Table display name | Logical name |
|---|---|
| Contacts | contact |
| Accounts | account |
| Opportunities | opportunity |
| Leads | lead |
| Cases | incident |
| Products | product |
| Orders | salesorder |
| Invoices | invoice |
| Activities | activitypointer |
| Users | systemuser |
Use describe('tables/') to discover all available tables in the environment.
Guardrails
- Present matching records as a numbered markdown list, or a table with a leading number column (# / Record Name / Key Identifier).
- Do not expose raw GUIDs, internal IDs, query syntax, or raw tool payloads to the user.
- Do not emit adaptive card or suggested-action code blocks.
- When a search yields no results, say so clearly and suggest alternative search terms.
- When a table is not found, suggest similar table names or ask the user to clarify.
- When more than 15 records match, always prompt the user to refine the search rather than paginating silently.
Tone
Be concise and helpful. Explain uncertainty rather than hiding it, and never present fabricated data as if it came from Dataverse.
04 同仓库更多 Skills
stakeholder-and-decision-map
Mines customer interactions to identify stakeholders, infer their likely roles and engagement, map the decision process, and highlight who or what may be missing. Use when asked to "map a deal's buying group", identify influential or missing stakeholders, "assess who has gone quiet", or "explain how the customer will decide". Do not use for phased engagement plans, contact sequences, choosing or drafting outreach to the single next contact, seller or team performance reviews, or contacting, scheduling, or changing records.
sales-progress-update
Creates or refreshes a sales progress update for a manager or team about work done, deal movement, pending outcomes, supported forecast position, and help needed. Use when asked to "create my weekly sales update", "refresh my sales progress deck", "report my forecast position", "where do I stand against my quarter forecast", or "catch my manager up on committed deals". Do NOT use for non-sales project updates, a since-date deal change digest, momentum or blocker analysis, meeting prep, or outreach drafting.
submission-assemble
Put the checked CSR or 510(k) sections together in template order with a reviewer-facing open-items register, as a draft package for human sign-off. Use when the user asks "assemble the CSR draft", "put the module together for review", "build the review package with the open items on top", "compile the 510(k) sections in order" or "package this up for the submission lead". Do NOT use for assembling an unchecked draft - use consistency-check instead. Do NOT use for loading protocol, SAP or TLF sources - use source-ingest instead. Do NOT use for compiling general documents or slide decks - use the built-in docx or pptx skill instead. Do NOT use for filing or submitting to a regulator - use the sponsor's validated gateway, operated by a human, instead. Guardrail: draft for human approval only (L1); status is draft_clean or draft_open_items, never submitted.
source-ingest
Pull every number, date and population definition out of a study's protocol, SAP, TLF tables, investigator brochure and prior approved text into one cited fact map, keyed per config/field-dictionary.json, before any CSR or 510(k) section is written. Use when the user asks "here's the locked TLF set and SAP, set up the CSR", "load the protocol and tables before we start drafting", "what figures do we have from the database lock?", "pull the disposition counts out of Table 14.1.1" or "ingest the IB for the 510(k)". Do NOT use for drafting or assembling submission sections - use section-draft or submission-assemble instead. Do NOT use for reconciling a patient's medications - use the discharge-care-transition plugin instead. Guardrail: reads and cites sources only; never estimates, rounds or invents a fact.
section-plan
Work out which sections a CSR or 510(k) requires, from the templates in config, check each one against the cited fact map, and name what is missing before a word is drafted. Use when the user asks "what do we still need before we can draft the CSR?", "which sections are ready to start?", "what's blocking the performance data section?", "do we have everything for the synopsis?" or "map our tables to the E3 structure". Do NOT use for writing section language - use section-draft instead. Do NOT use for cross-checking a finished draft - use consistency-check instead. Do NOT use for outlining general Word documents or business reports - use the built-in docx skill instead. Only structures with a template in config are supported. Guardrail: plans only; never marks a section ready on a missing fact and never invents a structure.
section-draft
Write or revise the language for one planned CSR or 510(k) section - synopsis, efficacy, safety, discussion, device description - using only figures already in the cited fact map, each with its TLF or SAP citation. Use when the user asks "draft the Synopsis from our locked tables", "write up safety from Table 14.3.1", "give me a first pass at the discussion", "draft the device description for the 510(k)" or "tighten the wording of the Discussion section". Do NOT use for supplying a number not already in source_facts - use source-ingest instead. Do NOT use for verifying a draft's figures - use consistency-check instead. Do NOT use for appeal letters, clinical notes or discharge summaries - use the matching HLS plugin instead. Guardrail: drafts for human approval only (L1); never asserts an unsourced number or harmonises two figures.