From c9a0c19ac21c86519a37b462657d473420a091eb Mon Sep 17 00:00:00 2001 From: Himanshu-Sangshetti Date: Mon, 31 Aug 2026 16:37:48 +0530 Subject: [PATCH] =?UTF-8?q?feat(integrations):=20minimax-mem0=20=E2=80=94?= =?UTF-8?q?=20Mem0=20plugin=20for=20the=20MiniMax=20Marketplace?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit A declarative MiniMax plugin (MiniMax Code desktop / MiniMax Agent cloud) that gives an agent persistent long-term memory via Mem0. - MCP capability points at Mem0's hosted server (https://mcp.mem0.ai/mcp/, streamable-http); no secrets in the package. - Skill (skills/memory/SKILL.md) tells the agent when to recall, save, update, and delete memory. - Manifest, icon (180x180), and structure follow the MiniMax plugin spec; validated against the submission checklist and size limits. Open item for MiniMax review: the MCP endpoint is authenticated (OAuth or API-key bearer), so confirm whether it ships as a remote MCP (runtime handles the OAuth handshake) or via the App/Connector path. --- .../minimax-mem0/.minimax-plugin/plugin.json | 18 ++++++++ integrations/minimax-mem0/README.md | 40 +++++++++++++++++ integrations/minimax-mem0/icon.png | Bin 0 -> 29344 bytes integrations/minimax-mem0/mem0.mcp.json | 11 +++++ .../minimax-mem0/skills/memory/SKILL.md | 41 ++++++++++++++++++ 5 files changed, 110 insertions(+) create mode 100644 integrations/minimax-mem0/.minimax-plugin/plugin.json create mode 100644 integrations/minimax-mem0/README.md create mode 100644 integrations/minimax-mem0/icon.png create mode 100644 integrations/minimax-mem0/mem0.mcp.json create mode 100644 integrations/minimax-mem0/skills/memory/SKILL.md diff --git a/integrations/minimax-mem0/.minimax-plugin/plugin.json b/integrations/minimax-mem0/.minimax-plugin/plugin.json new file mode 100644 index 000000000..4933be09b --- /dev/null +++ b/integrations/minimax-mem0/.minimax-plugin/plugin.json @@ -0,0 +1,18 @@ +{ + "schemaVersion": 1, + "name": "mem0", + "displayName": "Mem0 Memory", + "version": "0.1.0", + "description": "Persistent long-term memory for your agent: remember preferences, decisions, and project context across sessions, and recall them on demand.", + "author": "Mem0", + "icon": "icon.png", + "category": "Productivity", + "exampleQueries": [ + "Remember that I prefer TypeScript and pnpm", + "What do you remember about my project?", + "Update what you know about my deployment setup" + ], + "apps": [], + "mcpServers": ["mem0.mcp.json"], + "skills": ["skills/memory/SKILL.md"] +} diff --git a/integrations/minimax-mem0/README.md b/integrations/minimax-mem0/README.md new file mode 100644 index 000000000..f4e17e627 --- /dev/null +++ b/integrations/minimax-mem0/README.md @@ -0,0 +1,40 @@ +# minimax-mem0 + +The [Mem0](https://mem0.ai) plugin for the MiniMax Marketplace (MiniMax Code desktop and MiniMax Agent cloud). + +It gives a MiniMax agent persistent long-term memory: it remembers the user's preferences, decisions, and project context across sessions and recalls them on demand. + +## What's in the package + +This is a declarative MiniMax plugin (no build step). It follows the MiniMax plugin spec: + +``` +minimax-mem0/ + .minimax-plugin/ + plugin.json # manifest (schemaVersion 1) + icon.png # 180x180 square Mem0 icon + mem0.mcp.json # remote MCP: https://mcp.mem0.ai/mcp (streamable-http) + skills/ + memory/ + SKILL.md # when to recall / save / update memory +``` + +Two capabilities: + +- **MCP** (`mem0.mcp.json`) points at Mem0's hosted MCP server (`https://mcp.mem0.ai/mcp`), which exposes the memory tools (`add_memory`, `search_memories`, `update_memory`, `delete_memory`, and more). No secrets are stored in the package. +- **Skill** (`skills/memory/SKILL.md`) tells the agent when to search, save, update, and delete memory so recall happens automatically. + +## Authentication + +Mem0's MCP server is authenticated. It supports OAuth browser sign-in (the client authorizes the user's Mem0 account on first use) or an API-key bearer token for headless clients. No key is committed in this package. + +> **Open item for MiniMax review:** because the MCP endpoint requires user authentication, confirm with the MiniMax team whether this is accepted as a remote MCP (the runtime handles the OAuth handshake) or should go through the App/Connector integration path per the plugin guide. See [Prerequisites for App integration]. + +## Submitting + +Submit this directory as the plugin root. For a GitHub submission, use the repo `https://github.com/mem0ai/mem0` with the Plugin subdirectory `integrations/minimax-mem0`. The subdirectory root directly contains `.minimax-plugin/plugin.json`, as required. + +## Links + +- Mem0: https://mem0.ai +- Mem0 MCP docs: https://docs.mem0.ai/platform/mem0-mcp diff --git a/integrations/minimax-mem0/icon.png b/integrations/minimax-mem0/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..a228f8d93bec5446f2e27fa7cb2cf3cca24d5be8 GIT binary patch literal 29344 zcmV)lK%c*fP)PyA07*naRCr#@eFwNzwYK%x^j;MZq=PiE_bWCms8|pIQNW6#qSBin&2kl$qJRZO zihvcdiz0Tgpn&w=rT1RW`CrORX0oz&Iox}{e}C^?IeTX%S;@%A$ec4t;_unVvJv-5 z@E-!npawNqMR)CAMrQkY4W3d zvt?N-jeSn#r+$;)>;F$6%ans$S-MX2U-7*DU6+%Pbn8uD-<8@_{jSg_9PApL zG(ZGkXdv+N6!Gdgb+gz6~C$X)g0oEOs|yGz&4Q1381MWs#M0X1T3l!2fGJ!%epEL z!{R=m2?YB4AVbq2iD767Z1$U-0f@ad7|kHi0F%=W126r~%OPgg?225LX%%S@xb192 zgUz&`$JA!#3NW++zxW@<(57u;z-!=PIA6B6_)9_Mzrnbf=W1b_48ZZf2~ekIXb+sx z0m>OxO90k@y2bSLPBcT$*l92fXc{oCtO!dG#=cBS&@`UN#n_wV1_vkuo{=O*iV&k_ zLjjh+r2duzk^x$EC6hFUWkaAQi9&4`Vqlxbl_`d{qY@+nQVV7xAubowC*I`X&-u_G z(O>|Vew7q+sQ*pL&;f9|B_#v2)zl6n8*S}(rpno}sS9Z8Orw3B8NmY=2crO22+&*$ za}6wJ0}tRz*ZP3Y0&)?d#JC*H)TTCF z>Ipr47SB1L87Q6CORshsIT-+&O9rPvAJE>*8`(jfWE+$({_Nr?GeDcgoyazqUMQx^ z(6Vk;D;xH60Ik_r$`-XKR1B@bDFLniwu?;lon8F0#U@+ey3&GX7&eGyJFD+iD=UfM zEShzGt`@a3UlfX@p)K^{A(IN8?(ga3n3{G;4f`q60d~5QBeLk=g)u;rwSqcA4m$n2 z=|~1>w%`c^nm4|c9j?{Fo$l3ZTL77bozcC-aC))kSvwrL!54G{@(7@5mhr46Muymd zW(EPby3oLIbTl6TkX8@%p+zpiRKr~NwHZLH{Vm8i_&B-nMOkJ5j-ntnT!~3jr;GzO ze=-X4)RMzI6M9)TCM9(Q8Ycp13sSYfi2^<-In3fyGnwgR4p4XT$IW?4Lg?vR4^Rbm z&7_X?LbEY}jjR`vq1gb^&v39AGhmFacI%)AAA!|b)GE+QZf1R;%#aq)vi0bF9F!2J z`y5T}Zxg!%Ar5NsU{5s+l7lz-A}=-YO#`T=jn&X*)KiwB>4kll0CG8X@htN6}* zFBgp*&{j$q$BU5)I<50JF`s2|GXt3c$*d)2z))w|nMO$r`hU+}&o#K|XFJPxC6v(EWWU_woV3C-Q3*f zY`VaJFX|a|oHxeNVcCv4+0n^zFb7O&60zhq*KF!BZ7%*dH{W^b9M*UAwyU$bd)vDE zX#lDJW^=~&&2U_DIi@}h21i3%i-->u)msE;+jmjUOU2m7BR5hraTwx0l*9SBfOZyj zA>BokPcP)Xn2`%yT3A54>|(W_1+3Q3yhHWB?I5sBZlnWA4!-asEv$jfWrqK6&b*>7 z3ediXPc0M$@W`>kV>uL1$o48Y`9G;bf7J;VY4WKz>qoA__ zF{f6JWV3Z9O#I&iwFPu4W_ILDw6S8@*{sUB7tv!0hn+2h+CV4n8fUQ_UQm*+ldS{B zi{UVXguA|}v$E9UmIInGIyqQ)-p1+T*uS-;ka=-;I5~h+d17!Vc6K$pm3p3&C8DA2 z?*tQviH!x@BPd5!=9H0>$%RZoOM)q#=X{f%eMSK~kVnvz!*#ItE^&Z%qRBiR&0Vl^ zfo29d=~n7=-DwV6GbaZz6gPWut!*qJ)?(qhw^=NQVQ8kIP5zdl>3L;V^G$h7PWXWK z*9DG*VESLS1xY3bc&871lb&io3+Sk#wzGgu84saUKu@KAGhyva2S>V$munw>;TV~Q@EGv_emNYX4b26}nqa6&|)90D*czCGG)MSOw z%&Be5+-qm8A9k@Qt43*=UbbF4cfo1Aj#~1l*KyxPwXEkwi~!u5*%+IKPeWSY zfL8;X_|-GpIj(MJQ1i|v$wJ~K1WcQT&&pQbxF8g%(`WBY!5Ig5H=k%7LgiRkC+5vL zmK~ay_~^G-X6!AU6%NuP27cGWrCWzFjP)!Mfb{?|GXQ5a0<`WF9uy>}by`T-ASGf| z6A(`}Y?29PU@_2(tYmOMmBZx&%`D7g$YqYluC`pV+(adXZ6oHG;d+`cZZ&~KiNpsp zfrW$GWo{bXO#I;xg;@xY|2a@6FF&rF1QPS+9CZm;*E15)B^sGZkpSY1Ne^+r zbGGLi*vb;6Fs%GA9TfyL<;^^Iy5o(rg%(V-h~rUq&Vo%3Ajcifz?R5HE@QK{0Z-Z7 z_3deNG6mWh%g!9sR^%|TjO*Ey`CvDo=7ZI@3~?YjHVihU`p{s1`_eJ!aqwpCbd*Fe zO=e(sYptFQ=iq*u2A~5|m(jN#1JL&lbCW5KvpEGCaSa)bvUALQrtwn&nhg-a+C~zQ z#`PtNm!ENmTN51VVY>kI&2zM0%CO zPbx6LnZaac0vf<%74c1!To$l@^T8Z3+ga9jqn_iKISh2#!IBDw|9wzf^dwi=FR~ zygZ?~trJC=56Q9O*`tjmg-aF<5Cd9bSGEB*;_zV%?EPl#(Y(DZxFgOfEu};X(X1A( z-t1{QHw0)ki^g&K|B|Uw2^naGA#y9-=tc9IJOQet8aI!`v(m=G4&MEUUl`nGSrRxm8i8Jb1i znZ|eR@#`RMU9cAaT zJwN)ujiV;^c5T~w0C{FO?ygtB;{#B)sh(ZLf>U)C+pkER$xWkt!K?vJ1f&?6v40R# zFU=DFkFk*irn*6ElGzJB;D}^{td}{$fVrss zg{oOUu=2P7;Oh_Bh-7)u0CxJ+1vHVBo_n<{q4#H?N+K8VX@6Fm^tHXi$^dH+Om~pT32RRkDvx9lPQY1nRSDi?tDh( z#})XCO9@cJbv0U94^$QO!~xCNI>OMNY~a5WYa0~${TJ;| zCB5i@H2Lj#$T;b4vcqfyo*3oYx__gx#01vvHabc=c~a z$^>FExKo4gL}Ams1e%F^_FUD*#OKQm4KmH-a=bWz=J{lqDPOtI**h^!ZG)MZna@k> z0-k}*q@y;mZAom$&)bOhqAweKk8Y+&J>CHj;`p3{+5>b<fA3bR>qgY$#@BJG*r{!=U_cuWSxP z_sA}8Ine`^uP^vQk(ioGjmTQW4NS5yOrnv=CoJ-%Wa(;#2+ofe$bN=QHfTW@9$LvO zoR~k4G_-z6FTMJc0oU^o+Sejy3HvYAh*-rjuUXbrWoUUJw{mgq>Uzg4n3)b{T2(&F zPcL#nYc;JJklKaqn9evuyXHI77Cgq8-YIcRzpcOcW12Q#qI2xzrU(6iCC@`>W;2os zK8T4tI3$#sj+}{?DIuqA+{-j$AJDRc0-2-)^kHYHQF0DctAE+l$BUv7Z>CvdQ{Ldw z&97wpw9H5GA-=PMf!u&emEr4D>8N3*I`{Av1yGt@jJ=tI-r4*bwMX_lt}Oz zz))Rn_^9Kgq2mk)tUOdyTTSSE4D+0k0fAs87S0-4JUa5lfY8b^)!lqx^FHwb?Saja zDlsIK63poUn5W6HcJXSG38?8&_KX0uQx(B*G&`}PY#N&C*)$lZmpwbGStzmwx7G_? z7-PVQ^w0pZc4-^8q1c*jk#e>^d1gR1^}F_KeF73OHd|0i*%jm1p%`x0HmzOeT0SWg zo|RHQpo#g(QDWbnKNkR}2}R|&;O&wLpwj`dS59zX951+Y0%}Fei3Rfyxo=?@+HDBg zAGGy7VkTnjA;I83>oTnRl~2ngO?0dT0m-Bb#dP?tasQARZx@NSf^h9@C5v4E8jViY z5M38Khl4;%62jjYU~JvYtmh5{#=P7S6Nr(H+TeLRtC`YWmJ`|djP1_27K6tR-~jgp zAWrjt^e53vVfe>=Yi-p*h3x>Er7%I#W+CUFEb7k`{&dM2*IN{Z!OUYHSn!Uq^Qumf z>}(c+mc5*iOlMK(>hVxa2e)YWf&Ju#RG?G?P98O&&3CjP(Ac|0_<*$jxaVwS9Xp0y zyY^z+mYq0y><9`MDTvZ17DJ&z`Skk`xa@+^u3d=PJ>uZf&sn;MBw$we}A7bf$0Ikw6VXib8iLU`kR`a;yx&-ilXqCgN0dWXiaeF$YFf){`Yuy z+*Hh)y&Q)Q9Y&dQC2>K6`gpM8&8S(oB0Evk-L0eg&SzX&fLa^BY9$W*K-)$@?1MC( zNmIi++3uDQGrQj<_XegKGU|89a|;)6$q_ZO`vmCrH8H2F|;9t~*jkvY^{656d|bhM|pnfuz9^0cJjJ5cz>Thiaeiq?E6 z>S6)EcI7{~t65(xnzu68&$)6X(Dt#L(EFLYkUO_#NM{Yic{$<%~{(bMY8tEj95^bo&UiZKawoQ{SwZe$jxA>G|viim&9 zLFY;X1KP;mK+i2s01E68+_P&B)~?xrxw98y^~&|g$~uOMmCB(`{c5OI^JJ7LSyZwr zc_-D|xsu?EDL>)iHc#Wwp(C;AIi*fTjGfX46|0uf@#uO$7(!xg9C5B#naFn)(i3vB zG=ndWjM4#iI&dZ(om?Iy6FcFhUKsYlZx<~(z;=CmoS_}o=U`+^O*3a?G3eT2 z?E;V*ni$??IvcvFp11aFyMa~3l~`7FLN{go*%1XsGTB&XzCb*B^ay_b;Wtbi^AZ01 z?Qd+|x&zr+^n5N9DOL#ePOE{IcQ(fLO)f#ce7TvlV){Be8#8~Ji+h{*$IcylVo`Jc z#dY!4O2x1k_8R0l6g3^OFp%QBo+mQ^= zgC(+1RNrT1AH(NUzCrIU&tm(wok^)HU;ey!;F0Edq}%N%T(qE0t4({7CbF@0%MP@? zZ2*3oG2dOU>D0ONBG_zPb*Gv|aGxTFJ%BG<%e-Ah{DnDK-`957-^Ak$&y!&6qgq8+`xGT&!KS2?zEahR8QxzPu<|x(LoVr#hP7btx{s zq8{?+&tu4oL_!4Qnoo=@i9u6(A|o?%o!@>EKPh#0atXuPIi@P%;MrlOu*v7$BV!I?eZ<^@Ew^xYdJ9e#Z32)9HT;@Qi+SBA)6qIASkOr<2;W zy#Y@ReiXUL^d=tS4j^RX=+UFtxM3>}9X^cGClo`8l11!3LvoDhHWKw&G;cK?x??bw zE?nm@dt7}A7RryFPqsko2d_l_0-C8!e|j67{E%p)!+F1jX61BRBd2Lnfi~6eKw{C- z{b^`us$iUErbghqG<*$B8rJ>ZaUS@9_ZZl^P(T16IO6962;e&66;H2`Uoq=mCHO~4Wx)D~!Ww7PnjY}|uVendb1j(zP?NCV82S87OQ)^5?%sY*!xdl1kn=p`ya6wBHXY_A(5 z>jVGY2ftl3a!u##$|g4PFQYeJH-1N-WqV?Nc~H4w++%Wz7WqroG~uf()YDAwS=haM z4{mLAFBUIYmZKgiRJZ`%`Qmw;b#5)&MrLiH>&41bh1l=iK%;DY|IKVX+-fj(Y>T&! zgesayByek+1{gBBUG##^z!`Qtk90J1D!ApS@gfhUDkaGha`7^)p|j~)1eLp1&CJal zor+AvnXVAueH~mI8&HV{>?!p;VoeoJOz*p$83??^ArDU4v3(o<_;nW6tXczMML6}e zIymjjx+qX6zqY6_Td^Jl+qP~;(`)X*%4KVE)F)!lO!(wEG`QkS3sf`XFh=$rMrH>$ z!AZ?7Pxcs#S6-Ns5j#`Gt5h$GkACWh6U&uwPO&n46nw*U;Cy@wz|0yp6{y2+lUTfL ze>O3k**2&{AKhujw|KBAUxQHohcuw6y*e$@--{;MYQI8vZyyfusF zi)2tr2WB~{bnu~cN^{dB7BAlycthK?k#P`mp_=cQr1#_0cScN8rqOl17n-E15>cn}ZY-4kDb z{(X-6qhjT9_~4ttC|~IW&lc?M4|Et>Ykk?=mLRrl-hrDg>4nwHH|D4=iChVc{j?jd zxb_Uj(6$V=)OSw8NC(i-3dJnJVrp(pbdHV1N$twr%s?Flbezwhrg&4D&(OL~9Ne5` zC7|sADcs^gOr~TGi#Fp<72^rC`PhXWa4hR6UVZ5`y!g!ESo2oVqD3%r?2Bk{+4-tS zcHUifRyJN4`W6Na9D!rUto0>bMBUut3cNJB7ZSNuySO_}l1L6;f@Ejm*Pj>Sj_U^C z!2Uz&7Vo6Xn=d!Uf7SyRH$2tbRZq#>z9V_bGvT0*uS8~Gj?X6*Xj56L?emGnEB1P| z^8R#~mNN;f9L{tjh>UWy+Pp@G+0$!b{H3`d`$a>2$F^ zF`IAokr2jC%@&LR_U}J{-j9yLJ7cD$<=6>TRBRmh;M+c^S@&eMAtIMuewwz<&cd;y zS<>SuBL4E`%Y)px)#)f4UYti=Wc;VVOmA?!pjI_cEM6%9ovLy^$hn@T4zZ)(1R-gl z6I-d%f#}1hVhvDsEUuggID6?C!r8aSoDlo=?Zw?K?!~NMXT^dsPo6yJ(4!sNce+m< z!RzFojbq1-;?v1rqvs<}W8c05X@k1s<89EsOH1T0m@jgH(1CpiuwmU6?A^0pT3bY5 z{|RM^t58w7sNjIk#+OrmMb`&LVEfkHX_xOOyx@{LnDk{Y7aocc)|3bZxIsQ%q{TnQS01FdR8@1pT`A$E0!Z#J)=Y0{QXm zu)b*0{Cdss{&5M)`SE10AsF}i`zakPg^L!#4Yyo|UQe|}sS`x#rJ@X5O~F|g}IY~E;NRYct`ytEFU8GaXP)+tYO zU<_mb{|oBGl2v;mwX^P5g$*0wWm(vuhHGxaq8ff0s5H&-g%7u9n?be&v1q$ZV+8;P}^a#G2`a4DpdIx|0wlH>3h&-xPD~ECwN=xS6wq=*} z2@cGx;qTI=)T+gnYhqLk1wE1Y;YzTJmjK*gR8}`Ll)Wyh&?b!|*w+YfS z?i~+HE5s%HBt6G}>8d@9p?Oq)0K7DABf8qUwO!Ajp9g7UqH|I8(Ag6#od&fm(wPxx zfhn$Dv#kHoyHn7w$CKE-%TC#%qso;pi`OO$LH*O~*iEU<_AFbEJ-hef{+8YG%lE%W z+O=YplkixNHn_Qk0I~>1Qgs!xNLE%hrhf7h9=+?C;|8XDT?#iygAm0#)~a_h-kjVS zRce%F467f`hK$MX+i@($y)rEpFCw2eKIni(H=hmhZ!SmwH?0Zh>Hq*B07*naRA5dG zXq6%i`oz-J0?--|Bz{dtv-g&w*4-gtfA!>p&M$KK41v-!>5;`lNexkqXX!Au?f4Ui zNT(k;dKka`{2RXf^lPkNvmUu~=SH3Sr{KDquST6yYicmltV6NOOvfg&SwQdG zdjJpJJ{;eC`e)Lr^m@7l9_n_zStL?EX^g9MUNMa{$HUNTgyi5=bv=frQM|(%gJ72D z(rMEhftm(fL~naKoXHg%jPD*K<1%zKUW0bBhz>t;_^|wcVUrahm0}eiwV2rRIAnFT zSy5O_dOZ9zCcpEQdChBYx)jfj=!TM|irVYzbb3*q2qqfP{S~}5Vsc9DovcS2-F!YC z|95LtsCWYM z;3U3h(*a<1Hump3h)3Iu#21sJGY_xR6VKm)`#W4C$-t3`4qvB%%N!?3W${SH&}%uM z4Oe^A95Xf}`q?sqjcX3YcW^MPXQDcq;zPJhVHOoxwqk5!yY|jlb~oF)>>jn2P&wIH zvvNJ|Y1SD_7pje|B6xnt8+~y7Etjcj*gM}&l)ri7HZ;AW16D21EcBH3xd<#8`)ME4 zJ-xEGZn1W8VIvp76x+cH7R;xj>bNo>e}T@JLU6^~9sR$s)xiTNW9XBUV;7xbP`v$l zS6pyOZ7n&}{zgtyImT()4;~kwciTCMHG*O+9*xC7Z5qw}&My9}rdF)TranFm@ zV)$^{2-K`yS-(s4bkLbU&PK~dU2@FM!jsu;U@Nrie4{k!Nrgvkdh3?$ zczxL0cx&W4G6-f3KATP)s_)QgdySb0nCH6))rs z1sXt3aDpRLQ*&x2O_K`H0pRKE6HC|a(sUQ_uP`^Z4Y2pwKmlKoIlr%4r;B4}hq>)^ zuj<7Dn&k6rGpuQ9t)U%Py*<&$E=YOa(Npz>_Fc1TEx!2pTYNcXI_A$_+s?2txtW;%5vQMiQEZY zuMnW!@1)N%8(6n$3x5A)3D&LJDy=njPOF47&#i`H#c6M(RnOdP>kk#m{r?+4FI&G; zU*_fmmGrcGno{I=0|#KPktbs1aNe3*7HD!KFbA$KlY>&9=$W03Et@xE^~%-Qw|6hZ zR9U868C0oW3HkDiv*P#wP~}7qOcZ9eqxf>lG(6XDIM%J+fMdtplZ{MgB@(#(o*U8s zg~!xpRBtDWNH=TdJlt}{W5~)u9Ef=Sx+WLmwfDNqB7F}jP5UD6WsBG2n@|40H=oVI z`n3X#`Ecr))zJ9X^Kr?Qr=mzP0m$&0$C};j?_@E_r8_q2b8vC-zp-?rV(9qa6HC`? zhBmAiU|?z>M>2S9;9O6^7j!fi1je@G0n{ct-?_rHqR_X0{`LnZPy7(S&-?>hHf_P7 zgNLLEtyqa-s8*vYuDRh#G;VsWv^&eiCffOu5n+ z@@5}geEC`C=2{ye0c_c{9k(^=j3oXTez)V19!-tR>?f;WbJ zhAHp-j4c~?MxqJDK&x|FW!(GdHE4A6IVfDDfU{PVgPOX)2_Unzk#Qfv+FM1hs3I<1 z#;+dp!0`Zj!%lX3dGu^MTOzkGc%xSQ>8%~~sXq?!e}(712CG8%7= zcmta^ZjKFn7Yu#jB^RLI^Sw~1stC?utj`vPlP7+L{#~ELuAS+{ObF{n&AL@E`om{Y zsY*HHP%*3jtSk(DW*mk+Gd?0&Qgw6L@}=t^K1O`By^K$OF-K~P(uh9Jdb5W`H)WlE~IPWF2e23B)e?8Awr z|LjOHi|C(24WJK4cT99Fu2*fWrAG1w3$e4KvDKjQttG+^JL#L-ckSGVE^UY7i^(F!JH2d+6fKAsMm>PWx1J~M z@D4j09Tm!qtVdDEXyN8mAOtHj38Yumj2POMmjuwuHtqWuAMqo$^0?bh<{W_bLWt|(Mk>q=d(uRflJ$L{Wd z!-tevE|X8)(`(|@Ndr*1nh4N82yrXAYV8aTKT3Q$=H> zYMLlu-EWcsdeaUw7dewsWC6!35e2rn7llsw=bg>;IXOXW_Wt0}13)vk*h$j$!Or;N zqt8;cLge>SrAuPWN3WvZ8Fh^1Kpg4S;l5t@ndWKdpvy`9_UOiY|FmU%v2nTh{QX5=qL^!I)Z!!@*;me+*4Il|xs{DSXD&gLOMA*d{G5Ew zJii9s_^=bomM>`l=|e$y9+xg$k8eKv3$tb}!|LUmB&bCgs$h2!Qrhs^(^0i%S?xKr zOrCC??2Tnc;XTy z8^3)2Gahc;4tw`xww<3|_WTCtV)RENA!4D$;1Y|=%T8^K^=mey+q#i-{~pl|E$?m2 z98d1iyT<90tpc6)?b$B_{B!3`phStH$X_ro^5#{$L;Uy@zIE&UansS^uAw=ur(oB6 z9=QhHpKPIzDRZq8!m0AfyT4-46YpW|sx3GsPG(}ABP@9$o})sg(&+tMOI+LJY&j_7 z%z|+h&0JTf3gu76(3`ijSKy`{uX+KXTF$l8krR_)hM6jYB#l`_MizvWj|KJTlRrVX z2fIKV1e23bozrUL?a$so@lq-PU)*)l>iYZe>yPm}TauL{;+Thyc>>qoe2H~~YhWtv zNdZs#UF6ck-<{(fG-KL=8;mDRO!4D=?6T|mk{)B}K9Kxq4qVkY$>DlgrUUdM_&zWMYkbh@tt4yI|{@SEq< zGwWjfXK$crakbN1*mPeX@)n-!GbBf6UR0=97O%ed6zZROip$VW-MM8)y`N+4p%`%8 z0>+;0z5f><{DS+NKbsP4sS*?@kQbGzmBs1jRYQUN`LJ^7Ml4&r0b4ik!qFpPXOf?% zU~3_lMof5EI&f@Q1lQN8YLedX#|7x+TeceuC7&7$XxY%>i$>CV#Jy3$qjPf(m$6Lk zE(*21nRTcVFxi+ldmiq&r44p$%gn+d$4nxDYi_y{!^S?ZV|x|2mM>n3*4MYirhmda zQj#@$qnj_qv#<6*@e=A>I$34Do1HVX;~ppW)dScN0SjSO6mMMptCszPYtQMJv4tZ& z*yJqL^-a&k3!~b~&{g-7nyJ$-F%_hfNe;=-u8r7$)TseKDPD1F{ItWs92yWLUnFXI z%roU{CCBcayCk6J&YF{cd+3zH$@1(gPvXYr*RlF$N%!57)z?1=$Le4mTduEqGd6Z1K^%5w?U{?%JR64&97fl+FJsC(KS(RY{|}#X z(l*ztu-JUBHpz`kDfOmRf^7%QUk3i4Pq2M5R!i zfp|hJ;)Xvv3?rU@DdRYanssVm^psaot^&EiHEsMvqOoKG2@ zzwgEDB%D8DN4F?V>{XQ4VjSnV5VrF{uiuO2cQ*L113Dhm$pF1=oAZicc2*t36O!vw zU8C%4?GSr2Fb5ZymX!$zBx}~KUW2apcfy}DXQc%`YUvxAU5}@R_jepCl&9#~l}lIQ zh5j$&$FF~hjpq=n`V-5Q#$69J$KCCl$zULB)lnu$CpKBO65qhfz$!qh!OZI+>&s>; zT33jC#TKmBUi=8do_})KWw-z72^9#QHVm1yQ z$lReswFgP_iid_gNe(uZI;;!vroKCP;1EW?^ce;ZoRo6&?J0Fn#(*Jrn;TOtEp1$6m1trYI&efvtPIbuRK2jKY#lpc5aVGobkpHOx3>ULwLA*I~gP4 z09p@FbFgG~7Q~HLYgVqq%B8Du=)gggI-xjf)TxSc`z_ls4D@TiTs- z@)6`Pa9A6(Y1c5t(3{SoGFd2b6mKBy;z?bwt< z+qGESG1u=TA6!Nkbs){`pHrvmw`cbreD%?fnEdvaSU7h%cJJDYW8TfN)Cz*-ikB>k zI`ymKmeyC``lby~sE9i1S1}hcJhg)k+RVlsnL8bB*cKCP4e2>T5k2YJ(G6A;OVLtlf&iZ82xF>xAbEt;-BQgiHBF2mW z?ZVqICzVZrHFJg^mKc5BR6Ch=PNA!5aPX6vL=|@J*nw3`SK|G#@8Ro@zs8R3I}CPf z)~$&V6NjO4O|j|J_sXf;vec#`JAi0GM|M^_b&^(A;8s(Py3|Lo@e6%l#rIQxiv@99 z*9mYpY+RRS!GJE~uy0T5g(mf)u$sIu>VDkR@&fOOgOG_$mt+=R z@v-*ugbahRRA6?PH8LI(%QT>^tk5WBjU@jW0JZ#{{)c{#NDl5bb#5h6pd3t2Zv+^hmXnDs#5`wlrCDG7J8K6~TDTWRK(P3)M%qAVz zz>&qBWeW2u+!7-1^2?U)?bly;8MA)*4g2@+NAZ#+(D3@Ja7&vOC|!Zcpm!ZyS6?Md(Uvpl5%v({C zfU{1{L+1BPHU@-2op1q79N>;*1)rz}3Nm=iUNr-0b|r;m4t+7@@n*LDqwAB8qgZi!43}%QP&E`&?(Utt(XsWT`01OU(wa*1iog@PtogvC;wwo!>_2Q({ryshFe-)Zlni!8QmZ!%gQ3I`Jc60 z~jQbwT7q2&)3xs#Ca`m#(+0y*ZOHre?IGc|FLLULVVcj-tT)#~o{VO)vo>ZZv ziqOlGT-S2%aPpKcu0q!86eY2yN(E?I;IRufqr4j6ZKj#kua@N_Y#f;~Rr&+__TkAc zy)k+GyFsUkh-H4HcW2z&@d0P93fY#|tz3f#Z@nK&7o@+-LjdTu`*$-dO#`8~1 z#QfPSV>jsvX(dke@7%YU1UD@{iN+jh=W|+MZRB>Rcictf-J)P7w21$v4`j+X8K4b_ z-JE>}4l#04jT|YHzm)yAaBbhyxH;CYTpioRRcltm#OYI{^x)FK|M&Dyr=er(N96Ga znS2TtEsT-x4a51Dou{sGaGWO8^x2p({Wm<;swZ}A%`CPele&ns!m%@aVh>z&#cBFc zS9aLYgKW(CeF@sN7=-m}(sPy+ER+u;Cv`-_>(6wVnuoQ9cI5iAuY*zj2Pb~#r7h8M zJ2KBAeNe}xOdzpz_cmK~&yvB;H*l6B;l-jqq_v#zdXn2lNyaRlzX-Qob{!7vkKYJd z>cr9*|MiEcQnQ+o7e2FyK&GyDb-))NWWN7U?2f+u{@c)NP&eesm)m#-eRh2Pg)w-c z&&#og(qszUxb#A5^?3Sj+~4_@fDE!yL!3nVV2kH4=a2MfBvIyh7uUwiZ$Bz`qu39d zne-aT{1#dlMOfTtVgK#uYB~3NCZW@8zGQ&j!vO8Q8h=sSgnXh1m+u}MMrqgxW=Hdi zZ&xf{f>sT0#I7CjtXHOdIZT)~8RaXVtTW_}4mHF!ZTJUwTyZNltjXC4pr@Wy4`aT1 z6Ge&@)|xr$OzF_N2R?h(9KCfrWR6T%!to0pz|AP2kKKr zg#76H;+=AfmgymRhE{a_6pg&}(n#`+J{N@@adV)Iv|A_{k0+2=vL`NC1+!Z%n6o9y*1n&9czUX&&_pHY-KC>slA&%>RKT4L|6 zob5jp=DhLWjM3qy8azfjs?KiKpbcjK_IKLNe>@4#IIk9_%oq{?v}#pxI_kr>55m+b zGjmkTS?AZpJJX&(p~Bkju1__kwGcOf7?GX-{XFiRLL*<-h0`9(w&uM?QB+Rz7Vw2Iz0fsveb>?l5a_d`71t|N}IXg66v z0;qOMO$?dvI;z(ZH>1-2JXJoI1ap7;3wK|4I}R|XN+vyBzEXLNoB9?`mUpo5jR!VF z^vXInV9komcc5od4@z65Mg@Gg=nePmY~wvt0Bd$x4=i1nv-$|L-2316NA+4N#MCDW z(e{#nva|8a^!ai#t++Ky#8&6amj@LppMZNGZG>A}{|ouVnSV(^>VlB~ef+waYOQjT zfTj^CtFHm)N{ncCge}#{MqP}1TsOjz!$&Y>!n=5T#3*c7yG|YgQ?O7$RIhys+V|;- z^De!}8r>b&w*~d`MayvK)y-wVQcgbAYgfm(ug9SDiKV>j*3^56!E;r;8?ZWu_km|x zrz$lypdFx)&dtX9HJj1m@}5|`D)pf@p|VAk-aFs+#cAhM)7|cYTANsxE?AGYw+_bA zMe8G^DrU^VqaVP{EiaUz1!2|=i4Rp)dVo%q%Kn~Myq6f7#DH5R&cK0XU;L=_4{wYe zy{v@nY^-0s25VQW#QweeP`p$LRIODLrA{b`gtvX(Oj*n&F5)@vysEj3#>>g)ipE!9 z@c0*HbRNkVKRBp)gF7(ieQ9)?J3E=HyeXcwq_XQ_rlz zz~x5hiK7lW-aS(85cl2ZRAz&Qr()zg?d2v~&e9@shJV5W!+slMh)d(u96;~TZ(xI5 zWD(qyXMWOLu8BNSL8CWmP$YW=x8a<3r#Zu1F+uOd<_&X+Coz^{(Fr5p!oRx>h)S0f z%_6J{U7zlXJ0H2z-0SDqW%YpU+@?D|edqHu8u|E>+}QGR3>)9m%nk$=TDa}qy&o;F z>Y1^HgKAc>YFSMFaUjZ;FQLBDjLf=Go+EuzgD0?Yef%b6aX{phpZclYF}j_6FuTB( ztH=l$hIl-6D|%99@m>XJcPo_&stmv=R>-^1O|7hLMg3{cFE#YHyC2ay8pK|~b?A2I zBlv5^AF11drKoq-sTeY0n4_P$J|_^p@#1K_&}T@-VWJsT27ol%{rf)L*YQ?m7x%(Q z#ouCs?|{y)W9-OJbL4`*>9&h8blf9qM?4E3;DBDfWCNNs=qFv`aUZcj{B%Zt)UIDq zjf*5wA`T~R-dYc*Y_z}-SiCQKSfka{G~V3*x}z-)fXP`psiHW?^SXUgOwu5o^4QYTz_!#R$l${fI}n|J5-y}03` z-dM3DUe;8saw6XSRvcd}4u&K!rV<$OxFPnASI$X(;ebx2k^MEW-+0MKUijrA!z32W zB4wZkI=vr>CiVq>_u1EYdBF2nxny~){K%6xFHSkN7CH>*jDKBuv632|b%V3N__uI< zcW%=aGpGNW34St8d(q`*V(8nC7>!D=FfONoOIL46csB-6Tx4%Ox7~CmK?0AKJQU6E>~iAQz1y?xIZjlTfb0 zN#-168YIGQx?=HCOnz&U1owv3>&ymNu^O*ds|Fg~dOaH7b~DOXKFI{EM`VVXifJ2E z7CsvPF?zS_^Iwx4LIV8zwJvDd=4x}BE8keaXC(3cj;*`#bk8^O;ka+p2K6OZoq-XP zI?B7o?SSzYXzFiqM`FKDWAVYbADnGKr+A0`AQXVa@9&GeL^WU5SSTItsbn$j2|LHpc4BByWZIiKYaP4b9qn3G#q$9 zM8REo!R7O}_Uhrf#VMvcMd4e>hegmPshsPA~_ zUX&=UW1HD9tK zBloq}HizJaNvqYV;~ixjW1+J8@Mqm z5)k}w8z;1sZ`Bfqo~m=IKY8~jy!p~6*s{?sWJSF5hs-P@zYm7;iZ8u zWAWU@IhG${mrCu^YM|4A`*879=bAlxsx4?C$Oe{Pz`3S8`rX?RE{;<>dJK!_ufpK| z6Y=$@zncMAy;cSEc%~IDz3Oxw&*4y!=g{H(#R2LbW1+Ng)Phgn`%LSjAXXg{r0jeW zfO!Im1qRUicfAFd^OE`{z{~opklcu}baXoLUxxp^ebXj%YkePP{q%D>#O$Ow{rs~r z>dOzU$1f5f&ueFI;!V%P_3pOZfKFZ!>0VvAN)qt1m#u z{%ukFwCZXDuQ~fpSvTyN)4GN9)UN8nyodaR05(V9ES7>Q&_txy7XE zuEpI~Kmfe-2}RkyK6fL5-w{@(*q*cP4BY-8WE?<2(6(3Ld z7>oa2BDaFY9yF6DH;R=giaMv&M3Yw6;;Nf2L6KtOcv`9-v1}IG1Lz&QtLtMHih*4% zmWWi{MRZ>Oj<4hG*Szr81W>SGetC7piDgUT+<(E~3}i$(&OcQr=PTWigK z76D|zpl|ppi32#Sp)&&X{QY$CroxjfGKTjfla5Etu}p1VJj(RZ0i#~3F{rRr6k*@ZNk(7^w!UWm%algF zvrogVcQ?mHS6(bVcU*J3%&n){>?|1=wS3_+ES$X%^JdM*x>f72W1AY3B}$1Cjw+$n zX*E&rj8kyRsnzB2VCoiE#kQ6r+%rQ&y$>A_gKsky%w2{(yY@n`d$pPsP_0%46f04f zf!~`&Wa&zJ414Mw3>`Qz=@oHe0GB9TL`soIdftLs^(wmOqA;t7t9dPrDJkbdDFiDY zGa(Jlcc8@Y3Rk%&2+&d`MhB2nEnZzk&sHrFx2O(LuVa2?Z(=1ly)I1)Dmwzo^WA!3 z;)qvstV_kq-Q1=nIzH1^?HJbu3m}WgzQ2C{70-2j0?QUGj?QuHn}UT4;nDt`(fq!a zC{R$v4b%Vo3nvcpsEJKIM<%zZbct^JBB>$jyL{0qy!QM=O#5_(b5g3f1Ev01HPQN^ z8*tT)7pjZrjcjty^AP9bz1Z(<41e~$_^Fk>y8w2rQ!C-M_d20k&6Dg*r6ms~b;Sdr z#FZg5Px_4=1$313)a0!J8!NI6pm)nW<*R#uwi9!>&r>nB8ZxO~frsK+$uYEdUyK|2 zvUH~8^pn3}0bG1_Lo{l36Kd3}BTxNYxo8=Fo;n@heKr-_HpSma%gZcOxDX!b)gE^~ zb`SFA6>-0u0j;jK0JrBm)BWVunxcWt<1?6M_S1`lBi|bKE=IrfKDKY!89Ts>6fJ}X zSDl4!Pu-2Gr>J;t)%2G2#aSoa+P;KO-bsGM1Alh`>T~~98$-slSFUXb%r0mNKwN5Y z2yoUmY3z}<3N8jOelDt3VLaP!6Z7})Hs{H6*-MN|XI|LsXaxGAp3m$I>gL|UC@f`8 zmY{8dL^eKnV>F)Y)HS0M_TzvrB!svZP&9`K{ud^|xKPNrJj#?Wi&s7#jav0emeId)^`gnS7ZMW@@{RazW?`5s#wX0i$x}Nf>kkU6nxM z@BM!oLq1`)nqHo)F_~G-M-T0bmhozHV9Dx4r z%ui9Ny0~A2fztao*U}NmK{{Htm0)&j(XeSn{KPKwxNji7`8d4KGFg4goKy-Erv4i> z>sB)SCU(R>-11p``C)vZezH7Eolp!DzU+-t&#K0@gmJiWbEiXBCPpJHB6M1ZxI-r1 zRFNK9LkmDVIHbV-kQ4~-33jK2m;phH#o%g0cdls$4eFo2nu;gxdjMh+ZMq+M#8;UU zQKeQ*RH#xJhYlRTqB(zK{mRu4*DN3J=j9JZ;nKzp8B6&`g(>-A^s9+tRS zpB>P-Mxc6irSH|(QNHuVgqtE67u$l|REfV2?3HrTWM!-YZr$R@*Bzt5T8BGC4jh(i zL@0>>_9K}3{s$P+<8f@?lKK#pLPZMWrZ%n6=(bzs)~&qx^2%vr>&8v^Wc(z&IcSK? z^LRc3UmJv*?`-DCji@b{fm&brX3mt>62rt~1l`!#nEKIlbZ*@zM~9M&_dD<6`k3_X zAmq+1Iy4(QckD*XhCQ)h&hi|+zPxaB?4xMh?82CXBfT9+tQ4-fli?^@u~e}gQOGCe zYCyZ}=*ow1B?3!>nA)nZ13yxI95B1-gbVz;DIa54pT5|*cCEY>%g-uT?%XI}xe^|H zq8F}edNXq8$;0L`)hL3UNA!CN6Gyy$T%dk->`S<=#SKpW;t$2jqV9^Zj~zLJLx&Dx z|K7cFVOy|J0Te1y5c%@uWw97=?pxuD%ZabPkG}15e(7d~%4PB6(lO?KMsboA-wTncU*MEsW}F;%hxfOh#3fRjO-7B#GC_r8Br=jFj)Z1`0(7}JQG)d zr_bs#CEsE0Xejq(MSa#SUydI>`y7A$^fT74S`Fdh%aboJPOe%Nr(JL!F1hX+RH=0e za_7qJ-P&sN+PZNgI=5(pdB5lET4W(-#{cv&>YiCI80R1WEjH?k;}oV%`5JS7n=Q4l zI7m?hOI10g3NC7RAuefjF)CCRc3mD=Zx@SV0Dd_3WAwalV8+%M>VfLDD`M*0*R53| zI~yM~JsnJ(;fc$Tna@OKXpKV$S}3 zK}`Bza&uuEV=HHiQ`PwCEx6bW(sbjLSd;3m|d~zrzk9}X=`Ql%e znE=F~sC#Bz^d8a^_0O&+8QSP=wz&N9%b(HVj>oZg_ud>ygd1GB@h`&oSa_T;oAjo8OHU}Rrhc*Xh1oreyVrC!L!n&oTpNb_!3G&l1D z)x{0E!`^-z*EG3EZ&+3NihB;9?D85Wy#9Gc%wPJ%;u!qaqY#?{+^a!s+=h=H?nPB9 zo~bma+;rAAD3ET%OKHH1d^A8l&Hn{fAFjPX{ z+V2vx_wNr59{#0MReoLvbI2&>rudG~aMXpGvNe2}@5OBrci$mBW=1~C$990v`o3*c z{Vt9kd*itmF!7~VQbzNM0HD(^JP&FcNO` zNBcj5dpqAH?+&-1Rtw8@E7#$Hn>t|mqLpbgs<qgToxPRYX zeE;!hm^AV=Ed6`FTx9Z(=+G0&mBls9ZpIz$+oD`Wb%=_T8Q$5^qn>*iBL}?T+(Mf! zt=6np6QjQzh0Zl8+i-7(TjdG-s=~^7 zW7|j#!cFV9V(OF``22$(v1I;g?B2Cc?n4v-Smnx>!g&|hMUy)&!?_pL*1Fjr$b8F| z2UG^!X!KkNFtj+fub2$N$xfN=wsXW&(W8i-X_ z7DkpC6%fxq9;>j$q5$UJ-MjJIx8GsfTw&fTU%4VKZgdqcz5Z%cu2GGh*+x^N z>Re?@20Gt%Kfd`WXQwGi%gOYyIQ_i(5`5~W2AG4QHkHM5fmjlgBYycf9G8x_|oX>gyb;i1$N%tb^hR`;` zG^+0o3(myiuI>eY{DD+d*JGfsFOE{17hn)|cLZ?OReyf;hwv zetR$)-FmfI6y~DK?R6yH%Ec>i+oktl=XPsu6BhxsY2O_8cDxOx%alYO?GcoW=|}X* znS|og{m4K**e%G(n!&9V^!A3eL%YNcnxZHON9i5)7mzqhTW-6*Y5vZjt`v?EIa<&@i_fFahHmY3!xisbqMP6#VgSA(tEH= z16o|7)V6agwCmAEUccrZci;n>ZJKqCA?EKy|F&%tI*-J50?}|_(H#Pc)}Qf!R#*}L z8`jR0X`HgQ-zR1rI2aD8(0PO=`!J9*n{iXKc=8cG@3&v^=#4i(NRH4)$c1})bjQ8j zyF(oLWzXes0j-|Z9h03UWy`?>`;j|WE{NC=b>^|VIhG{IlDYHo@Qp38byLnmT&vcq zhOu9d#R+BA`55XzcZvlOYlAF&@!nVHe(w`z_j`>x)$rO!&!b{B5y)?)1-af`hNk!R zf~bt-BDvuXX8#-$UrS2}Iva}J*)!zWat$1s@H7^qi%07airo_!fWHH12SQHNoIAEs zficzZ=|ErQL40j<6z~#y_k-78#q*syCe5nB_19y-n{T3U5!!FZr&mn}+1WU-e;-ya zU5f8N{uF=xJOg`o?vi^5PpVWASKNF9&bs&l6f032d4)$Zq3q88tX+?xy$4|W$2kvg z6$`>PkKBdM&ve#{K@Bbzu(WIY4)l3&0H%I4&8V?k+B8Q0mwTW>b0q3fA)~z159P+#aG)djpJiJ zZ~AExv-Tg9#kkdSjLoJ5{(4~~g~nMlr9Xl2DT0Jb98yIIVq4av;V)rW&mKtuec{zt zGAFoH=VJc|u$?`RT{# z(XvHSheOl*?n8&?20^%jEl90BXWfeB=-9LwRxM7`y=-^drZdSTO;ey?0X+NGi)eUb zLuHxJx?KEMMCpC~(Nw(Le>hezS7&JO&xKc5=GE|*u%Kxj)q}CJ8|3!a2)Jv@fo5*-fy1m%rQTB08T>3oF*wpS8p@$ z|FQp&sX+un4xp2>ZyfwG2XY(^+?;l9-HIpfYK=d>n;ryp!NNuG^!V|(@T#jK<~yMe zH*eU0ryp*QU%r}pT;MEJxG<{Js)3Rxltxz8F>Kzj5$jgOZzd2{nA6WY1NU@!01d8b zz&vo`n1X}&WWp3o9`hj<&0U0p2f`Z?%2p_Yk?%i``sdWK_Hgdv)`R1pb(_$>MIX%m zZ9(uIPb^moBPR96xfjhBH9iDl0p>$}tYi z@>c@1uY?jTP{TW3B+xjvINzR~8ZG`*llln~NUIku!ZYn3!rYm^IG`?7rVQFX-W!cu zw~=RTxTZk$rW1w@#mIjBBObzZN>}ZgK$V)+(fPRnIOWv3C|IPBT)^$wu?x!@_dkFA7L43 z^Mbobpj<6jrY?oJlow}-F44s&MA$Z;i0lrDunBM0O18?I$j zG3i+qFCyZvw{P8stYb$|q*zf2Vt$u6f#>kSLm2hkNQ`*u<+SS~HVZsCvNx`4cBR>s z!o7iFaJ@NX5(Yi~O45L-vo5HMF`qxJ&hv1N5q1xL3|cLG*&(~clP3J0oc{ozEjx!b zO5*o@TyjJcxzKV|6mR`>AQ(z-O7!EJf?XTpe{mwvQR%W4i$!q^m|!qJ43XPuRxDV6 z2d`}eAzO0t5qaNyS1WXR{waC&oVy?*P&19`Y_k${!Grm;@!R(^(7jDZY}uH4n;EZf zrRpbRncQ(7mfzNXs)RwiO_ZRYoo3LhdZS{zh8kv6N zc^LyAM%&J<^}>?vAQ$(qO#2lNH-8*^c84X57?}5WX@PD}-id^rwi(6 z2dMmKO#KR-ZfTNsNTv_8N;RwFt?$1=@sjFbb!7u47GnVR?78kSU?P1M{#mmgcQtI0 z-Kpbd;C}-v|dtK>OU5Y|KQ9bBjm?$yC3GSt`oD$xBVf*4dcz z%g=c1#v9VUCCjhV1r0C9@J~N*toPjPW(N}AGf1m{%iaP6b7s!MeT`b>xGpv8R>#Ee zMnS|ut2(e_$dHA-yY}MQUc>Rx+h55YE3$5h1TMV%O!R%RJ!;n%HwCCVaZqw#o8P_D zMme#l77v*Aycsom*rF}h$3{p1$DhujQYU`X49%+($EG3HPLFwM63TQ^4W*B(MY1`? z6;)!f_P~{w%LQeo9|4BDx^zJM0e$qNR%$rjI+~unV+x3+2rx6J{e=4)w~FpROtWHD zYF5Ui@7_e|GQ}Me9%pM|4xIDH0?hqmp*$|QdaX)0uR(qJOmt?6g4cy@EmV3wU#D`a8z%vorA?d`EP z=Tx{p<^Pa2eJ!znK_q9*iFj z=Hde&A`iWbg+f&4ujpJ>4q?OtG*1$e6mc*kD2BltKb}%`Qs#UfW#{C^#B9v^ZaVt6 zy%$?HY)G#)J;{|9$o*$nGeMm>Tl zE0zGRy73CUIPMt~C?MiGY+#e}6BZf~`wiGD9%H{uzj z*o}DNih`M1A+;cp=4QdrtUCJXuvai#jgZnw*%diVppE0PW5oq_Xhlv13!C+aqh74-ZYxg9Df&<#v-0qsZI`Ek(}wEp7KB^VA~YH!BWOp+*I zd3_@LF6^ocE%wu=MXjNK)sn-VoYMvL{}Rl8f5wX(UaMqGeeCEFOd0(KMm_Z;b|g7! zOq|Sg#zhyR&&c68xf;I_z)s7eoISgCV)C0~@zGo3uzTk&X%9d5(u;9#*T+z;c6GI9 zP*%i+>gOAnf}m= zVXkD;R{R_I4R_@5LHsd&I=+}V0SjmSft_2o$wO=eh=r5pCX7a~_~HxNlYD;8~|UmS_opM5#) zqi#^%_@lqx6;ya^pc7yYS<~8vy;+V6~-}wk1jd>4C z<}Jd0afy+>UqKwWUZPY9h{I`aYuf@BHM{`%@`_kyy$}qXV(M5i%z~6yTvRo>J#hO zQ}7(Xmc4Bg_|5=-y5-ZM=M|KqEgKtFtwP6JT42S(_-m5$7bt*#k9`G~-`FU+2auW1 z#ObO#w{63!B`dIS_B`oH6dPj26?65@s)vfzPL@s-VokH~(>DXCHgTiw2=wL|=15WP zKsRpjo#HM~Nv>qh(3FpEM{{Xtl%?GnUH6+z&wJX==+XX92n`)(=*Wc4P#gucJK30h zvax)n^-&zDhU>3$3js966sDQhX6qL0n4P=@O4MVfPdGA*n`~^`vwt%=sBkm)j z?FLPJ0~a*BBx3({?ZH9@V4^UXzYglvWbAH440OiRz)chr}<&bgft+2EY;9|w_SNY24; z-rGbQ&a6PZ%ypxgw$pQt0i#OpOAnsE4|d++^qUA39oDN4CcHc%)=^XA)H)dQ?if_4 zCa$wkOc(~AXL=*+g&vfOWfhQp#x)BiSBFJGO@fQPnR5<>D^<2_{0AMHw!q@qb0VM?yHt7&8-ylz-7Yk{Eln2iU$4c!pPQ#6DTH>l(Zj`6@b7r+b_T12(^TkRMI=4f- z0|z>3d(GPB8Vr&fz7vI5m?TYLkZJa{Wm}*+@6KjB19a{=WMHv_fKW=L;r^{K#xL+x zy`ahseVF8!Atgs}5;wp#pz)WRF?W4u0&c2Gk_kc8BQ>J+>8IZD)k$_qaHfv7fXmPZ z@XmDZ#WG}z6a4qd`(VU>g(t7n38hiAWN~@Uhp_|4$^`L`}Lyfkaew0>2Q(R=eH?iG71>WnzcU7o z1(F8*jJ?Mk-VZ@feizcr9%`awNRE@ROtIP}8BcrU>?1X96f#m*NxbQe?{#AXE>lpu zi$>nj9QahWcYvY@S_%aa1tdpgVP|w|mdb;jwq!Ldmm1z6VZlizJv#}B-pdK{*X{s2g-s~NZy=5Z(yI@N} zGC=eGb!XIMFs9y=efrBjEjc_o^CoELS1BztNPWmeS@A#d4e3&wm*?&e6cST2Z%>;u z{OoDn-eyr3{03MCtkiiSuv&1tOs~>L7jxuT@fcm#Evkt%%NmAN5qBgbqQJD8+nVT@ z$xosps@a`$p=E3HH0*E9u9g6(YuwpQ;fJA&{?@os5+;Nl-mlRFK|m)1vor2u4s`ra zK-ka21i}O?E5Y|R8R)l()n-hF$fSH9pnY4ngQ5#RUrU=QJ7N`ar*IB9>&Er~DLY=< zjI}qAvvp)4=K$K(?T)>hx!fb00RmEpW-mL71=!YmU-uc;TNqi_i2C@mZt~9cU?L<( zfT1I9?;v~g8?Q1dHFLbPfF^h0X&W@Y2B`q8m?9!En9bRe1)q9dCW{BOc-jY*KZUz; z!(mu`=(&*%-r`T5XXh^>lQ48Jgp`^4%)m8(_IKG>3$c|lY~XvgdT#EM?P&C|Wp2Ks zneV3}%fcBg36HNi~=7hUVkQZ4Nno`uPT|Ad%I5z$)O| zYt_`rwJk{vciJ}0N!AC_xDKF2UfhgFi%KqE$SqC-iQ33_#Him1B+>0!?&+gEI7#K` zdP=Q)v9c>@F$zdNhfLTEY`$j@vomD~cR_~s7J>{15g5oX{s(}L<@9s_%^RPp8wIq+ zohm7^*z-G(Sl`u!K4VeiE2{$6ocpv!?}!PO<(r=sO+GQS56$?d}gLl76s=3lQ~SH77ucR^97yt7RCWO zybxtG2&<=U17_KA;xss+@ImelbQ91;YZPi~-4F4A)(IVkwqhjO=@~F|kkfJqXwK;l z$@2lJYa1F!zTQneh5}5U%-Ru|PCb@qE@D3QasY&Ev|M^fy{DO*GiY)^^B^WGGkm8C zxwVa)&=Gr%<%1-Rkq>-l3kM`C$Mc-3cJ~IlqoKVMmwZ6$+0dEev-z>PQ9#7&0j;s4 zi^B96TGcIcx#2$%$--OZh5+qOGI1$+yCjQ3|H|d4nNS0k$&2Wq67NqTuXfgn0NPu3(E7oo3v^ZFNZyo^gEEO? zPm+WS=&(ZJib)Sj-;tb}Bw31}oM2x@7(A&gv8|MRcriemg#20F+R>@h$OE61%(UrE zvwr+VjQP&$YbH;aIgJK_uY(n^`7Uq9-Z9a7uH4`tRR_{ITe5=Z^>H?)sh`Un&t4z0 z6frZEbvhB`?RD9*y#pOeUxneE3ec>NqmmhB8+ab)E zJ7VQ<0+&2MvqfO&Rw}zlVvDUH5W|iZ!_@2<`<=VvMYX^Ej`Y8?t;#d?`I3n{Qk=!F zcN3PCQE}!_ZbtZj-CfyoI`xk--0{FxuY9QllUKMm-8!C{(GC0wrD%MRDo?q>yiq%NI;FW{i=x!4oT zm|Bg=^f;uZWpBrp5pMySCC9E4`^(qd5|Hzx+K6cGO?#0Lg|@4&glKwy=ir2(@$tFe zesvKLGqgwo(+B$RS!>^c`YV#-J=wyH>%Pv@(@!kjKkoqU(xjGS4!X#|Pk=V&c0k)X zbvh9?u;pyM)Wi$?*a5z3D@Njwayn%Ps{Ak=UF1QMYu%TaQHW(=XkHOJegfL6o#V3+ zYv2C)Z!Zk@?AhV)IZ!|2<|kL31NV3Sn_-QDONu-q(7xFt%&J{dgi)8kS1>?}?!z1< zQD38r7yEC+tvnT+iy`4_b;0p-+O?F_BrZ77#(Tv{DP_Lszp8z%eeY5Ve4(6DCyk(P z!gvY!j|J$FyKDlC$@}Bt{RD*H>zdvHeCInrhhBDZ#Ret-92yor*0`1!s(^;bBv>_` zfx1xmSpc0nnSZZm@{V!cK&yEj2$QS+^)oxBUFJP=<5bkum z))%uu$WVPB&@$FD-G4<=d@o4n@-^3RPHs`Hrn;`~V@Wp*XdXoN0BD(s<(RqMSj)QN zq@$V?5?RzRdTb8Z1Mf1VCf*QYFF z@{mT(@ORZyL*eef*6{hB09lVVVbq82n-mh*t3BKXcy!h`E=}T|=>NmPE+v1Qo!xNP z5njA~X=tBQ*KJ&KR4r!i`}z7g8-M5NP^){DWVw)cfCTX{I#~D&XfW7R=H%^QgO7oi z>?zD?n_&SeP558nnUa&BhbOI_OwTJy|64sL`+Irq8>1@v5&e<0vQeW34cOMGr|zLR z-*DX;I{`g{nl3z^ey3?uX8Cg>9S*M@1cKjOvbT&cPEIv6Rm#xHLt*pP8*8%Q^?5^`MINNga(CPW=p>iy zRS_bVgam9jS>gX=XajU{n2r0)VXr~R75Fi1jw8N0Q=e+kBU-Cv?ngZX+BI_ea6JI? z5YR&=9J}&jDbKxzu>xdL6iXE_aqghO>7%)lFbl)r3n07ejuVkeNAqgd#H{bAAE}fi zN5_{EiN9C&N={OS{v!Y#XdI&bGoT%~U~Dc=EJMZ)mqlkYpu6jC%3NcHKkwoWqcEN` zpQRCO9zbRN%$^YFasaxY0>$#BP(jvL@ye1hEcX-9n zXv0<9HS~{R+t(|Amr!u3+-l$Li@y%&GuzT6 z03v%&V#IkBfcMAjiwc&|=NU1~?qCFwx5!b|$1;(}!a@yu2J_X9BSYKWRcN1}@g4wA zMw?%KH)*=^a)~h4B@H2b>m8H>H4z_IzNtw;SlFyOX5#S#II@RSv znifF65ZR|k%#-52LL~|0;`abu8gXD7oGPEsXCsRN4h@~)VGyp8aqb)&UmR2cbBcl3 z4xeGI%8|%@U(2LRqmv~Q+6(<03%hzs3Q}@L$!@dAi}fxOw7*7*GaE1oK2% zJeYSH`i`Nm?>_QqviE4YmiM9f4X7uGJ^^#om{_-N@-;vQ`zerx&1%5tz2LN8Pgu1y zXikW8PKHPV0d&4R$R`prb^@L?G|G3T#&>w-1eaeEF$b6d4^17UtTxGp5&tSot&(_; fI+%FY20+CBO`h>{=Flqi00000NkvXXu0mjfGe|F^ literal 0 HcmV?d00001 diff --git a/integrations/minimax-mem0/mem0.mcp.json b/integrations/minimax-mem0/mem0.mcp.json new file mode 100644 index 000000000..dfc2b1c23 --- /dev/null +++ b/integrations/minimax-mem0/mem0.mcp.json @@ -0,0 +1,11 @@ +{ + "schemaVersion": 1, + "mcpServers": { + "mem0": { + "type": "streamable-http", + "url": "https://mcp.mem0.ai/mcp/", + "description": "Mem0 long-term memory: add, search, update, and delete memories so the agent remembers context across sessions.", + "timeout": 30000 + } + } +} diff --git a/integrations/minimax-mem0/skills/memory/SKILL.md b/integrations/minimax-mem0/skills/memory/SKILL.md new file mode 100644 index 000000000..3f1f048df --- /dev/null +++ b/integrations/minimax-mem0/skills/memory/SKILL.md @@ -0,0 +1,41 @@ +--- +name: memory +description: Use Mem0 to persist and recall long-term memory across sessions - the user's preferences, decisions, project context, and durable facts. +--- + +You have access to Mem0 long-term memory through the `mem0` MCP server. Use it so the +user does not have to repeat themselves across sessions. + +## When to recall (search memory) + +At the start of a task, and whenever the user references something they expect you to +already know ("my project", "like last time", "the usual"), search memory before asking. + +- Call the memory search tool with a short natural-language query describing what you + need (e.g. "preferred language and package manager", "deployment process"). +- Use the returned memories as context. Do not announce that you searched; just apply + what you found. +- If nothing relevant comes back, proceed and ask the user only for what is missing. + +## When to save (add memory) + +Save durable facts as they come up, without being asked: + +- Stated preferences ("I use pnpm", "always use TypeScript", "no comments in code"). +- Decisions and conventions ("we deploy on Fridays", "the API base is X"). +- Stable facts about the user, their team, or their project (stack, roles, goals). + +Do not save transient or trivial details (a one-off value, a temporary path, secrets, +or anything the user would not want remembered). Save one clear fact per memory, phrased +so it makes sense on its own later. + +## When to update or delete + +If a new statement contradicts something you recalled, update that memory rather than +adding a duplicate. If the user says to forget something, delete it. + +## Boundaries + +- Never store secrets, credentials, API keys, or sensitive personal data. +- Memory is scoped to the connected Mem0 account; keep one user's memories to that user. +- Prefer recalling silently over interrupting the user to confirm what you already know.