Index: src/services/ActivityPubService.js
===================================================================
--- src/services/ActivityPubService.js	(revision 7922694b27fd0b9c421adfef80ab3c17ddde3a35)
+++ src/services/ActivityPubService.js	(revision 30871c19bf329fcc6ba2eb4c80c4450c11a044e8)
@@ -667,4 +667,10 @@
   } catch { /* ignore */ }
   return { name: null, handle: deriveHandle(uri), icon: null };
+}
+
+// FEP-9876: does this `Prefer` header ask for enriched (embedded) members?
+// Pure and testable; the route sets the response headers around it.
+export function prefersEnriched(preferHeader) {
+  return /(^|[,;\s])return=representation($|[,;\s])/i.test(String(preferHeader || ''));
 }
 
@@ -3070,4 +3076,4 @@
   linkifyBody, bakePostContent, bakePostContentWithMentions, listFollowers, removeFollower, listConnections,
   noteVisibility, isRejectedObject, rejectInteraction, interactionReportTarget,
-  getMessages, notificationsSeenAt, ingestOutboxActivity, c2sVisibility, actorDisplay, buildActorRef,
+  getMessages, notificationsSeenAt, ingestOutboxActivity, c2sVisibility, actorDisplay, buildActorRef, prefersEnriched,
 };
