Index: src/services/ActivityPubService.js
===================================================================
--- src/services/ActivityPubService.js	(revision 61d52ede440cc84be8e3617e1cc0851eb3a9ba31)
+++ src/services/ActivityPubService.js	(revision b1d5f3fe649d958099ec7a8e2ff39b44708ad824)
@@ -393,4 +393,7 @@
       oauthTokenEndpoint: `${base}/oauth/token`,
       uploadMedia: `${id}/uploadMedia`,
+      // FEP-c390 (shaer-jpxj): waar de eigenaar een identiteitsbewijs aanbiedt.
+      // Alleen met zijn token; Shaer vindt het hier in plaats van het te raden.
+      'shaer:identityProofs': `${id}/identityProofs`,
     },
     publicKey: {
@@ -449,4 +452,14 @@
     }
   } catch { /* skip malformed profile_links */ }
+  // FEP-c390: de identiteitsbewijzen, ACHTER de profiellinks. Ongewijzigd uit de
+  // database: ze werden bij binnenkomst gecontroleerd, en een handtekening hangt
+  // aan elke byte. Elke verklaring draagt haar eigen @context, dus de actor zelf
+  // hoeft er geen bij.
+  try {
+    const bewijzen = JSON.parse(site.identity_proofs || '[]');
+    if (Array.isArray(bewijzen) && bewijzen.length) {
+      actor.attachment = [...(actor.attachment || []), ...bewijzen.filter((b) => b && b.type === 'VerifiableIdentityStatement')];
+    }
+  } catch { /* skip malformed identity_proofs */ }
   return actor;
 }
