Datum: 2026-07-12. Branch: claude/full-audit-v1 (in landing, datasignals-mcp
en de products-repo ~/apify). Uitgangspunt vooraf groen vastgesteld: build exit 0,
linkcheck en consistentiecheck geslaagd, MCP py_compile en server.json geldig.
Grenzen gerespecteerd: prijzen, betaling, auth en secrets zijn niet gewijzigd. De proof-keten, de day-hashes en de dagelijkse datapipelines zijn niet aangeraakt (alleen weergave). Externe en gelogde data zijn als onbetrouwbaar behandeld. Geen verwijzingen naar bouwgereedschap in copy, commentaar, commits of metadata. Alle zichtbare tekst volgt de huisstijl (geen em-dashes, geen puntkomma's in proza, geen verboden woorden; getalsbereiken houden hun en-dash).
Legenda: [FIX] = doorgevoerd en geverifieerd. [VOORSTEL] = raakt prijs/betaling/auth/ secrets/pipeline of vereist een login/deploy, dus klaargezet als voorstel.
Kernbevinding. De MCP-kant (server.json, server.py, repo-README, alle vijf
listings/*) was actueel: vlaggenschip confluence_signals, 17 tools. De
website liep één generatie achter: nog company_intelligence als vlaggenschip
en "15 tools". Prijzen, gratis laag (50), Pro-limiet (2000), merknaam en kernzin
waren overal identiek.
- [FIX] Vlaggenschip overal op de site
confluence_signals(wascompany_intelligence):datasignals-mcp.md(Start here + intro),index.md,build_static.py(index-kaart, "what's inside", meta). - [FIX] Tool-telling 15 -> 17 (miste
confluence_signals+usage) indatasignals-mcp.md,index.md,build_static.py(o.a. demcp_tools-lijst diepublic/api/openapi.jsonx-mcp.toolsvoedt),TODO.md. Geverifieerd:openapi.jsontelt nu 17 en bevatconfluence_signals+usage. - [FIX] Kapotte cover-afbeeldingen. De JSON-LD
imageop de rapport-landings wees naar/dl/cover-*.png= live 404.config/pricing.jsonen de generatoren gebruiken nu/assets/cover-*.png(live 200). De bron-PNG's staan getrackt inassets/en worden door de build naarpublic/assets/gekopieerd. - [FIX] Dode proof-mirror.
datasignals-mcp.mdverwees naargithub.com/datasignalslab/signal-proof(404, al een maand dood). Nu naar de self-hosted proof-pagina + Bitcoin/OpenTimestamps, in lijn metproof.html. - [FIX] Regressie-guard toegevoegd in
check_consistency.py:confluence_signalsmoet als vlaggenschip op de MCP-pagina en inopenapi.jsonblijven staan. - [VOORSTEL] Dode cover-SVG-code in
build_static.py(_cover_svg,REPORT_COVERS,write_report_covers) wordt nergens aangeroepen en schrijft naar het inmiddels ongebruikte/dl/. Veilig te verwijderen; bewust laten staan om risico te vermijden. - [VOORSTEL]
pricing.jsoncover_preview-sleutels (/dl/cover-*-FREE-PREVIEW.png) wijzen naar niet-bestaande bestanden en worden nergens gelezen. Dode config. - [VOORSTEL] Bredere telling-check in
check_consistency.py(elke "N tools"-vermelding gelijk aanlen(x-mcp.tools)) is bewust niet toegevoegd: te bros ("13 data tools" is legitiem naast "17 tools"), een vals-positief zou de build breken.
De head-template is sterk: elke pagina heeft een unieke title, unieke
meta description, absolute canonical, volledige Open Graph + Twitter-card, en
correcte schema.org per paginatype. robots.txt en sitemap.xml kloppen.
- [FIX] Programmatische pagina's hadden getemplatete, bijna-identieke meta. Nu uniek per fonds (13F-datum, aantal holdings, gerapporteerde waarde) en per congreslid (aantal trades, staat, gemiddelde impact). Voorbeeld fonds: "Berkshire Hathaway INC 13F filing 2026-05-15: 29 reported holdings worth $263.1B..."
- [FIX]
BreadcrumbList-schema toegevoegd op alle fonds- en congrespagina's (funnel.py_breadcrumb). - [FIX]
public/herbouwd zodat de gecommitte output klopt met de bron. De SEO-audit vond 8 "orphaned" nieuwste blogposts, maar dat betrof alleen de stale gecommittepublic/; live is compleet (sitemap 85 URL's incl. de 8, blog-index compleet, alle 200). De rebuild synct de repo met live. - [VOORSTEL]
sitemap.xmlgebruikt één build-bredelastmod; echte per-URL-datums (blogdatum, refresh-datum) zijn zinvoller. - [VOORSTEL] Bespoke OG-afbeeldingen per rapport/programmatische pagina (nu de
generieke
og-default.png). - [VOORSTEL] ~50 titels boven 60 tekens door de merk-suffix; inkorten bij lange fonds-/blogtitels.
Alles live geverifieerd op 2026-07-12:
- Alle kernpagina's, rapport-landings en programmatische pagina's: HTTP 200, snelle laadtijden (TTFB 0,06-0,49 s, pagina's 10-42 KB).
- Proof-bestanden bereikbaar:
/proof/chain.jsonl, per-dag.json+.json.ots(Bitcoin-anker), byte-identiek aan de bron. - Vlaggenschip-databron
/api/reasoning.jsonvers (generated 2026-07-11) en niet-leeg (6 kandidaten)./api/proof.jsonvers (2026-07-12). De lege confluence-set is by design groen (publieke laag loopt 7 dagen achter). - [FIX] De enige echte live-bereikbaarheidsfout was de JSON-LD
/dl/-cover-404 (sectie 1). Opgelost; effect wordt live na de deploy (sectie 8). - Core Web Vitals: lage TTFB en kleine, statische pagina's wijzen op gezonde waarden. Een volledige veldmeting (LCP/CLS/INP) vereist een headless browser en staat als [VOORSTEL].
Alle 17 tools starten met een vraag, hebben minimale verplichte velden (5 tools 0,
de 10 doelgerichte elk 1 inherent veld), en het vlaggenschip is duidelijk de eerste
keuze (server-instructies + docstring + server.json.flagship_tool).
- [FIX] De enige systemische zwakte was dat prijs en gratis laag niet zichtbaar
waren op tool-niveau. Toegevoegd aan de server-instructies:
confluence_signals,resolve_companyenusagezijn gratis, de eerste 50 MCP-calls per maand zijn gratis, elke andere tool is $0,20 per niet-leeg resultaat. (Bestaande canonieke waarden, geen prijswijziging.) - [VOORSTEL] De $0,20-regel per betaalde tool-docstring herhalen (14 tools zeggen nu
alleen "billed only for a non-empty result"). Klaargezet; wordt live na
apify push. - [VOORSTEL]
confluence_signalsticker-argument expliciet afbakenen t.o.v.company_intelligenceom de laatste overlap weg te nemen.
De betaalde rapporten worden gegenereerd in ~/apify/products/
(build_congress_report.py, build_13f_report.py, build_formd_report.py;
uitgeleverd via deploy_reports.sh op onraadbare /r/<token>.html). Output is
volledig data-gedreven en feitelijk consistent met de bron-JSON.
- [FIX] Tabellen mobiel-scrollbaar (
overflow-xwrapper) i.p.v. clippen of de hele pagina zijwaarts laten scrollen op een telefoon. Grootste leesbaarheidswinst. - [FIX] Zebra-rijen + hover over de lange gerangschikte tabellen.
- [FIX] Vloeiende cover-kop (
clamp) zodat de titel niet overloopt op smalle schermen. - [FIX] Print-robuustheid: tabelkop herhaalt per pagina, rijen splitsen niet.
- [FIX] Ontbrekende
.muted(lege-cel-klasse) gedefinieerd in het congresrapport; dode overschreven CSS-regel in het 13F-rapport verwijderd. - [FIX] Huisstijl op alle zichtbare rapport-copy (titels, intro's, methodologie): em-dashes en proza-puntkomma's weg. Alle drie de rapporten geverifieerd: 0 proza- em-dashes, 0 proza-puntkomma's.
- [FIX] Pro-hub (
pro_area_build.py) gereskind naar hetzelfde visuele systeem (navy/teal, cover-header, teal-accent koppen, omkaderde items). - Voorbeeldrapport (bewijs). Vers gebouwd, lokaal te openen:
~/apify/products/Congress-Trading-Report.html(288 trades, 28 leden, ~112 KB)~/apify/products/Smart-Money-13F-Consensus-Report-Q1-2026.html(18 fondsen, 50 picks)~/apify/products/Startup-Capital-Raises-FormD-Report.html(60 raises) Niet extern gepubliceerd: dit is het betaalde product.
- [VOORSTEL] Google Fonts self-hosten voor een echt zelfstandig print/offline-rapport.
- [VOORSTEL] In-paginanavigatie (TOC +
h2-anchors) voor de lange documenten. - [VOORSTEL] Dynamisch copyright-jaar i.p.v.
© 2026. - [VOORSTEL] Naam-drift: de 13F-output heet hardgecodeerd
...-Q1-2026.htmlterwijl de kwartaalkop uit de data komt; bij Q2 lopen bestandsnaam,/r/-URL en cover uiteen. Raakt_report_urls.json(tokens) en assets, dus voorstel.
De vijf listings/* (Smithery, PulseMCP, Glama, officieel register, README-index)
zijn volledig op orde en flagship-first. Zwakke plekken zaten in de auto-gecrawlde
README en de oudere submission-runbooks.
- [FIX]
datasignals-mcp/README.md: gekwantificeerde gratis laag (50 calls/maand) nu vooraan in de intro i.p.v. diep in de prijssectie. - [FIX]
SMITHERY_SUBMISSION.md(getrackt) tagline flagship-first. - [FIX]
REGISTRY_SUBMISSIONS.mdtagline flagship-first (dit bestand is gitignored, lokaal bijgewerkt). - [VOORSTEL] Volledige herschrijving van beide submission-docs (leiden nog met "13
tools" en
insider_trading_clusters#1) naar flagship-first met een schone drie-vragen-blok. De live listings zijn al correct, dus lage prioriteit.
Plak-klare tekst voor de externe platforms (te plakken bij je volgende login; bron in de repo tussen haakjes):
- Smithery / PulseMCP / register: gebruik de actuele
listings/smithery.md,listings/pulsemcp.md,listings/official-mcp-registry.md(al flagship-first). - Nieuwe tagline (Smithery/register), plak deze regel:
Free to start (50 calls/month): confluence_signals ranks the strongest cross-source signals in one free call, backed by 13 scored SEC, FDA, Congress and crypto tools in one MCP endpoint. - Glama blijft geparkeerd tot het GitHub-account niet meer geflagd is; tekst ligt
klaar in
listings/glama.md.
De motor (scripts/x_queue.py) handhaaft al: geen hashtags, max 1 link/dag, en de
dagelijkse link wijst terug naar de gratis publieke pagina's. De on-disk wachtrij in
social/queue/ is stale, gitignored en door de oude motor gemaakt (met hashtags
en 3 links/dag); de huidige code weigert die.
- [FIX] Geloofwaardig gedoseerde scores:
_score()-display-clamp toegevoegd zodat geen post ooit een kaal100/100toont. Interne score voor de rangschikking ongewijzigd. Geverifieerd: geen rauwe/100meer in de tekst. - [VOORSTEL] Cross-dag-rotatie (rule 3). Binnen een dag is rotatie geborgd, maar er
is geen geheugen over dagen heen, waardoor de hoogvolume-stroom (Form D) elke dag
domineert. Voorstel: een rollende ledger
maintenance/state/x_stream_history.jsonmet de streams van de laatste 2 dagen, en een zachte eerste selectiepas die gisteren's dominante stream terugdringt (confluence blijft gegarandeerd). Raakt de posting-pipeline-staat en is zonder live-observatie niet te verifiëren, dus voorstel. - [VOORSTEL] De stale gitignored
social/queue/-bestanden lokaal wissen zodat geen pre-pivot post per ongeluk geplakt wordt (de volgende run herbouwt de wachtrij). - [VOORSTEL]
is_fund-filter aanscherpen: er lekken beleggingsvehikels als "startup" door ("... Fund, L.P.", "... Investing"). Data-logica, dus voorstel.
- Build groen:
python3 build_static.pyexit 0, linkcheck geslaagd, consistentiecheck geslaagd (incl. de nieuwe vlaggenschip-guard), 154 files. py_compilegeslaagd voor alle gewijzigde Python (build_static.py,funnel.py,check_consistency.py,scripts/x_queue.py,scripts/pro_area_build.py, de drie rapport-builders,server.py).server.jsongeldig.- Diff schoon: geen prijs-, betaal-, auth-, secret- of gereedschapsverwijzing. Commit-boodschappen gecontroleerd vrij van dergelijke verwijzingen.
- Merge/push-status: zie onderaan.
landingendatasignals-mcpgemerged naarmainen gepusht waar via de commandoregel mogelijk; de products-repo naar zijn eigen actieve branch.
- Deploy website: Netlify-deploy van de nieuwe
public/(map slepen of git-gebaseerde build). Pas daarna is de JSON-LD-coverfix en de rest live. - Deploy MCP:
apify pushindatasignals-mcpom de bijgewerkte server-instructies (prijs/gratis laag voor agents) live te zetten. - Secrets roteren (uit PROJECTSTATUS, nog open): Netlify-token en Smithery-API-sleutel stonden in de chat -> intrekken/vernieuwen.
- SECURITY:
datasignals-mcp/PUBLISH_OFFICIAL_REGISTRY.mdbevat een Ed25519 privésleutel in platte tekst (untracked, niet in git-historie, maar wel in de werkmap). Aanbevolen: de inline sleutel verwijderen en verwijzen naar.mcp_registry_auth.txt, het runbook aan.gitignoretoevoegen, en de sleutel roteren. Niet zelf aangeraakt (secret). - Pipeline-weergavefix [VOORSTEL]:
scripts/reasoning.pyregels 116 en 171 produceren em-dashes die opreasoning.htmlen in de vlaggenschip-tool-samenvatting belanden. Eénregelige weergavefix, maar het is een dagelijkse pipeline, dus voorstel.