Install
$ agentstack add skill-igptai-skills-contract-renewal-radar ✓ scanned · ✓ verified, works with Claude Code, Cursor, and more.
Security review
✓ PassedNo issues found. Passed automated security review. · v0.1.0 How review works →
- ✓ Prompt-injection patterns
- ✓ Secret / credential exfiltration
- ✓ Dangerous shell & filesystem operations
- ✓ Untrusted network calls
- ✓ Known-malicious package signatures
What it can access
- ✓ Network access No
- ✓ Filesystem access No
- ✓ Shell / process execution No
- ✓ Environment & secrets No
- ✓ Dynamic code execution No
From automated source analysis of v0.1.0. “Used” means the capability is present in the source — more access means more to trust, not that it’s unsafe.
Verified badge
Passed review? Show it. Paste this badge into your README, it links to the public security report.
Reliability & compatibility
Declared compatibility
Compatibility is declared by the source manifest. End-to-end runtime verification is coming, see below.
We're building live execution health for every listing: tool-call success rate, median latency, uptime, and last-checked timestamps, measured, not self-reported. It isn't live yet, so we don't show numbers we can't stand behind.
How agent discovery & health will work →About
Contract Renewal Radar
Prerequisites
This skill needs the iGPT MCP at https://mcp.igpt.ai/.
If the MCP tools aren't available or return an auth error, tell the user to install the iGPT plugin (/plugin marketplace add igptai/skills) or add https://mcp.igpt.ai/ as a connector, then complete OAuth and say "ready". Retry once after they confirm. Never invent tokens or OAuth URLs. For deeper troubleshooting: https://raw.githubusercontent.com/igptai/skills/main/shared/mcp-guard.md
What This Skill Does
Scans email for every vendor and supplier contract referenced, extracts expiry and renewal dates, identifies notice periods, flags auto-renewal risks, and returns a deadline-ordered calendar so procurement can act before contracts renew unfavorably or lapse unexpectedly.
Workflow
- Before calling any tool, collect these values from the user. Offer the
defaults and let the user override them; do not invent values they did not give.
- [time_range] — what window of email to scan. The user may give this
in any form ("last 24 months", "the last 2 years", "May 2024", "since procurement reset"). Default: the last 24 months. Keep the user's natural phrasing for use in the ask input; convert to ISO dates separately for the search call.
- [category_scope] — either "all" (default) or a specific supplier
category to focus on (e.g. "SaaS", "logistics", "raw materials").
- [categoryclause] — derived. When [categoryscope] is not "all",
set to " for [categoryscope] vendors". When [categoryscope] is "all", set to empty string.
- Call search with:
- query: contract renew expire notice period auto-renewal terminate
extend renegotiate vendor supplier agreement (if [category_scope] is not "all", append the category to the query)
- datefrom: ISO start date derived from [timerange]
- dateto: ISO end date derived from [timerange] (or today if open-ended)
- Call ask with:
- input: Review all vendor and supplier email threads from [timerange][categoryclause] that reference contracts or agreements. For each contract identify: the vendor, the type of agreement, the expiry or renewal date, the notice period required to cancel or renegotiate, whether the contract auto-renews, the annual value if mentioned, and whether a renegotiation or cancellation should be considered based on any satisfaction signals in the email thread.
- output_format:
{ "strict": true, "schema": { "type": "object", "description": "Vendor contract renewal radar showing all upcoming expiries and renewal deadlines", "additionalProperties": false, "properties": { "asof": { "type": "string", "description": "ISO8601 date when this report was generated" }, "contracts": { "type": "array", "description": "List of every vendor contract with renewal or expiry tracking", "items": { "type": "object", "description": "A single vendor contract with renewal deadline details", "additionalProperties": false, "properties": { "vendor": { "type": "string", "description": "Name of the vendor or supplier" }, "contracttype": { "type": "string", "description": "Type of vendor agreement", "enum": [ "saassubscription", "serviceagreement", "supplycontract", "maintenancecontract", "licensingagreement", "frameworkagreement", "masterserviceagreement", "other" ] }, "description": { "type": "string", "description": "Brief description of what this contract covers" }, "expirydate": { "type": "string", "description": "ISO8601 date the contract expires or auto-renews, empty string if unknown" }, "daysuntilexpiry": { "type": "number", "description": "Number of days until expiry or auto-renewal, -1 if unknown" }, "noticeperioddays": { "type": "number", "description": "Days of advance notice required to cancel or prevent auto-renewal, 0 if not found" }, "actiondeadline": { "type": "string", "description": "ISO8601 date by which procurement must act to avoid unwanted auto-renewal or expiry" }, "autorenews": { "type": "boolean", "description": "Whether this contract auto-renews if no action is taken" }, "annualvalue": { "type": "number", "description": "Annual contract value in local currency, 0 if not found" }, "currency": { "type": "string", "description": "Currency of the annual value" }, "satisfactionsignal": { "type": "string", "description": "Overall satisfaction with this vendor based on email signals", "enum": ["positive", "neutral", "negative", "unknown"] }, "renewalrecommendation": { "type": "string", "description": "Recommended action for this contract renewal", "enum": [ "renewasis", "renegotiatebeforerenewal", "evaluatealternatives", "cancel", "letexpire", "unknown" ] }, "urgency": { "type": "string", "description": "Urgency level for taking action on this contract", "enum": ["critical", "high", "medium", "low"] } }, "required": [ "vendor", "contracttype", "description", "expirydate", "daysuntilexpiry", "noticeperioddays", "actiondeadline", "autorenews", "annualvalue", "currency", "satisfactionsignal", "renewalrecommendation", "urgency" ] } }, "criticalcount": { "type": "number", "description": "Number of contracts requiring critical urgency action" }, "autorenewalriskcount": { "type": "number", "description": "Number of contracts at risk of unwanted auto-renewal if no action is taken" }, "summary": { "type": "string", "description": "One or two sentence summary of upcoming renewals and most urgent actions" } }, "required": [ "asof", "contracts", "criticalcount", "autorenewalriskcount", "summary" ] } }
- Present ordered by urgency then action_deadline. Lead with critical count
and autorenewalrisk count. Flag any contracts with negative satisfaction signals that are approaching auto-renewal.
- Ask: "Would you like me to draft a cancellation notice or renegotiation
request for any of these vendors?"
Source & license
This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.
- Author: igptai
- Source: igptai/skills
- License: MIT
- Homepage: https://www.igpt.ai
Install and usage instructions live in the source repository linked above.
Reviews
No reviews yet, be the first.
Write a review
Versions
- v0.1.0 Imported from the upstream source.