mcpField
C
csm-case-summarization

csm-case-summarization

github.com/happy-technologies-llcProductivity4141 installsUpdated 2d ago
Repository

About csm-case-summarization

csm-case-summarization is a skill for summarizing ServiceNow Customer Service Management cases. It combines customer context, interaction history, and pending actions for handoffs, escalation reviews, and management reporting.

Key features

  1. 01Consolidate case, contact, and account details
  2. 02Build a timeline of interactions and communications
  3. 03Identify resolution status and pending actions
  4. 04Summarize related tasks, child cases, and escalation history
  5. 05Produce concise management summaries

Use cases

  1. 01Prepare case overviews for shift handoffs
  2. 02Review escalated cases and their history
  3. 03Regain case context after time away
  4. 04Report on cases for key accounts to management

MCP support

The skill uses MCP to query ServiceNow case, interaction, task, journal, and email records, then assembles the information into a case summary.

Install

Copy the command and run it in a terminal.

$npx skills add https://github.com/happy-technologies-llc/happy-platform-skills --skill csm-case-summarization

After installing, type/csm-case-summarizationin Claude Code to confirm it loaded.

Details

From the project README

Case Summarization

Overview

This skill provides a structured approach to generating comprehensive summaries of Customer Service Management (CSM) cases in ServiceNow. It helps you:

  • Retrieve and consolidate all case details including contact, account, and product information
  • Build a chronological timeline of interactions, activities, and communications
  • Identify current resolution status and any pending actions
  • Summarize related tasks, child cases, and escalation history
  • Produce a concise executive summary suitable for handoffs or management review

When to use: When a CSM agent needs a quick overview of a case for shift handover, escalation review, management reporting, or returning to a case after time away.

Prerequisites

  • Roles: sn_customerservice_agent, sn_customerservice_manager, or csm_admin
  • Access: Read access to sn_customerservice_case, interaction, sn_customerservice_task, sys_journal_field, and sys_email tables
  • Knowledge: Familiarity with CSM case lifecycle states and your organization's case categories

Procedure

Step 1: Retrieve Core Case Details

Fetch the primary case record with all relevant fields.

Using MCP (Claude Code/Desktop):

Tool: SN-Get-Record
Parameters:
  table_name: sn_customerservice_case
  sys_id: [case_sys_id]
  fields: number,short_description,description,state,priority,urgency,impact,category,subcategory,contact,account,consumer,product,asset,assigned_to,assignment_group,opened_at,opened_by,resolved_at,resolved_by,closed_at,closed_by,resolution_code,resolution_notes,escalation,severity,sla_due,business_duration,calendar_duration,reassignment_count,reopen_count,contact_type

If you only have the case number, search first:

Tool: SN-Query-Table
Parameters:
  table_name: sn_customerservice_case
  query: number=CS0012345
  fields: sys_id,number,short_description,description,state,priority,urgency,impact,category,subcategory,contact,account,consumer,product,asset,assigned_to,assignment_group,opened_at,resolved_at,closed_at,resolution_code,resolution_notes,escalation,severity,contact_type
  limit: 1

Using REST API:

GET /api/now/table/sn_customerservice_case?sysparm_query=number=CS0012345&sysparm_fields=sys_id,number,short_description,description,state,priority,urgency,impact,category,subcategory,contact,account,consumer,product,asset,assigned_to,assignment_group,opened_at,resolved_at,closed_at,resolution_code,resolution_notes,escalation,severity,contact_type&sysparm_limit=1&sysparm_display_value=true
Step 2: Retrieve Customer and Account Context

Get the customer account and contact information to provide context.

Using MCP:

Tool: SN-Query-Table
Parameters:
  table_name: customer_account
  query: sys_id=[account_sys_id]
  fields: sys_id,name,number,account_code,industry,customer,notes,street,city,state,country,phone,customer_tier
  limit: 1
Tool: SN-Query-Table
Parameters:
  table_name: customer_contact
  query: sys_id=[contact_sys_id]
  fields: sys_id,name,email,phone,title,account,timezone,preferred_contact_method
  limit: 1

Using REST API:

GET /api/now/table/customer_account/{account_sys_id}?sysparm_fields=sys_id,name,number,account_code,industry,customer_tier,phone&sysparm_display_value=true

GET /api/now/table/customer_contact/{contact_sys_id}?sysparm_fields=sys_id,name,email,phone,title,preferred_contact_method&sysparm_display_value=true
Step 3: Gather Interaction History

Retrieve all interactions (phone calls, chats, portal submissions) linked to the case.

Using MCP:

Tool: SN-Query-Table
Parameters:
  table_name: interaction
  query: parent=<case_sys_id>^ORDERBYDESCopened_at
  fields: sys_id,number,type,channel,state,opened_at,closed_at,short_description,assigned_to,direction,duration
  limit: 50

Using REST API:

GET /api/now/table/interaction?sysparm_query=parent=<case_sys_id>^ORDERBYDESCopened_at&sysparm_fields=sys_id,number,type,channel,state,opened_at,closed_at,short_description,assigned_to,direction,duration&sysparm_limit=50&sysparm_display_value=true
Step 4: Retrieve Case Activities and Work Notes

Pull journal entries (work notes, additional comments) to build the activity timeline.

Using MCP:

Tool: SN-Query-Table
Parameters:
  table_name: sys_journal_field
  query: element_id=<case_sys_id>^element=work_notes^ORelement=comments^ORDERBYDESCsys_created_on
  fields: sys_id,element,value,sys_created_on,sys_created_by
  limit: 100

Using REST API:

GET /api/now/table/sys_journal_field?sysparm_query=element_id=<case_sys_id>^element=work_notes^ORelement=comments^ORDERBYDESCsys_created_on&sysparm_fields=sys_id,element,value,sys_created_on,sys_created_by&sysparm_limit=100
Step 5: Check Related Tasks and Child Cases

Identify any child tasks or related cases.

Using MCP:

Tool: SN-Query-Table
Parameters:
  table_name: sn_customerservice_task
  query: parent=<case_sys_id>^ORDERBYDESCsys_created_on
  fields: sys_id,number,short_description,state,assigned_to,assignment_group,priority,opened_at,closed_at
  limit: 20
Tool: SN-Query-Table
Parameters:
  table_name: sn_customerservice_case
  query: parent=<case_sys_id>^ORDERBYDESCsys_created_on
  fields: sys_id,number,short_description,state,priority,opened_at,closed_at
  limit: 10

Using REST API:

GET /api/now/table/sn_customerservice_task?sysparm_query=parent=<case_sys_id>^ORDERBYDESCsys_created_on&sysparm_fields=sys_id,number,short_description,state,assigned_to,assignment_group,priority,opened_at,closed_at&sysparm_limit=20&sysparm_display_value=true

GET /api/now/table/sn_customerservice_case?sysparm_query=parent=<case_sys_id>^ORDERBYDESCsys_created_on&sysparm_fields=sys_id,number,short_description,state,priority,opened_at,closed_at&sysparm_limit=10&sysparm_display_value=true
Step 6: Retrieve Email Communications

Pull email records associated with the case.

Using MCP:

Tool: SN-Query-Table
Parameters:
  table_name: sys_email
  query: instance=<case_sys_id>^ORDERBYDESCsys_created_on
  fields: sys_id,subject,type,recipients,sys_created_on,sys_created_by,direct,content_type
  limit: 30

Using REST API:

GET /api/now/table/sys_email?sysparm_query=instance=<case_sys_id>^ORDERBYDESCsys_created_on&sysparm_fields=sys_id,subject,type,recipients,sys_created_on,sys_created_by,direct&sysparm_limit=30&sysparm_display_value=true
Step 7: Build the Case Summary

Assemble all collected data into a structured summary:

=== CASE SUMMARY ===
Case Number: CS0012345
Status: [state] | Priority: [priority] | Severity: [severity]
Opened: [opened_at] | Duration: [business_duration]

CUSTOMER CONTEXT:
Account: [account_name] (Tier: [customer_tier])
Contact: [contact_name] | [email] | [phone]
Product: [product] | Asset: [asset]
Contact Method: [contact_type]

ISSUE DESCRIPTION:
[short_description]
[description - first 500 chars]

TIMELINE: (most recent first)
[date] - [activity_type]: [summary_of_entry]
[date] - [activity_type]: [summary_of_entry]
...

INTERACTIONS: [count] total
- [date] [channel] ([direction]): [short_description] - [state]
...

RELATED TASKS: [count] total ([open_count] open, [closed_count] closed)
- [task_number]: [short_description] - [state]
...

EMAILS: [count] total ([inbound_count] inbound, [outbound_count] outbound)
- [date] [type]: [subject]
...

RESOLUTION STATUS:
State: [state]
Resolution Code: [resolution_code]
Resolution Notes: [resolution_notes]
Reassignment Count: [reassignment_count]
Reopen Count: [reopen_count]

KEY OBSERVATIONS:
- [escalation status]
- [SLA status]
- [pending items]
- [risk factors]

Tool Usage

MCP Tools Reference
ToolWhen to Use
SN-Natural-Language-SearchNatural language case lookup (e.g., "find open P1 cases for Acme Corp")
SN-Query-TableStructured queries across case, interaction, task, email tables
SN-Get-RecordRetrieve a single record by sys_id with all fields
REST API Reference
EndpointMethodPurpose
/api/now/table/sn_customerservice_caseGETQuery case records
/api/now/table/interactionGETRetrieve case interactions
/api/now/table/sn_customerservice_taskGETGet related tasks
/api/now/table/sys_journal_fieldGETPull work notes and comments
/api/now/table/sys_emailGETRetrieve email communications
/api/now/table/customer_accountGETCustomer account details
/api/now/table/customer_contactGETContact details

Best Practices

  • Use display values: Always pass sysparm_display_value=true in REST calls to get readable names instead of sys_ids
  • Limit journal entries: Work notes can be very long; summarize rather than including full text
  • Check SLA status: Always note if the case is approaching or has breached SLA targets
  • Identify patterns: Look for repeated reassignments or reopens as indicators of complexity
  • Respect privacy: Omit sensitive personal data from summaries shared with non-authorized personnel
  • Note escalation history: Highlight any escalation changes and the reasons behind them

Troubleshooting

"Case not found"

Cause: Case number format incorrect or case is in a different scope Solution: Verify the prefix (CS vs CSM vs other) and check if the case exists in a different application scope. Try searching with numberLIKECS001234.

"No interactions found"

Cause: Interactions may be linked via a different relationship field Solution: Check the parent and document_id fields on interaction. Also query with document=sn_customerservice_case^document_id=<case_sys_id>.

"Journal entries are empty"

Cause: Journal fields are stored separately and may require explicit access Solution: Ensure your role has access to sys_journal_field. Try the case REST API with sysparm_fields=work_notes,comments which returns journal directly.

"Cannot read customer account"

Cause: Account record is in a restricted scope or has ACL restrictions Solution: Verify you have the customer_account_read or sn_customerservice_agent role.

Examples

Example 1: Open Case Summary for Shift Handover

Scenario: Agent needs a quick summary of case CS0056789 before taking over from a colleague.

Step 1 - Get case:

Tool: SN-Query-Table
Parameters:
  table_name: sn_customerservice_case
  query: number=CS0056789
  fields: sys_id,number,short_description,state,priority,category,contact,account,assigned_to,assignment_group,opened_at,escalation
  limit: 1

Step 2 - Get recent work notes:

Tool: SN-Query-Table
Parameters:
  table_name: sys_journal_field
  query: element_id=<sys_id>^element=work_notes^ORDERBYDESCsys_created_on
  fields: value,sys_created_on,sys_created_by
  limit: 10

Output Summary:

CASE CS0056789 - SHIFT HANDOVER SUMMARY
Status: In Progress | Priority: P2 | Escalation: Normal
Customer: Acme Corp (Tier: Gold) | Contact: Jane Smith
Issue: Unable to process returns through online portal
Opened: 2026-03-15 09:30 | Age: 4 days

RECENT ACTIVITY:
- Mar 18: Agent reviewed portal logs, identified session timeout issue
- Mar 17: Customer provided browser details and screenshots
- Mar 16: Initial triage, assigned to Portal Support team
- Mar 15: Case created via phone interaction

PENDING: Awaiting fix deployment for session timeout bug (DEF0034521)
Example 2: Escalated Case Executive Summary

Scenario: Manager requests a summary of all P1 escalated cases for a key account.

Tool: SN-Query-Table
Parameters:
  table_name: sn_customerservice_case
  query: account=<account_sys_id>^priority=1^escalation!=0^stateNOT IN6,7
  fields: number,short_description,state,priority,escalation,assigned_to,opened_at,sla_due
  limit: 10

Output:

ESCALATED P1 CASES - GLOBEX CORPORATION
Total: 3 active P1 cases

1. CS0045001 - Production API gateway returning 503 errors
   State: In Progress | Escalated: Level 2 | SLA Due: Mar 19 14:00
   Owner: David Chen (Platform Support)

2. CS0045123 - Batch processing failure affecting invoicing
   State: Awaiting Info | Escalated: Level 1 | SLA Due: Mar 20 09:00
   Owner: Sarah Kim (Data Services)

3. CS0045200 - SSO authentication failing intermittently
   State: In Progress | Escalated: Level 3 | SLA Due: Mar 19 10:00
   Owner: Mike Johnson (Identity Team)

RISK: CS0045200 is at Level 3 escalation with SLA due in 2 hours.

Related Skills

  • csm/resolution-notes - Generate resolution documentation for case closure
  • csm/sentiment-analysis - Analyze customer sentiment across case communications
  • csm/activity-response - Generate contextual responses for case activities
  • itsm/incident-lifecycle - Related incident management processes
  • reporting/sla-analysis - SLA tracking and reporting

Comments

Markdown supported