Dataverse People Lookup
Answer "What is this person's title, location, and manager?" by querying RoverPeople through the Dataverse MCP.
Prerequisites
- Dataverse MCP configured and authenticated (
user-Dataverse). - If
STATUS.mdindicates auth is required, callmcp_authforuser-Dataversefirst. - Optional: read
ME.mdat project root for context on the requester.
Workflow
Run the 4-step Dataverse pipeline. Do not skip steps.
Step 1 — Identify data product
identify_dataproducts
user_query: "employee profile title location manager for [PERSON]"
Expected result: RoverPeople (ai_ready).
Step 2 — Shortlist tables
shortlist_tables
data_product: roverpeople
user_query: "title, location, manager for [PERSON]"
Expected table: ROVER_PEOPLE_CURR in schema RHAI_MARTS.
Step 3 — Generate SQL
get_sql
data_product: roverpeople
tables_list: [{ name: ROVER_PEOPLE_CURR, schema: RHAI_MARTS, description: ... }]
user_query: <see Query patterns below>
get_sql prepends the authenticated user's identity from JWT. Use that for "who am I?" queries.
Step 4 — Execute and present
execute_sql
sql: <generated SQL>
Present results using the output template. See reference.md for fields, matching rules, and edge cases.
Query patterns
Pass these as user_query to get_sql:
| Scenario | user_query |
|---|---|
| Named person | Look up [Full Name]. Return title, location (geo/office), manager name and title. |
Look up employee with email [user@redhat.com]. Return title, location, manager. |
|
| Current user | Who am I? Return my title, location, and manager. |
| Ambiguous name | Look up employees matching [Last Name]. Return title, location, manager. If multiple matches, return all candidates ordered by best match. |
Output template
## [Name]
| Field | Value |
|---|---|
| **Title** | {TITLE} |
| **Location** | {GEO}{, OFFICE if available} |
| **Manager** | {MANAGER_NAME} — {MANAGER_TITLE} |
| **Email** | {MAIL} |
**Manager contact:** {MANAGER_EMAIL}
Multiple matches
If more than one person matches, list each in a compact table:
| Name | Title | Location | Manager |
|---|---|---|---|
| ... | ... | ... | ... |
Ask the user to clarify only if matches are genuinely ambiguous (same name, different people).
No match
Say clearly that RoverPeople returned no current employee for the query. Suggest trying email or full name.
Rules
- Current employees only —
ROVER_PEOPLE_CURRfilters to active staff (term_datenull,former_employeefalse). - Do not guess — if Dataverse returns nothing, do not fabricate title or manager from memory or LinkedIn.
- Location — prefer
GEO(region). IncludeOFFICEor city fields if present in the query result. - Manager chain — return direct manager only unless the user asks for the full chain.
- Privacy — this mart is approved for AI use; still present only fields returned by the query.
Examples
User: What is Gunnar's title, location, and manager?
identify_dataproducts→ RoverPeopleshortlist_tables→ROVER_PEOPLE_CURRget_sql→ lookup by name "Gunnar"execute_sql→ format response
User: Who am I?
Same pipeline; get_sql uses JWT identity automatically.
Additional resources
- reference.md — table schema, MCP tool details, troubleshooting
- dataaccess.md — full Dataverse catalog (project root)