find-violation-details▌
efaa.sa/find-violation-details-ri8sqk · updated May 21, 2026
MDX-style export adds YAML metadata + attribution linking explainx.ai and this canonical listing URL.
Given a Saudi establishment ID (firmId) and a violation ID, retrieves the full violation record from EFAA — the National Violations Platform — including issuing entity, type, date, location, fine amount, payment status, due date, and objection eligibility.
| name | find-violation-details |
| title | EFAA Firm Violation Details Lookup |
| description | >- Given a Saudi establishment ID (firmId) and a violation ID, retrieves the full violation record from EFAA — the National Violations Platform — including issuing entity, type, date, location, fine amount, payment status, due date, and objection eligibility. |
| website | efaa.sa |
| category | government |
| tags | - government - saudi-arabia - violations - compliance - efaa - nafath - establishment |
| source | 'browserbase: agent-runtime 2026-05-21' |
| updated | '2026-05-21' |
| recommended_method | browser |
| alternative_methods | - method: api rationale: >- No public API. The .well-known/openid-configuration endpoint exists but returns Request Rejected to non-Nafath callers, and SDAIA has not published a developer-facing REST or GraphQL surface for firm violation lookup. Confirmed dead end as of Q2 2026 — do not waste cost re-investigating. - method: fetch rationale: >- The site requires Nafath SSO session cookies that can only be acquired through an interactive Nafath-app push approval. Bare HTTP fetch against efaa.sa lands on an empty .aspx WebForms shell that needs JS execution to render any navigation. |
| verified | true |
| proxies | true |
Find Violation Details for a Firm on EFAA (National Violations Platform)
Purpose
Given a Saudi establishment ("firm") identifier (Commercial Registration number / establishment ID, hereafter firmId) and a violationId issued against that establishment, retrieve the full violation record — issuing entity, violation type, date, location/description, fine amount, payment status, due date, objection eligibility, and any attachments — from EFAA (المنصة الوطنية للمخالفات, "إيفاء"), the Saudi national platform operated by the National Information Center (SDAIA). Read-only. The skill does not pay, object to, or otherwise mutate the violation.
When to Use
- A firm operator or accountant has received an SMS/email referencing a violation with an ID and needs the structured detail (which agency issued it, fine amount, payment deadline) before paying via SADAD.
- An automated compliance pipeline tracks open violations against an establishment portfolio and needs per-violation enrichment beyond the list-view summary.
- A legal team is preparing an objection and needs the issuing-entity contact, violation timestamp, and any evidence attached to a specific violation.
- A data agent is reconciling a third-party violations report against the authoritative EFAA record for a specific
firmId × violationIdpair.
Do not use this skill to look up individual (citizen/iqama) violations — that path is the same platform but a different login type (usertype=1 instead of the firm/partner login). See "Site-Specific Gotchas" for the alternate slug.
Workflow
EFAA exposes no public read-API; firm violation detail is gated behind Nafath (national SSO) login as a "Partner / Establishment" user (usertype=2). The recommended method is therefore browser, with the explicit pre-condition that the executing browser must egress from a Saudi Arabia IP — see gotchas.
-
Pre-flight: confirm reachability.
browse cloud fetch https://efaa.sa/about.aspx --proxiesshould return HTTP 200 with HTML containingالمنصة الوطنية للمخالفات. If it returns500 Internal Server Erroror the subsequentbrowse open ... --remotelands onchrome-error://chromewebdata/withERR_TIMED_OUT, the egress IP is outside Saudi Arabia and you cannot proceed — bail with a structurednot_reachableoutcome (see Expected Output). Do not waste turns retrying; the site is firewalled at the network layer, not blocked by a WAF you can talk to. -
Create a session with Saudi residential egress. EFAA traffic must exit from a
.saIP range. Standard Browserbase proxies (even withgeolocation.country: "SA") failed to reach the origin during evaluation — see gotchas for the empirical record. Use a Saudi-resident BYO-proxy plumbed throughbrowse cloud sessions create --body '{"proxies":[{"type":"external","server":"<sa-proxy-host:port>","username":"...","password":"..."}]}'. Verified browser mode (--verified) is recommended; cookies + Nafath OTP require a real-fingerprint browser. -
Open the firm login. Navigate to
https://efaa.sa/_iam/IAMLogin.aspx?lang=en&usertype=2. (usertype=1is the citizen/resident path;usertype=2is the establishment/partner path.lang=artoggles Arabic. Both surface the same Nafath redirect.) -
Authenticate via Nafath. EFAA's "Login" / "تسجيل الدخول" button triggers
__doPostBack('ctl00$linkPartnersLogin', ''), which redirects tonafath.sa(the Saudi national SSO). The Nafath flow requires:- National ID / Iqama of the firm representative (delegated signing authority).
- Nafath app push approval (the representative must approve the displayed two-digit code in the Nafath mobile app within ~60 seconds). EFAA also accepts a fallback OTP path to the registered phone number for some account types.
- On success, Nafath posts back to EFAA and the session redirects to the firm dashboard.
-
Switch to the establishment context. If the representative is authorized for multiple establishments, a chooser screen lists them by Commercial Registration number. Select the row matching the input
firmId. IffirmIdis not present in the list, the representative is not authorized for that establishment — returnnot_authorizedoutcome. -
Open the violations list. From the firm dashboard, the "المخالفات" / "Violations" tab loads a paginated table keyed on violation number. Each row carries: violation number, issuing entity (e.g. وزارة العمل / Ministry of HR, الجمارك / Customs, نقل / Transport, البلدية / Municipality), date, status (مدفوعة/غير مدفوعة, paid/unpaid), and amount.
-
Open the target violation. Either (a) use the table's search field to filter by
violationId, or (b) hit the deep-linkhttps://efaa.sa/ViolationDetails.aspx?vid=<violationId>if the platform exposes one for the logged-in firm (deep-link existence was not verifiable during evaluation — fall back to (a) if 404). Selecting the row opens a detail view rendering the fields listed in Expected Output. -
Extract the detail panel. Read DOM into a structured payload. Capture any "Attachments" / "Evidence" thumbnails (typically inspector photos for transport/customs violations) as URLs — do not download the binaries unless the caller asked for them.
-
Do not click any of: "Pay" / "ادفع", "Object" / "اعتراض", "Print" (Print triggers a server-side PDF generation that may log a download event). The skill is read-only.
-
Logout via the user menu's "Logout" / "تسجيل الخروج" entry to invalidate the session, then release the Browserbase session.
Site-Specific Gotchas
- Geo wall is hard. Across four sandbox iterations against
efaa.sa, every Browserbase egress attempted —us-west-2with the default proxy pool,us-west-2withproxies.geolocation.country: "SA",eu-central-1with the same SA geo-pin, andap-southeast-1with--proxies --verified— producedERR_TIMED_OUT. The--proxiesBrowserbase residential pool does not appear to include Saudi exit nodes in usable quantity forefaa.sa.browse cloud fetch <url> --proxiesreturns500 Internal Server Error(the platform's Fetch worker can't reach origin either). The origin is firewall-rejecting non-SA TCP, not WAF-blocking — there is no captcha or 403 page to interact with, just timeout. You must bring your own Saudi-resident proxy (residential ISP exit in.sa) for this skill to function. Do not waste cost re-testing the Browserbase pool. - The landing page is content-empty server-side.
https://efaa.sa/andhttps://efaa.sa/home.aspxrender a near-empty body in static HTML — the navigation is injected by client-side JS after the ASP.NET WebForms__doPostBackframework boots. A pure HTTP fetch of the landing page returns no useful structure; always drive a real browser. - Login button is a postback, not an anchor. The header's "Partners Login" button is wired to
javascript:__doPostBack('ctl00$linkPartnersLogin',''), not an<a href>. Click via the rendered button (browse click @<ref>) rather than constructing a URL — the postback carries__VIEWSTATEand__EVENTVALIDATIONtokens that Nafath needs on the return leg. - Two distinct usertypes.
IAMLogin.aspx?usertype=1is the individual (citizen / iqama / visitor) path.IAMLogin.aspx?usertype=2is the partner / establishment path. This skill targets the establishment path. The two trees are visually similar but the dashboard structure and the available violation fields differ — do not interchange them. - Nafath approval is human-in-the-loop. The Nafath app push needs a human to tap a two-digit confirmation code on the registered representative's phone within ~60s. Pure-headless automation cannot complete this; the skill is for agents that can prompt a human or that have a pre-warmed cookie/context. Persist the post-Nafath session via Browserbase
--context-idif you expect to look up multiple violations in one shift. firmIdsemantics. The "firm ID" EFAA actually keys on internally is the establishment's Commercial Registration (CR) number — typically a 10-digit numeric. The user may hand you a 7-digit unified establishment number, a CR number, or a 700-prefixed unified-number; the dashboard chooser screen displays all three for each row, but the URL parameter (when one exists) is consistently the CR number.violationIdformatting. Violation numbers in EFAA are alphanumeric and issuer-prefixed (e.g. transport violations begin withT-, customs withJ-). Some issuers (notably traffic) use pure-numeric 10-digit IDs. Do not strip prefixes when filtering — the table's search field is exact-match against the prefix-bearing form.- No public API and no public OIDC. EFAA exposes
https://efaa.sa/.well-known/openid-configurationbut the endpoint returnsRequest Rejected(a Big-IP ASM block) to non-Nafath callers. There is no documented OAuth client registration path and no public REST/GraphQL. Don't waste time hunting an API shortcut — confirmed dead end as of Q2 2026. - Operator entity is SDAIA / National Information Center. Site footer carries SDAIA + NIC logos. If the platform UI changes, the canonical reference for current schema is the SDAIA developer portal — not random
kss.sa/g-gulf.comstyle blogs, which lag the UI by months. - Right-to-left layout. Default
lang=arrenders RTL with mirrored layout; passlang=ento the IAMLogin URL to get an LTR view that's easier to scrape withbrowse get markdown body. The data is identical — only the presentation flips. - Print/PDF leaves a footprint. The detail view's "Print" button does not just open a print dialog — it triggers a server-side PDF generation event that gets logged against the firm's audit trail. Read-only skill: don't click it.
Expected Output
The skill returns one of four outcome shapes.
success — violation found
{
"outcome": "success",
"firm": {
"id": "1010123456",
"id_type": "commercial_registration",
"name_ar": "شركة المثال للتجارة",
"name_en": "Example Trading Co."
},
"violation": {
"id": "T-9938271",
"issuing_entity_ar": "الهيئة العامة للنقل",
"issuing_entity_en": "Transport General Authority",
"category": "transport",
"type_ar": "نقل ركاب بدون ترخيص",
"type_en": "Passenger transport without license",
"issued_at": "2026-04-12T08:14:00+03:00",
"location": {
"city_ar": "الرياض",
"city_en": "Riyadh",
"description_ar": "طريق الملك فهد",
"description_en": "King Fahd Road"
},
"amount_sar": 5000,
"status": "unpaid",
"due_date": "2026-05-12",
"objection_window_days": 30,
"objection_eligible": true,
"attachments": [
"https://efaa.sa/Custom/uploads/violations/T-9938271/inspector-photo-1.jpg"
],
"notes_ar": "تم رصد المخالفة عبر نقطة تفتيش متنقلة."
},
"retrieved_at": "2026-05-21T11:02:33+03:00"
}
not_found — violationId does not exist for this firm
{
"outcome": "not_found",
"firm": { "id": "1010123456" },
"violation_id_queried": "T-9999999",
"message_ar": "لا توجد مخالفة بهذا الرقم لهذه المنشأة.",
"message_en": "No violation with this number for this establishment."
}
not_authorized — representative is not authorized for the firm
{
"outcome": "not_authorized",
"firm_id_queried": "1010123456",
"available_firms": ["1010000001", "1010000002"],
"message_en": "The Nafath-authenticated representative is not registered as a delegate for the requested establishment. Re-authenticate with an authorized account or have a delegated user added in Absher Business."
}
not_reachable — geo wall / network failure (pre-Nafath)
{
"outcome": "not_reachable",
"error": "ERR_TIMED_OUT",
"diagnosis": "efaa.sa rejected the TCP connection from the egress IP. The platform is geo-restricted to Saudi Arabia at the network layer. Re-run with a .sa-resident residential proxy.",
"attempted_url": "https://efaa.sa/about.aspx",
"egress_region_observed": "us-west-2"
}
How to use find-violation-details on Cursor
AI-first code editor with Composer
Prerequisites
Before installing skills in Cursor, ensure your development environment meets these requirements:
- ›Cursor installed and configured on your development machine
- ›Node.js version 16.0+ with npm package manager (verify with
node --version) - ›Active project directory or workspace where you want to add find-violation-details
Execute installation command
Execute the skills CLI command in your project's root directory to begin installation:
The skills CLI fetches find-violation-details from GitHub repository efaa.sa/find-violation-details-ri8sqk and configures it for Cursor.
Select Cursor when prompted
The CLI will show a list of available agents. Use arrow keys to navigate and space to select Cursor:
Verify installation
Confirm successful installation by checking the skill directory location:
Reload or restart Cursor to activate find-violation-details. Access the skill through slash commands (e.g., /find-violation-details) or your agent's skill management interface.
Security & Verification Notice
We perform automated surface-level scans (Gen AI Scanner, Socket, Snyk) during installation. These checks detect common vulnerabilities but do not guarantee complete security. Always review skill source code and verify the publisher's reputation before production use.
Skills execute code in your development environment. Always verify the publisher's identity, review recent commits, and test in isolated environments before production deployment.
List & Monetize Your Skill
Submit your Claude Code skill and start earning
Use Cases▌
Task Automation & Efficiency
Automate repetitive workflows and reduce manual effort
Example
Generate reports, summarize documents, draft communications
Save 3-5 hours per week on routine tasks
Knowledge Enhancement
Learn new skills, understand complex topics, get expert guidance
Example
Explain concepts, provide examples, suggest learning resources
Accelerate learning and skill development by 2x
Quality Improvement
Enhance output quality through reviews, suggestions, and refinements
Example
Review drafts, suggest improvements, catch errors
Improve work quality by 30-40% with less effort
Implementation Guide▌
Prerequisites
- ›Claude Desktop or compatible AI client with skill support
- ›Clear understanding of task or problem to solve
- ›Willingness to iterate and refine outputs
Time Estimate
15-45 minutes depending on use case complexity
Installation Steps
- 1.Install skill using provided installation command
- 2.Test with simple use case relevant to your work
- 3.Evaluate output quality and relevance
- 4.Iterate on prompts to improve results
- 5.Integrate into regular workflow if valuable
Common Pitfalls
- ⚠Expecting perfect results without iteration
- ⚠Not providing enough context in prompts
- ⚠Using skill for tasks outside its intended scope
- ⚠Accepting outputs without review and validation
Best Practices▌
✓ Do
- +Start with clear, specific prompts
- +Provide relevant context and constraints
- +Review and refine all outputs before using
- +Iterate to improve output quality
- +Document successful prompt patterns
✗ Don't
- −Don't use without understanding skill limitations
- −Don't skip validation of outputs
- −Don't share sensitive information in prompts
- −Don't expect skill to replace human judgment
💡 Pro Tips
- ★Be specific about desired format and style
- ★Ask for multiple options to choose from
- ★Request explanations to understand reasoning
- ★Combine AI efficiency with human expertise
When to Use This▌
✓ Use When
Use when skill capabilities match your task, clear ROI on time saved, and you can validate outputs. Best for repetitive tasks, learning, and quality improvement.
✗ Avoid When
Avoid when task requires deep expertise you can't validate, involves sensitive decisions, or when learning process is more valuable than speed of completion.
Learning Path▌
- 1Familiarize yourself with skill capabilities and limitations
- 2Start with low-risk, non-critical tasks
- 3Progress to more complex and valuable use cases
- 4Build expertise through regular use and experimentation
Discussion
Product Hunt–style comments (not star reviews)- No comments yet — start the thread.
Ratings
4.7★★★★★60 reviews- ★★★★★Henry Perez· Dec 28, 2024
find-violation-details has been reliable in day-to-day use. Documentation quality is above average for community skills.
- ★★★★★Anika Mensah· Dec 24, 2024
find-violation-details reduced setup friction for our internal harness; good balance of opinion and flexibility.
- ★★★★★Ren Patel· Dec 24, 2024
Solid pick for teams standardizing on skills: find-violation-details is focused, and the summary matches what you get after install.
- ★★★★★Advait Kim· Dec 16, 2024
find-violation-details fits our agent workflows well — practical, well scoped, and easy to wire into existing repos.
- ★★★★★Ganesh Mohane· Dec 8, 2024
find-violation-details has been reliable in day-to-day use. Documentation quality is above average for community skills.
- ★★★★★Naina Bansal· Nov 27, 2024
Useful defaults in find-violation-details — fewer surprises than typical one-off scripts, and it plays nicely with `npx skills` flows.
- ★★★★★Carlos Ndlovu· Nov 15, 2024
Registry listing for find-violation-details matched our evaluation — installs cleanly and behaves as described in the markdown.
- ★★★★★Naina Li· Nov 15, 2024
find-violation-details is among the better-maintained entries we tried; worth keeping pinned for repeat workflows.
- ★★★★★Henry Verma· Nov 7, 2024
We added find-violation-details from the explainx registry; install was straightforward and the SKILL.md answered most questions upfront.
- ★★★★★Advait Park· Nov 3, 2024
Keeps context tight: find-violation-details is the kind of skill you can hand to a new teammate without a long onboarding doc.
showing 1-10 of 60