{"$schema":"https://verifymcp.io/schemas/trust-report.json","schemaVersion":1,"license":{"name":"CC BY-NC 4.0","url":"https://creativecommons.org/licenses/by-nc/4.0/"},"generatedAt":"2026-11-05T15:59:50.193Z","url":"https://verifymcp.io/servers/com-foreverworks-anaf-spv/foreverworks-mcp-anaf-spv","markdownUrl":"https://verifymcp.io/servers/com-foreverworks-anaf-spv/foreverworks-mcp-anaf-spv.md","server":{"slug":"com-foreverworks-anaf-spv","name":"ANAF SPV","registryName":"com.foreverworks/anaf-spv","description":"Download what ANAF posts to your SPV inbox, request documents, and validate or file declarations.","registryStatus":"active","deletedAt":null,"statusMessage":null,"liveness":"live","publisher":{"class":"unknown","claimed":false}},"component":{"slug":"foreverworks-mcp-anaf-spv","type":"npm","identifier":"@foreverworks/mcp-anaf-spv","withdrawn":false,"url":"https://verifymcp.io/servers/com-foreverworks-anaf-spv/foreverworks-mcp-anaf-spv","version":"0.1.2","transport":"stdio","scoredAt":"2026-11-05T03:07:52.708Z"},"score":{"total":77,"tier":"medium","status":"scored","weekDelta":null,"history":[{"date":"2026-11-05","total":77},{"date":"2026-11-04","total":77},{"date":"2026-11-03","total":66}]},"categories":[{"name":"Supply Chain Security","score":99,"verdict":"partial","reasons":["No malware found by supply-chain analysis.","No known CVEs affecting this package version or its production dependencies.","No install/post-install scripts declared.","7 of 23 dependencies flagged as unhealthy."],"codes":[{"code":"supplychain.malware_clean","args":{}},{"code":"cve.none","args":{}},{"code":"installscript.none","args":{}},{"code":"dephealth.assessed","args":{"deps":"23","unhealthy":"7"}}]},{"name":"Provenance & Transparency","score":100,"verdict":"pass","reasons":["Source repository is publicly reachable at the declared URL.","Cryptographically verified build provenance (signed, bound to foreverworks/mcps).","Clear OSI-approved license (MIT).","Actively maintained (last published 1 days ago).","Publishes a security disclosure policy (SECURITY.md)."],"codes":[{"code":"provenance.repo_verified","args":{}},{"code":"provenance.verified","args":{"repo":"foreverworks/mcps"}},{"code":"license.osi","args":{"spdx":"MIT"}},{"code":"maintenance.recent","args":{"age_days":"1"}},{"code":"disclosure.present","args":{}}]},{"name":"Schema Quality & AI Usability","score":61,"verdict":"fail","reasons":["AI-judged instruction clarity (excellent).","Context-footprint check failed: tool/resource definitions use about 3934 tokens (~245/item across 16 items; 16 tools + 0 resources), over budget; trim descriptions and params.","Usage-examples check failed: none of the tools include examples."],"codes":[{"code":"schema.ai_quality","args":{"band":"excellent"}},{"code":"schema.footprint_heavy","args":{"avg":"245","items":"16","tools":"16","tokens":"3934","resources":"0"}},{"code":"schema.examples_absent","args":{}}]},{"name":"Stability & Change Management","score":0,"verdict":"unverified","reasons":["Stability not yet verified: not enough scan history yet (needs a 30-day window)."],"codes":[{"code":"stability.insufficient_history","args":{}}]},{"name":"Tool Coverage","score":100,"verdict":"pass","reasons":["100% of tools have a non-trivial description (not blank, and not just the tool's name).","100% of tool parameters carry a description."],"codes":[{"code":"toolquality.descriptions","args":{"pct":"100"}},{"code":"toolquality.param_docs","args":{"pct":"100"}}]},{"name":"Tool Safety","score":75,"verdict":"fail","reasons":["No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.","0 of 1 tool(s) whose name or description implies an irreversible operation declare an MCP destructiveHint annotation; \"submit_contact_form\" implies \"send\" and declares no destructiveHint at all, which the MCP spec reads as destructive by default.","An AI judge read all 17 captured unit(s) of tool text and found none that tries to manipulate the model reading it."],"codes":[{"code":"toolsafety.injection_clean","args":{}},{"code":"toolsafety.destructive_undeclared","args":{"pct":"0","tool":"submit_contact_form","verb":"send","declared":"none","annotated":"0","destructive":"1"}},{"code":"toolsafety.manipulation_clean","args":{"units":"17","judged":"17"}}]},{"name":"Capabilities","score":100,"verdict":"pass","reasons":["Implements a current MCP spec version (2026-07-28)."],"codes":[{"code":"protocol.current","args":{"version":"2026-07-28"}}]}],"inconclusive":["Stability not yet verified: not enough scan history yet (needs a 30-day window)."],"malware":[],"components":[{"slug":"foreverworks-mcp-anaf-spv","type":"npm","identifier":"@foreverworks/mcp-anaf-spv","withdrawn":false,"score":77,"current":true,"url":"https://verifymcp.io/servers/com-foreverworks-anaf-spv/foreverworks-mcp-anaf-spv","markdownUrl":"https://verifymcp.io/servers/com-foreverworks-anaf-spv/foreverworks-mcp-anaf-spv.md"}],"facts":[{"label":"Registry","value":"npm"},{"label":"Package","value":"@foreverworks/mcp-anaf-spv"},{"label":"Version","value":"0.1.2"},{"label":"Transport","value":"stdio"}],"install":{"available":true,"bundleSha256":null},"tools":[{"name":"await_reply","title":"Wait for a request's reply","description":"Wait for SPV's answer to a request_document (a RASPUNS SOLICITARE message carrying its id), checking the list every few seconds for up to wait_seconds. SPV usually answers within two minutes. With download, the answer's document is saved to the outbox as download_message saves it. answered: false means not yet; call again. A client that asks for progress hears the seconds waited; cancelling ends the wait.","inputs":[{"name":"download","type":"boolean","required":false,"description":"Save the answer's document to the outbox when it is there."},{"name":"request_id","type":"string","required":true,"description":"The request_id request_document returned."},{"name":"save_dir","type":"string","required":false,"description":"A folder INSIDE the downloads outbox (e.g. \"2026-10\"); empty means the outbox itself. A path outside it is refused."},{"name":"wait_seconds","type":"integer","required":false,"description":"How long to keep checking; 0 checks once."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":189},{"name":"complete_login","title":"Complete sign-in","description":"Finish a sign-in that waits for its code (login answered awaiting_code, or a tool failed with needs_login): pass the digits of the newest \"Cod de siguranta\" mail. SPV honours a code for five minutes; only the newest code works.","inputs":[{"name":"code","type":"string","required":true,"description":"The security code from the mail, e.g. 246810."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":80},{"name":"declaration_status","title":"A filing's status","description":"A filed declaration's state at ANAF and its receipt (recipisa), by its number, from ANAF's public status service (StareD112): no sign-in, nothing changes. The number is the index de încărcare a RECIPISA prints (the middle of its registration number INTERNT-<index>-<year>, also accepted), or the index de depunere submit_declaration answered. Answers status (processing, not_registered, validation_errors, valid) with ANAF's words, the form, the registration number and dates, and saves the signed receipt to the outbox while ANAF serves it (60 days after filing). The service lists a tax id's last 200 filings of the last three months; for an older one it says how to ask SPV for a duplicate. Any form filed electronically, whoever filed it.","inputs":[{"name":"cif","type":"string","required":false,"description":"The CNP or CUI it was filed for; default the one this server filed it for, when it did."},{"name":"receipt","type":"boolean","required":false,"description":"Save the receipt's signed PDF to the outbox when ANAF still serves it."},{"name":"reference","type":"string","required":true,"description":"The index de încărcare (digits), the registration number INTERNT-<index>-<year>, or submit_declaration's index de depunere."},{"name":"save_dir","type":"string","required":false,"description":"A folder INSIDE the downloads outbox (e.g. \"2026-10\"); empty means the outbox itself. A path outside it is refused."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":312},{"name":"download_message","title":"Download a message","description":"Download one message's document (a signed PDF, as SPV serves it) into the downloads outbox, named <posted date>_<type>_<SPV's file name>. Answers the path, size and SHA-256. Saving the same bytes again finds them there (already_there) instead of writing a copy. A file SPV names for another message (another request's id) is refused as wrong_document and not saved.","inputs":[{"name":"key","type":"string","required":true,"description":"The message's key, from list_messages."},{"name":"save_dir","type":"string","required":false,"description":"A folder INSIDE the downloads outbox (e.g. \"2026-10\"); empty means the outbox itself. A path outside it is refused."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":151},{"name":"health","title":"Health","description":"Whether this server can work: where the SPV credential comes from (a vault MCP, a file, or none), which mail driver reads the e-mailed code (google, text, auto or manual), whether a session is stored and whether a sign-in waits for its code. No network: it never signs in. Run it first, and before concluding the server is broken.","inputs":[],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":84},{"name":"list_document_types","title":"Document types","description":"What SPV lets this account request (\"Solicitări\"), read from the live form: the identities it may request for, and for one of them every document type with the fields it requires or accepts (year, month, registration_number, pui). Among a person's: Obligatii de plata (the statement of what is owed), Nota obligatiilor de plata, Istoric declaratii PF, Duplicat declaratie unica (year), Duplicat Recipisa (registration_number), Venituri Formular Banca, Interogari Banci, certificates. For a person's CNP, the types SPV makes only for a company (Notificare, and any it has refused that way before) are left out of types and listed under cui_only.","inputs":[{"name":"cif","type":"string","required":false,"description":"The tax id to request for, one of `identities`; default the form's first (the account holder)."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":192},{"name":"list_messages","title":"List messages","description":"SPV's message list (\"Mesaje\"): every document ANAF has put in the taxpayer's virtual space and not yet archived, newest first: decisions, summonses (SOMATII), notifications, payment confirmations (PLATA), receipts, and the answers to requests (RASPUNS SOLICITARE, with the request's id). Each has a `key` for download_message, the time SPV posted it (deadlines usually run from there) and the time it will be archived, after which it can no longer be downloaded. `types` counts every type in the whole list.","inputs":[{"name":"cif","type":"string","required":false,"description":"Only documents for this tax id (a CNP or a CUI), for an account that holds several."},{"name":"limit","type":"integer","required":false,"description":"At most this many items; `more` says how many were left out."},{"name":"request_id","type":"string","required":false,"description":"Only the answer to this request (request_document's request_id)."},{"name":"since","type":"string","required":false,"description":"Posted on or after: a calendar date in Bucharest, YYYY-MM-DD, inclusive."},{"name":"text","type":"string","required":false,"description":"Only messages whose details contain this phrase (case and diacritics ignored)."},{"name":"type","type":"string","required":false,"description":"Only this SPV document type, as list_messages' `types` names it: DECIZIE, SOMATII, NOTIFICARE, RASPUNS SOLICITARE, PLATA, RECIPISA, ... (case and diacritics ignored)."},{"name":"until","type":"string","required":false,"description":"Posted on or before: a calendar date in Bucharest, YYYY-MM-DD, inclusive."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":329},{"name":"login","title":"Sign in","description":"Sign in to SPV now. Rarely needed: every tool signs in by itself when the session is missing or has ended. The server reads the password from its credential source, SPV e-mails a security code, and the mail driver reads it from the mailbox; the answer says signed_in. When no mail driver can read it (manual, or the code did not come in time) the answer says awaiting_code with a deadline: read the newest \"Cod de siguranta\" mail from Autentificare.SpatiuPrivat@anaf.ro and pass its digits to complete_login. Each sign-in e-mails the user a code.","inputs":[{"name":"code_by_hand","type":"boolean","required":false,"description":"Do not read the code from the mailbox: stop at awaiting_code and wait for complete_login."},{"name":"force","type":"boolean","required":false,"description":"Sign in again even when the stored session still works."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":179},{"name":"logout","title":"Sign out","description":"Sign out at SPV and forget the session here. The next tool that needs SPV signs in again (and SPV e-mails a new code).","inputs":[],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":38},{"name":"posting_dates","title":"When SPV posted documents","description":"When SPV posted documents, from its alert e-mails (\"Documente noi SPV\" from Portal.ANAF@anaf.ro) in the mailbox its sign-in codes go to: per line the document (with its form, e.g. D256), the day ANAF processed it (\"prelucrata la\") and when the alert arrived, newest first. SPV drops most documents about two months after posting them, and an act posted there counts as communicated on the day it was made available, so for an archived document these alerts are the lasting record of that date. Reads mail only, never SPV. details matches list_messages' details for a document still listed.","inputs":[{"name":"limit","type":"integer","required":false,"description":"At most this many alert e-mails read."},{"name":"since","type":"string","required":false,"description":"Alerts received on or after: a calendar date in Bucharest, YYYY-MM-DD, inclusive."},{"name":"text","type":"string","required":false,"description":"Only lines whose details contain this phrase (case and diacritics ignored), e.g. D256."},{"name":"until","type":"string","required":false,"description":"Alerts received on or before: a calendar date in Bucharest, YYYY-MM-DD, inclusive."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":237},{"name":"request_document","title":"Request a document","description":"Ask SPV for a document, as its \"Solicitări\" form does. SPV registers the request (the answer carries its request_id) and posts the document as a RASPUNS SOLICITARE message a minute or two later: call await_reply with the id. The type must be one list_document_types offers this identity, with the fields it requires; a field the type does not take is refused before anything is sent. Free, and changes nothing at ANAF.","inputs":[{"name":"cif","type":"string","required":false,"description":"The tax id to request for, one of `identities`; default the form's first (the account holder)."},{"name":"month","type":"integer","required":false,"description":"The reporting month, for the types that take one."},{"name":"month_from","type":"integer","required":false,"description":"The first month, for the types that take a range (Neconcordante D394)."},{"name":"month_to","type":"integer","required":false,"description":"The last month of that range."},{"name":"pui","type":"string","required":false,"description":"The PUI, for the Fisa Rol types."},{"name":"registration_number","type":"string","required":false,"description":"A filing's registration number, for Duplicat Recipisa (e.g. INTERNT-123456789-2026)."},{"name":"type","type":"string","required":true,"description":"The document type, as list_document_types names it (case and diacritics ignored)."},{"name":"year","type":"integer","required":false,"description":"The reporting year, for the types that take one (Duplicat declaratie unica: 2025 = the return filed in 2025)."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":304},{"name":"session_status","title":"Session status","description":"Is a session stored, since when, and when it last worked; with probe, loads one SPV page to prove SPV still honours it. Never signs in (every other tool signs in by itself when it needs to).","inputs":[{"name":"probe","type":"boolean","required":false,"description":"Load one page to prove the session is alive."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":70},{"name":"submit_contact_form","title":"Write to ANAF (contact form)","description":"Send a message through SPV's contact form (\"Formular de contact\"): a question or request about the taxpayer's own record, registered at ANAF under the account's name and answered later in SPV as RASPUNS SESIZARE FORMULAR UNIC DE CONTACT. By default a DRY RUN: it reads the live form, checks the message against it and answers it exactly as it would go (identity, category, text without diacritics, attachment with its SHA-256), sending nothing. With dry_run: false it sends, once: it answers the registration number, the date and the text SPV shows. The form preselects its first identity, often a company, so cif is required and read back. The same message is not sent twice unless again: true.","inputs":[{"name":"again","type":"boolean","required":false,"description":"Send even though this same message was sent, or tried, before."},{"name":"attachment","type":"string","required":false,"description":"A file to attach (pdf, tiff, rtf, zip, jpeg, jpg, gif, png, at most 10 MB): a file in your workspace folders (the roots this client shares with the server; without them /workdir); a bare name is take…"},{"name":"attachment_sha256","type":"string","required":false,"description":"The attachment's hex SHA-256, as sha256sum prints it; a mismatch fails and nothing is sent."},{"name":"category","type":"integer","required":false,"description":"The form's category. 3 (the default): \"Asistență și îndrumare de specialitate în domeniul fiscal\", the one answered on the merits."},{"name":"cif","type":"string","required":true,"description":"The tax id to write as: one of the form's identities (the dry run lists them). Required: the form preselects the first."},{"name":"dry_run","type":"boolean","required":false,"description":"true (the default): read the form and check the message, send nothing. false: send it to ANAF."},{"name":"subcategory","type":"integer","required":false,"description":"Only for categories 1, 2 and 5, which require one; the error lists them."},{"name":"text","type":"string","required":true,"description":"The message. Sent without diacritics (stripped here) and at most 1,500 characters after that; put a longer wording in an attached PDF."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":471},{"name":"submit_declaration","title":"File a declaration","description":"File a D212 with ANAF at formularespv-pf, in the account holder's name: the PDF validate_declaration made, and only that (its SHA-256, size and embedded XML are checked against what was validated). Signs in to formularespv-pf by itself (its own session; SPV e-mails a code), uploads, and answers the index de depunere; then waits for SPV's RECIPISA and downloads it with the DECLARATIE. A filed declaration is a fiscal document: it cannot be withdrawn, only rectified. Requires confirm: true; the same bytes are filed once unless refile. A D100, D300 or D112 PDF is checked and refused as unsupported before anything is sent: ANAF takes those only through e-guvernare.ro, signed with a qualified certificate. Moves money or makes a legal document: the client asks the user to approve each call.","inputs":[{"name":"confirm","type":"boolean","required":false,"description":"Must be true: a filed declaration cannot be withdrawn, only rectified."},{"name":"pdf","type":"string","required":true,"description":"The filing PDF validate_declaration made: a file in your workspace folders (the roots this client shares with the server; without them /workdir); a bare name is taken from the first. Taken by path on…"},{"name":"pdf_sha256","type":"string","required":false,"description":"Its hex SHA-256 as validate_declaration answered it; a mismatch fails and nothing is sent."},{"name":"refile","type":"boolean","required":false,"description":"Send these exact bytes again although they were filed (or sent with no answer) before."},{"name":"save_dir","type":"string","required":false,"description":"A folder INSIDE the downloads outbox (e.g. \"2026-10\"); empty means the outbox itself. A path outside it is refused."},{"name":"wait_seconds","type":"integer","required":false,"description":"How long to wait for SPV's RECIPISA (it usually arrives within seconds)."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":390},{"name":"sync_messages","title":"Save every new message","description":"Download every message this server has not saved before (oldest first) and remember it, so a scheduled call keeps a complete archive: SPV drops most documents about two months after posting them. Filters narrow what is synced; `limit` caps one call and `remaining` says how many are left for the next. Answers what was saved, with paths and SHA-256. A client that asks for progress hears each document saved; cancelling stops between documents, and the next sync carries on from there.","inputs":[{"name":"cif","type":"string","required":false,"description":"Only documents for this tax id (a CNP or a CUI), for an account that holds several."},{"name":"limit","type":"integer","required":false,"description":"At most this many downloads in this call."},{"name":"save_dir","type":"string","required":false,"description":"A folder INSIDE the downloads outbox (e.g. \"2026-10\"); empty means the outbox itself. A path outside it is refused."},{"name":"since","type":"string","required":false,"description":"Posted on or after: a calendar date in Bucharest, YYYY-MM-DD, inclusive."},{"name":"type","type":"string","required":false,"description":"Only this SPV document type, as list_messages' `types` names it: DECIZIE, SOMATII, NOTIFICARE, RASPUNS SOLICITARE, PLATA, RECIPISA, ... (case and diacritics ignored)."},{"name":"until","type":"string","required":false,"description":"Posted on or before: a calendar date in Bucharest, YYYY-MM-DD, inclusive."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":299},{"name":"validate_declaration","title":"Validate a declaration","description":"Validate a declaration's XML with ANAF's own validator for its form and period (DUKIntegrator with the \"soft J\" jars of ANAF's package for that period, kept in a cache; D212 for reporting years 2020, 2021, 2022, 2023, 2024, 2025; D100 for periods from 01.2024; D300 for periods from 05.2024; D112 for periods from 01.2025), and answer its errors verbatim, with the period, the taxpayer and what it makes payable. With pdf (the default) a valid XML also becomes the filing PDF, saved to the outbox only once its embedded XML is checked to be the validated file byte for byte. D212's period is its reporting year, an_r (2023 declares 2022's income). Files nothing: submit_declaration files a D212; ANAF takes D100, D300 and D112 only through e-guvernare.ro, signed with a qualified certificate, and the answer says so.","inputs":[{"name":"form","type":"string","required":false,"description":"The form: D212; D100, obligations to the state budget; D300, the VAT return; D112, an employer's contributions and withheld tax."},{"name":"month","type":"integer","required":false,"description":"The period's month, checked against the XML's (D212's is 12)."},{"name":"pdf","type":"boolean","required":false,"description":"Also make the filing PDF when the XML is valid."},{"name":"save_dir","type":"string","required":false,"description":"A folder INSIDE the downloads outbox (e.g. \"2026-10\"); empty means the outbox itself. A path outside it is refused."},{"name":"xml","type":"string","required":true,"description":"The declaration's XML: a file in your workspace folders (the roots this client shares with the server; without them /workdir); a bare name is taken from the first. Taken by path only, byte for byte."},{"name":"xml_sha256","type":"string","required":false,"description":"Its hex SHA-256; a mismatch fails before anything runs."},{"name":"year","type":"integer","required":false,"description":"The period's year (D212: the reporting year), checked against the XML's."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":445}],"toolsTruncatedAtCapture":false,"diagnostics":{"capturedAt":"2026-11-05T03:07:52.000Z","track":"package","endpoint":null,"declaredUrl":null,"truncated":false,"tls":null,"dnssec":null,"auth":null,"httpsRedirect":null,"transports":[],"provenance":{"outcome":"verified","label":"Verified","reason":"verified","reasonLabel":"Verified","discovery":"attestation_endpoint","discoveryLabel":"Registry attestation endpoint","sourceRepo":null,"attestationSkipped":null,"attestationSkippedLabel":null},"installScripts":[],"installScriptsTotal":null,"vulnerabilities":[],"vulnerabilitiesTotal":null,"dependencies":{"nodes":23,"partial":false,"deprecated":null,"stale":7,"noRepo":null}},"mismatches":[],"changelog":{"trackingSince":"2026-11-03","recent":[{"id":"chg_01a1a487-2000-7d8e-a802-fdad5892e3ba","kind":"check.reverified","summary":"Known CVEs (unverified → pass)","materiality":"security","direction":"improvement","scoreDelta":null,"occurredOn":"2026-11-04","url":"https://verifymcp.io/servers/com-foreverworks-anaf-spv/foreverworks-mcp-anaf-spv#chg-chg_01a1a487-2000-7d8e-a802-fdad5892e3ba"},{"id":"chg_01a1a487-2002-73e9-a4ef-939a6d894997","kind":"check.reverified","summary":"Dependency health (unverified → 0.88)","materiality":"functional","direction":"improvement","scoreDelta":null,"occurredOn":"2026-11-04","url":"https://verifymcp.io/servers/com-foreverworks-anaf-spv/foreverworks-mcp-anaf-spv#chg-chg_01a1a487-2002-73e9-a4ef-939a6d894997"},{"id":"chg_01a1a487-2002-7b5f-ae4b-bb12dda61236","kind":"score.total_changed","summary":"Trust score (66 → 77)","materiality":"functional","direction":"improvement","scoreDelta":11,"occurredOn":"2026-11-04","url":"https://verifymcp.io/servers/com-foreverworks-anaf-spv/foreverworks-mcp-anaf-spv#chg-chg_01a1a487-2002-7b5f-ae4b-bb12dda61236"},{"id":"chg_01a19fc8-6b76-70ec-bb2b-b4a14dab6f37","kind":"score.first_scored","summary":"First indexed and scored","materiality":"functional","direction":"neutral","scoreDelta":null,"occurredOn":"2026-11-03","url":"https://verifymcp.io/servers/com-foreverworks-anaf-spv/foreverworks-mcp-anaf-spv#chg-chg_01a19fc8-6b76-70ec-bb2b-b4a14dab6f37"},{"id":"chg_01a19f84-f0a5-70b4-8cbb-84374839ae50","kind":"score.first_scored","summary":"First indexed and scored","materiality":"functional","direction":"neutral","scoreDelta":null,"occurredOn":"2026-11-03","url":"https://verifymcp.io/servers/com-foreverworks-anaf-spv/foreverworks-mcp-anaf-spv#chg-chg_01a19f84-f0a5-70b4-8cbb-84374839ae50"}],"truncated":false,"feedUrl":"https://verifymcp.io/servers/com-foreverworks-anaf-spv/foreverworks-mcp-anaf-spv/changelog.json"},"links":{"html":"https://verifymcp.io/servers/com-foreverworks-anaf-spv/foreverworks-mcp-anaf-spv","markdown":"https://verifymcp.io/servers/com-foreverworks-anaf-spv/foreverworks-mcp-anaf-spv.md","changelogJson":"https://verifymcp.io/servers/com-foreverworks-anaf-spv/foreverworks-mcp-anaf-spv/changelog.json","changelogRss":"https://verifymcp.io/servers/com-foreverworks-anaf-spv/foreverworks-mcp-anaf-spv.xml","external":[{"label":"npm package","href":"https://www.npmjs.com/package/@foreverworks/mcp-anaf-spv"},{"label":"Socket report","href":"https://socket.dev/npm/package/@foreverworks/mcp-anaf-spv"},{"label":"Repository","href":"https://github.com/foreverworks/mcps"},{"label":"Website","href":"https://foreverworks.github.io/mcps/servers/anaf-spv/"}]}}