{
  "schemaVersion": "1.0",
  "item": {
    "slug": "servicenow-agent",
    "name": "ServiceNow Agent",
    "source": "tencent",
    "type": "skill",
    "category": "开发工具",
    "sourceUrl": "https://clawhub.ai/TheSethRose/servicenow-agent",
    "canonicalUrl": "https://clawhub.ai/TheSethRose/servicenow-agent",
    "targetPlatform": "OpenClaw"
  },
  "install": {
    "downloadMode": "redirect",
    "downloadUrl": "/downloads/servicenow-agent",
    "sourceDownloadUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=servicenow-agent",
    "sourcePlatform": "tencent",
    "targetPlatform": "OpenClaw",
    "installMethod": "Manual import",
    "extraction": "Extract archive",
    "prerequisites": [
      "OpenClaw"
    ],
    "packageFormat": "ZIP package",
    "includedAssets": [
      "SKILL.md",
      "cli.mjs",
      "references/aggregate-api.yaml",
      "references/attachment.yaml",
      "references/service-catalog-api.yaml",
      "references/table-api.yaml"
    ],
    "primaryDoc": "SKILL.md",
    "quickSetup": [
      "Download the package from Yavira.",
      "Extract the archive and review SKILL.md first.",
      "Import or place the package into your OpenClaw setup."
    ],
    "agentAssist": {
      "summary": "Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.",
      "steps": [
        "Download the package from Yavira.",
        "Extract it into a folder your agent can access.",
        "Paste one of the prompts below and point your agent at the extracted folder."
      ],
      "prompts": [
        {
          "label": "New install",
          "body": "I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Tell me what you changed and call out any manual steps you could not complete."
        },
        {
          "label": "Upgrade existing",
          "body": "I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Summarize what changed and any follow-up checks I should run."
        }
      ]
    },
    "sourceHealth": {
      "source": "tencent",
      "status": "healthy",
      "reason": "direct_download_ok",
      "recommendedAction": "download",
      "checkedAt": "2026-05-07T17:22:31.273Z",
      "expiresAt": "2026-05-14T17:22:31.273Z",
      "httpStatus": 200,
      "finalUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=afrexai-annual-report",
      "contentType": "application/zip",
      "probeMethod": "head",
      "details": {
        "probeUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=afrexai-annual-report",
        "contentDisposition": "attachment; filename=\"afrexai-annual-report-1.0.0.zip\"",
        "redirectLocation": null,
        "bodySnippet": null
      },
      "scope": "source",
      "summary": "Source download looks usable.",
      "detail": "Yavira can redirect you to the upstream package for this source.",
      "primaryActionLabel": "Download for OpenClaw",
      "primaryActionHref": "/downloads/servicenow-agent"
    },
    "validation": {
      "installChecklist": [
        "Use the Yavira download entry.",
        "Review SKILL.md after the package is downloaded.",
        "Confirm the extracted package contains the expected setup assets."
      ],
      "postInstallChecks": [
        "Confirm the extracted package includes the expected docs or setup files.",
        "Validate the skill or prompts are available in your target agent workspace.",
        "Capture any manual follow-up steps the agent could not complete."
      ]
    },
    "downloadPageUrl": "https://openagent3.xyz/downloads/servicenow-agent",
    "agentPageUrl": "https://openagent3.xyz/skills/servicenow-agent/agent",
    "manifestUrl": "https://openagent3.xyz/skills/servicenow-agent/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/servicenow-agent/agent.md"
  },
  "agentAssist": {
    "summary": "Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.",
    "steps": [
      "Download the package from Yavira.",
      "Extract it into a folder your agent can access.",
      "Paste one of the prompts below and point your agent at the extracted folder."
    ],
    "prompts": [
      {
        "label": "New install",
        "body": "I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Tell me what you changed and call out any manual steps you could not complete."
      },
      {
        "label": "Upgrade existing",
        "body": "I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Summarize what changed and any follow-up checks I should run."
      }
    ]
  },
  "documentation": {
    "source": "clawhub",
    "primaryDoc": "SKILL.md",
    "sections": [
      {
        "title": "ServiceNow Table API Read Only",
        "body": "Use this skill to read data from ServiceNow via the Table API. Do not create or update or delete records."
      },
      {
        "title": "Configuration",
        "body": "Set these environment variables in the .env file in this folder.\n\nSERVICENOW_DOMAIN instance domain such as myinstance.service-now.com\nSERVICENOW_USERNAME username for basic auth\nSERVICENOW_PASSWORD password for basic auth\n\nIf your domain already includes https:// then use it as is. Otherwise requests should be made to:\n\nhttps://$SERVICENOW_DOMAIN"
      },
      {
        "title": "Allowed Operations GET only",
        "body": "Use only the GET endpoints from these files.\n\nopenapi.yaml for Table API\nreferences/attachment.yaml for Attachment API\nreferences/aggregate-api.yaml for Aggregate API\nreferences/service-catalog-api.yaml for Service Catalog API"
      },
      {
        "title": "List records",
        "body": "GET /api/now/table/{tableName}"
      },
      {
        "title": "Get a record by sys_id",
        "body": "GET /api/now/table/{tableName}/{sys_id}\n\nNever use POST or PUT or PATCH or DELETE."
      },
      {
        "title": "Common Query Params Table API",
        "body": "sysparm_query encoded query such as active=true^priority=1\nsysparm_fields comma separated fields to return\nsysparm_limit limit record count to keep small for safety\nsysparm_display_value true or false or all\nsysparm_exclude_reference_link true to reduce clutter\n\nSee openapi.yaml for the full list of parameters."
      },
      {
        "title": "CLI",
        "body": "Use the bundled CLI for all reads. It pulls auth from .env by default. You can override with flags."
      },
      {
        "title": "Command overview",
        "body": "list table lists records from a table\nget table sys_id fetches one record by sys_id\nbatch file.json runs multiple read requests in one call\nattach reads attachments and file content\nstats table aggregates stats\nschema table lists valid field names and types\nhistory table sys_id reads full comment and work note timeline\nsc endpoint Service Catalog GET endpoints"
      },
      {
        "title": "Auth flags",
        "body": "--domain domain instance domain\n--username user\n--password pass"
      },
      {
        "title": "Query flags",
        "body": "Use any of these as --sysparm_* flags.\n\n--sysparm_query\n--sysparm_fields\n--sysparm_limit\n--sysparm_display_value\n--sysparm_exclude_reference_link\n--sysparm_suppress_pagination_header\n--sysparm_view\n--sysparm_query_category\n--sysparm_query_no_domain\n--sysparm_no_count"
      },
      {
        "title": "Attachment API params",
        "body": "--sysparm_query\n--sysparm_suppress_pagination_header\n--sysparm_limit\n--sysparm_query_category"
      },
      {
        "title": "Aggregate API params",
        "body": "--sysparm_query\n--sysparm_avg_fields\n--sysparm_count\n--sysparm_min_fields\n--sysparm_max_fields\n--sysparm_sum_fields\n--sysparm_group_by\n--sysparm_order_by\n--sysparm_having\n--sysparm_display_value\n--sysparm_query_category"
      },
      {
        "title": "Service Catalog params",
        "body": "--sysparm_view\n--sysparm_limit\n--sysparm_text\n--sysparm_offset\n--sysparm_category\n--sysparm_type\n--sysparm_catalog\n--sysparm_top_level_only\n--record_id\n--template_id\n--mode"
      },
      {
        "title": "Output",
        "body": "--pretty pretty print JSON output\n--out path save binary attachment content to a file"
      },
      {
        "title": "Examples",
        "body": "List recent incidents.\n\nnode cli.mjs list incident --sysparm_limit 5 --sysparm_fields number,short_description,priority,sys_id\n\nQuery with a filter.\n\nnode cli.mjs list cmdb_ci --sysparm_query \"operational_status=1^install_status=1\" --sysparm_limit 10\n\nFetch a single record.\n\nnode cli.mjs get incident <sys_id> --sysparm_fields number,short_description,opened_at\n\nOverride auth on the fly.\n\nnode cli.mjs list incident --domain myinstance.service-now.com --username admin --password \"***\" --sysparm_limit 3\n\nAttachment metadata and file download.\n\nnode cli.mjs attach list --sysparm_query \"table_name=incident\" --sysparm_limit 5\nnode cli.mjs attach file <sys_id> --out /tmp/attachment.bin\n\nAggregate stats.\n\nnode cli.mjs stats incident --sysparm_query \"active=true^priority=1\" --sysparm_count true\n\nService Catalog read only GETs.\n\nnode cli.mjs sc catalogs --sysparm_text \"laptop\" --sysparm_limit 5\nnode cli.mjs sc items --sysparm_text \"mac\" --sysparm_limit 5\nnode cli.mjs sc item <sys_id>\nnode cli.mjs sc item-variables <sys_id>"
      },
      {
        "title": "Service Catalog endpoints GET only",
        "body": "cart\ndelivery-address user_id\nvalidate-categories\non-change-choices entity_id\ncatalogs\ncatalog sys_id\ncatalog-categories sys_id\ncategory sys_id\nitems\nitem sys_id\nitem-variables sys_id\nitem-delegation item_sys_id user_sys_id\nproducer-record producer_id record_id\nrecord-wizard record_id wizard_id\ngenerate-stage-pool quantity\nstep-configs\nwishlist\nwishlist-item cart_item_id\nwizard sys_id"
      },
      {
        "title": "Schema Inspection",
        "body": "Use this if you are unsure of a field name.\n\nnode cli.mjs schema incident"
      },
      {
        "title": "Reading Ticket History",
        "body": "Use this to read the full conversation instead of just the current state.\n\nnode cli.mjs history incident <sys_id>"
      },
      {
        "title": "Specialist presets",
        "body": "Create JSON batch files under specialists/ to run multiple reads at once.\n\nspecialists/incidents.json\n\nEach entry supports sysparm_* fields plus these items.\n\nname label in the batch output\ntable target table\nsys_id optional single record fetch\n\nRun a batch preset.\n\nnode cli.mjs batch specialists/incidents.json --pretty"
      },
      {
        "title": "Output",
        "body": "The Table API returns JSON by default. Results appear under result."
      },
      {
        "title": "Notes",
        "body": "Keep result sizes small with sysparm_limit.\nUse sysparm_fields to avoid large payloads.\nThis skill is read only by design."
      },
      {
        "title": "Summary of the Agent Toolkit",
        "body": "list and get show the current state of records.\nattach shows files and screenshots.\nstats shows analytics and aggregates.\nsc shows requested item variables.\nschema shows the database map to correct errors.\nhistory shows the timeline of human conversations."
      },
      {
        "title": "Observations & Notes (important)",
        "body": "Service Catalog endpoints may return empty arrays depending on catalog content and search text — try more specific --sysparm_text terms or increase --sysparm_limit.\nsysparm_display_value is enabled by default for table reads to return human-friendly values (e.g., user names instead of sys_ids). If you need raw system ids, pass --sysparm_display_value false.\nKeep --sysparm_limit small for agent-initiated queries to avoid large payloads and timeouts. Prefer stats for counts or aggregates instead of downloading many rows.\nAttachments: metadata is available via attach list/attach get; use attach file <sys_id> --out <path> to download binary content for local analysis.\nSchema inspection (schema) avoids guessing field names and is the recommended first step before reading unknown tables.\nHistory (history) fetches journal entries (comments/work_notes) from sys_journal_field and is useful to read the full conversation thread for a ticket.\nUse --pretty to make JSON outputs readable for human review and to help the agent summarize long results."
      },
      {
        "title": "Recommended Batch Presets",
        "body": "I recommend these specialist JSON presets under specialists/ to speed up common read workflows. They are safe (read-only) and demonstrate how to combine related reads.\n\nspecialists/inspect_incident_schema.json — schema inspection for incident:\n\n[\n  {\n    \"name\": \"schema-incident\",\n    \"table\": \"sys_dictionary\",\n    \"sysparm_query\": \"name=incident^elementISNOTEMPTY\",\n    \"sysparm_fields\": \"element,column_label,internal_type,reference\",\n    \"sysparm_limit\": 500\n  }\n]\n\nspecialists/incident_history_template.json — history template (replace <SYS_ID> with the target sys_id before running):\n\n[\n  {\n    \"name\": \"incident-history\",\n    \"table\": \"sys_journal_field\",\n    \"sysparm_query\": \"name=incident^element_id=<SYS_ID>\",\n    \"sysparm_fields\": \"value,element,sys_created_on,sys_created_by\",\n    \"sysparm_order_by\": \"sys_created_on\",\n    \"sysparm_limit\": 500\n  }\n]\n\nspecialists/attachments_incident.json — recent attachments for incident table:\n\n[\n  {\n    \"name\": \"recent-incident-attachments\",\n    \"table\": \"attachment\",\n    \"sysparm_query\": \"table_name=incident\",\n    \"sysparm_fields\": \"sys_id,file_name,content_type,table_sys_id,sys_created_on\",\n    \"sysparm_limit\": 20\n  }\n]\n\nHow to use these:\n\nFor schema: node cli.mjs batch specialists/inspect_incident_schema.json --pretty\nFor history: replace <SYS_ID> then node cli.mjs batch specialists/incident_history_template.json --pretty (or run node cli.mjs history incident <SYS_ID> --pretty)\nFor attachments: node cli.mjs batch specialists/attachments_incident.json --pretty, then node cli.mjs attach file <sys_id> --out /tmp/file to download a file.\n\nThese presets are intentionally read-only and conservative (limits set small). Feel free to ask for additional presets (P1 dashboards, recent changes, escalations)."
      }
    ],
    "body": "ServiceNow Table API Read Only\n\nUse this skill to read data from ServiceNow via the Table API. Do not create or update or delete records.\n\nConfiguration\n\nSet these environment variables in the .env file in this folder.\n\nSERVICENOW_DOMAIN instance domain such as myinstance.service-now.com\nSERVICENOW_USERNAME username for basic auth\nSERVICENOW_PASSWORD password for basic auth\n\nIf your domain already includes https:// then use it as is. Otherwise requests should be made to:\n\nhttps://$SERVICENOW_DOMAIN\n\nAllowed Operations GET only\n\nUse only the GET endpoints from these files.\n\nopenapi.yaml for Table API\nreferences/attachment.yaml for Attachment API\nreferences/aggregate-api.yaml for Aggregate API\nreferences/service-catalog-api.yaml for Service Catalog API\nList records\nGET /api/now/table/{tableName}\nGet a record by sys_id\nGET /api/now/table/{tableName}/{sys_id}\n\nNever use POST or PUT or PATCH or DELETE.\n\nCommon Query Params Table API\nsysparm_query encoded query such as active=true^priority=1\nsysparm_fields comma separated fields to return\nsysparm_limit limit record count to keep small for safety\nsysparm_display_value true or false or all\nsysparm_exclude_reference_link true to reduce clutter\n\nSee openapi.yaml for the full list of parameters.\n\nCLI\n\nUse the bundled CLI for all reads. It pulls auth from .env by default. You can override with flags.\n\nCommand overview\nlist table lists records from a table\nget table sys_id fetches one record by sys_id\nbatch file.json runs multiple read requests in one call\nattach reads attachments and file content\nstats table aggregates stats\nschema table lists valid field names and types\nhistory table sys_id reads full comment and work note timeline\nsc endpoint Service Catalog GET endpoints\nAuth flags\n--domain domain instance domain\n--username user\n--password pass\nQuery flags\n\nUse any of these as --sysparm_* flags.\n\n--sysparm_query\n--sysparm_fields\n--sysparm_limit\n--sysparm_display_value\n--sysparm_exclude_reference_link\n--sysparm_suppress_pagination_header\n--sysparm_view\n--sysparm_query_category\n--sysparm_query_no_domain\n--sysparm_no_count\nAttachment API params\n--sysparm_query\n--sysparm_suppress_pagination_header\n--sysparm_limit\n--sysparm_query_category\nAggregate API params\n--sysparm_query\n--sysparm_avg_fields\n--sysparm_count\n--sysparm_min_fields\n--sysparm_max_fields\n--sysparm_sum_fields\n--sysparm_group_by\n--sysparm_order_by\n--sysparm_having\n--sysparm_display_value\n--sysparm_query_category\nService Catalog params\n--sysparm_view\n--sysparm_limit\n--sysparm_text\n--sysparm_offset\n--sysparm_category\n--sysparm_type\n--sysparm_catalog\n--sysparm_top_level_only\n--record_id\n--template_id\n--mode\nOutput\n--pretty pretty print JSON output\n--out path save binary attachment content to a file\nExamples\n\nList recent incidents.\n\nnode cli.mjs list incident --sysparm_limit 5 --sysparm_fields number,short_description,priority,sys_id\n\n\nQuery with a filter.\n\nnode cli.mjs list cmdb_ci --sysparm_query \"operational_status=1^install_status=1\" --sysparm_limit 10\n\n\nFetch a single record.\n\nnode cli.mjs get incident <sys_id> --sysparm_fields number,short_description,opened_at\n\n\nOverride auth on the fly.\n\nnode cli.mjs list incident --domain myinstance.service-now.com --username admin --password \"***\" --sysparm_limit 3\n\n\nAttachment metadata and file download.\n\nnode cli.mjs attach list --sysparm_query \"table_name=incident\" --sysparm_limit 5\nnode cli.mjs attach file <sys_id> --out /tmp/attachment.bin\n\n\nAggregate stats.\n\nnode cli.mjs stats incident --sysparm_query \"active=true^priority=1\" --sysparm_count true\n\n\nService Catalog read only GETs.\n\nnode cli.mjs sc catalogs --sysparm_text \"laptop\" --sysparm_limit 5\nnode cli.mjs sc items --sysparm_text \"mac\" --sysparm_limit 5\nnode cli.mjs sc item <sys_id>\nnode cli.mjs sc item-variables <sys_id>\n\nService Catalog endpoints GET only\ncart\ndelivery-address user_id\nvalidate-categories\non-change-choices entity_id\ncatalogs\ncatalog sys_id\ncatalog-categories sys_id\ncategory sys_id\nitems\nitem sys_id\nitem-variables sys_id\nitem-delegation item_sys_id user_sys_id\nproducer-record producer_id record_id\nrecord-wizard record_id wizard_id\ngenerate-stage-pool quantity\nstep-configs\nwishlist\nwishlist-item cart_item_id\nwizard sys_id\nSchema Inspection\n\nUse this if you are unsure of a field name.\n\nnode cli.mjs schema incident\n\nReading Ticket History\n\nUse this to read the full conversation instead of just the current state.\n\nnode cli.mjs history incident <sys_id>\n\nSpecialist presets\n\nCreate JSON batch files under specialists/ to run multiple reads at once.\n\nspecialists/incidents.json\n\nEach entry supports sysparm_* fields plus these items.\n\nname label in the batch output\ntable target table\nsys_id optional single record fetch\n\nRun a batch preset.\n\nnode cli.mjs batch specialists/incidents.json --pretty\n\nOutput\n\nThe Table API returns JSON by default. Results appear under result.\n\nNotes\nKeep result sizes small with sysparm_limit.\nUse sysparm_fields to avoid large payloads.\nThis skill is read only by design.\nSummary of the Agent Toolkit\nlist and get show the current state of records.\nattach shows files and screenshots.\nstats shows analytics and aggregates.\nsc shows requested item variables.\nschema shows the database map to correct errors.\nhistory shows the timeline of human conversations.\nObservations & Notes (important)\nService Catalog endpoints may return empty arrays depending on catalog content and search text — try more specific --sysparm_text terms or increase --sysparm_limit.\nsysparm_display_value is enabled by default for table reads to return human-friendly values (e.g., user names instead of sys_ids). If you need raw system ids, pass --sysparm_display_value false.\nKeep --sysparm_limit small for agent-initiated queries to avoid large payloads and timeouts. Prefer stats for counts or aggregates instead of downloading many rows.\nAttachments: metadata is available via attach list/attach get; use attach file <sys_id> --out <path> to download binary content for local analysis.\nSchema inspection (schema) avoids guessing field names and is the recommended first step before reading unknown tables.\nHistory (history) fetches journal entries (comments/work_notes) from sys_journal_field and is useful to read the full conversation thread for a ticket.\nUse --pretty to make JSON outputs readable for human review and to help the agent summarize long results.\nRecommended Batch Presets\n\nI recommend these specialist JSON presets under specialists/ to speed up common read workflows. They are safe (read-only) and demonstrate how to combine related reads.\n\nspecialists/inspect_incident_schema.json — schema inspection for incident:\n[\n  {\n    \"name\": \"schema-incident\",\n    \"table\": \"sys_dictionary\",\n    \"sysparm_query\": \"name=incident^elementISNOTEMPTY\",\n    \"sysparm_fields\": \"element,column_label,internal_type,reference\",\n    \"sysparm_limit\": 500\n  }\n]\n\nspecialists/incident_history_template.json — history template (replace <SYS_ID> with the target sys_id before running):\n[\n  {\n    \"name\": \"incident-history\",\n    \"table\": \"sys_journal_field\",\n    \"sysparm_query\": \"name=incident^element_id=<SYS_ID>\",\n    \"sysparm_fields\": \"value,element,sys_created_on,sys_created_by\",\n    \"sysparm_order_by\": \"sys_created_on\",\n    \"sysparm_limit\": 500\n  }\n]\n\nspecialists/attachments_incident.json — recent attachments for incident table:\n[\n  {\n    \"name\": \"recent-incident-attachments\",\n    \"table\": \"attachment\",\n    \"sysparm_query\": \"table_name=incident\",\n    \"sysparm_fields\": \"sys_id,file_name,content_type,table_sys_id,sys_created_on\",\n    \"sysparm_limit\": 20\n  }\n]\n\n\nHow to use these:\n\nFor schema: node cli.mjs batch specialists/inspect_incident_schema.json --pretty\nFor history: replace <SYS_ID> then node cli.mjs batch specialists/incident_history_template.json --pretty (or run node cli.mjs history incident <SYS_ID> --pretty)\nFor attachments: node cli.mjs batch specialists/attachments_incident.json --pretty, then node cli.mjs attach file <sys_id> --out /tmp/file to download a file.\n\nThese presets are intentionally read-only and conservative (limits set small). Feel free to ask for additional presets (P1 dashboards, recent changes, escalations)."
  },
  "trust": {
    "sourceLabel": "tencent",
    "provenanceUrl": "https://clawhub.ai/TheSethRose/servicenow-agent",
    "publisherUrl": "https://clawhub.ai/TheSethRose/servicenow-agent",
    "owner": "TheSethRose",
    "version": "0.1.1",
    "license": null,
    "verificationStatus": "Indexed source record"
  },
  "links": {
    "detailUrl": "https://openagent3.xyz/skills/servicenow-agent",
    "downloadUrl": "https://openagent3.xyz/downloads/servicenow-agent",
    "agentUrl": "https://openagent3.xyz/skills/servicenow-agent/agent",
    "manifestUrl": "https://openagent3.xyz/skills/servicenow-agent/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/servicenow-agent/agent.md"
  }
}