TERMS OF USE

These terms (“Terms of Use”) apply to the use of our website at http://www.mendeley.com (the "Site"), and our software (the "Software") downloaded from the Site (collectively, the “Services”). Please read these Terms of Use carefully before you start to use the Services. These Terms of Use include the Site’s privacy policy, Copyright and Intellectual Property Policy and any additional terms or product requirements applicable to the Services you use. By using our Services, you are agreeing to these Terms of Use. 

We may revise these Terms of Use at any time by amending this page. You are expected to check this page from time to time to take notice of any changes we make, as they are binding on you. 


1. INFORMATION ABOUT US

1.1. The Services are provided by Mendeley Limited ("we", "us" and "our"). We are registered in England and Wales under company number 6419015 and have our registered office at White Bear Yard, 144a Clerkenwell Road, London, EC1R 5DF, United Kingdom. Our VAT number is 494 6272 12. 


2. PURPOSE

2.1. The principal purposes of the Services are to:

2.1.1. 	assist you in the cataloguing and managing of your academic papers and articles ("Academic Papers");

2.1.2. 	share your academic and scientific knowledge with selected colleagues;

2.1.3. 	discover academic knowledge and enable detailed search of academic papers;

2.1.4. 	put you in touch with like-minded people and facilitate research projects;

2.1.5. 	provide data and analytics to help monitor, guide and facilitate the research being undertaken across your institution.


3. ACCESSING OUR SITE

3.1. We restrict access to certain parts of our Site to users who have registered with us. If you register with us, you must provide true and accurate information about yourself. Should the registration information provided prove false or misleading (including your personal details), we may suspend or terminate your account.

3.2. We restrict access to the Mendeley Institutional Edition portion of our Site to users who are covered by their institution’s license agreement granting such access, if any. If you are covered by such license agreement, additional terms detailed therein govern your use of the Services.

3.3. If you choose a password or any other piece of information as part of our security procedures, you must take reasonable steps to keep such information confidential and secure, and you must not disclose it to any third party. We have the right to disable any account or password, if in our reasonable opinion, your account information has been compromised. You must tell us immediately if you become aware of or suspect any unauthorised use of your account or access to your password.


4. OUR SOFTWARE

4.1. We hereby grant to you a non-exclusive, personal, non-transferable license, in accordance with these Terms of Use, to:

4.1.1. 	download, install and use the Software for the purposes of cataloguing and managing your Academic Papers, including making a back-up copy of your Academic Papers;

4.1.2. 	distribute the Software so that other users may install and use the Software for the purposes of cataloguing and managing their Academic Papers; and

4.1.3. 	make a copy of the Software for back-up purposes.

4.2. When you download our Software and connect it to a Mendeley web account by entering your account details, our Software collects (even while you are offline) certain data which is uploaded to our servers when you synchronize your Software and Mendeley web account, specifically, data relating to:

4.2.1. 	Academic Papers such as the author name, title and keywords for the purpose of assisting in the:
	

    cataloguing of your and other user's Academic Papers;
    indexing of academic articles and materials;
    searching of the indexed academic articles and materials;
    improving the document recognition process for all users;

4.2.2. 	reading, cataloguing and accessing your Academic Papers for the purpose of:
	

    generating recommendations for you including articles that you may be interested in reading and these recommendations are displayed in your private account;
    preparing individualized statistical information which will only be made available to you via your account; and
    generating anonymous aggregate statistical information regarding the interests, habits and reading patterns of all users and/or certain sub-groups of our users such as all users at your institution.

4.3. Except as we permit in these Terms of Use or as permitted by any local law, you undertake:

4.3.1. 	to use our Software only in accordance with the Terms of Use;

4.3.2. 	not to copy, rent, lease, sub-license, loan, translate, merge, adapt, vary or modify the whole or any part of our Software, nor permit our Software or any part of it to be combined with, or become incorporated in, any other programs (though you may contact us at office [at] mendeley [dot] com to seek a written permission from us to do so);

4.3.3. 	not to disassemble, decompile, reverse engineer or create derivative works based on the whole or any part of our Software nor attempt to do any such thing except to the extent that such actions cannot be prohibited by law;

4.3.4. 	not to remove or alter our (or our licensors’) copyright or other proprietary notice on our Software.

4.4. Save for the Content (as defined below), you acknowledge that we are the owner of or the licensee of all intellectual property rights in our Site and in the material published on it, including the Software, and that you have no rights in or to our Software other than the right to use the Software in accordance with these Terms of Use. 


5. INTERACTIVE AND SOCIAL NETWORKING SERVICES

5.1. We may from time to time provide interactive services on our Site, including, without limitation:

5.1.1. 	forums for discussion of issues of interest to users and members of our Site;

5.1.2. 	wikis for users and members to share and collaborate on knowledge relating to issues of mutual interest;

5.1.3. 	social networking services where registered members can: (i) create online personal profiles; and (ii) interact with other members;

5.1.4. 	facilities for the uploading and sharing of users' and members' Academic Papers with other users or private user groups you have created;

5.1.5. 	generation of statistics and recommendations.

5.2. We do not oversee, monitor or moderate the content that you upload to our Site using our interactive services and neither do we vet or screen users of our Site.


6. ACCEPTABLE USE

6.1. You may use our Services only for lawful purposes. Accordingly, you may only post versions of Academic Papers or other Content (as defined below) on the Site if you have the right to do so.  By way of example, while many journal publishers permit posting of some versions of Academic Papers, most journals restrict the sharing of final versions. To be sure you have the right to upload such content, you should review your publishing agreement, the publisher’s copyright policies, and/or any other applicable information prior to posting any version of an Academic Paper.

6.2. "Content" shall mean any material you post on or through the Site, including, without limitation, Academic Papers and any comments on forums, wikis, personal profiles and communications with members. By using the Site and posting any Content, you permit us to extract metadata and convert to PDF form, for indexing and improved searchability purposes only, any such Content that you post or upload to the Site. We do not claim any ownership rights in your or any other user’s Content. After posting or uploading your Content to the Site, except for the permissions granted to us hereunder, you continue to retain all your rights in such Content.

6.3. By posting your Content you represent and warrant that: (i) your Content is original to you and/or is licensed and fully cleared to permit us to use such Content as contemplated herein; (ii) your Content was produced in compliance with all applicable laws and regulations; (iii) your Content does and will not, in any way, violate or breach any of these Terms of Use; (iv) your Content does not contain libelous, tortious, or otherwise unlawful information, infringe or violate any copyright or other right, or contain any matter the publication or sale of which will violate any federal or state statute or regulation; (v) your Content is not obscene or in any other manner unlawful; (vi) your Content shall not be injurious to the health of any user; and (vii) we shall not be required to pay or incur any sums to any person or entity as a result of our use or exploitation of your Content.

6.4. You may not use our Services:

6.4.1. 	to send, knowingly receive, upload, download, use or re-use any Academic Papers without authorization. You may perform these actions only if you are the copyright owner, have the copyright owner’s permission, are permitted to do so under your publishing agreement or your institution’s license agreement or under license from an Open Access database or under a Creative Commons license.

6.4.2. 	in any way that breaches any applicable local, national or international law or regulation;

6.4.3. 	in any way that is unlawful or fraudulent, or that advocates, promotes or assists any unlawful act, or that may deceive any person or that breaches any legal duty owed to a third party, such as a contractual duty or a duty of confidence or that may be harmful to a user;

6.4.4. 	in any way that is defamatory of any person, obscene, offensive, hateful or inflammatory;

6.4.5. 	in any way that promotes sexually explicit material, violence, or discrimination of any kind;

6.4.6. 	in any way that infringes any copyright, database right, trade mark or other intellectual property right of any other person;

6.4.7. 	in any way that is threatening, abusive or invades another’s privacy, or is likely to harass, upset, embarrass, alarm or annoy any other person;

6.4.8. 	to impersonate any person, or to misrepresent your identity or affiliation with any person;

6.4.9. 	to upload, post, email, message, transmit or otherwise make available or initiate any content that includes any unsolicited or unauthorised advertising, promotional materials, “junk mail”, “spam”, “chain letters”, “pyramid schemes”, “market research”, or any other form of solicitation whether it be for commercial or non-commercial purposes. This prohibition includes but is not limited to (a) using Mendeley invitations to send messages to people who don’t know you or who are unlikely to recognize you as a known contact; (b) using Mendeley to connect to people who don’t know you and then sending unsolicited promotional messages to those direct connections without their permission.

6.4.10. 	to knowingly transmit any data, send or upload any material that contains viruses, Trojan horses, worms, time-bombs, keystroke loggers, spyware, adware or any other harmful programs or similar computer code designed to adversely affect the operation of any computer software or hardware.

6.5. Unless you have express prior written permission, you may not use any spider- or bot-like system, software or other device or program (whether automated or otherwise) to extract content, data, information or other material from the Site.

6.6. You also agree:

6.6.1. 	not to access without authority, interfere with, damage or disrupt:
	

    any part of our Site;
    any equipment or network on which our Site is stored;
    our Software or any software used in the provision of our Site; or
    any equipment or network or software owned or used by any third party.

6.6.2. 	to use our Services only for research related activity (e.g, not to store your personal collection of movies, music and other large file types unrelated to your research activities).

6.7. You may form more than one private group as part of a Mendeley for Teams package only if you intend to be active in all such groups; you may not form more than one private group to act solely as an administrator.


7. FAILURE TO COMPLY WITH THESE TERMS OF USE

7.1. To raise complaints regarding alleged copyright or other intellectual property infringement, you must follow the instructions set forth on the Copyright and Intellectual Property Policy page. For all other complaints about the use of our Site or Content (as defined below) posted to our Site, please contact us at complaints [at] mendeley [dot] com. We request that you provide a sufficiently detailed description of the basis of your complaint and your contact information in case additional information is necessary. We will then review your complaint and decide whether there has been a failure to comply with our Terms of Use. If not, we will deal with the matter as described below. We will inform you of the outcome of our review within a reasonable time of receiving your complaint.

7.2. If we determine, in our sole discretion and judgment, that you have failed to comply with these Terms of Use we reserve the right at any time to take all or any of the following actions (and any other action we reasonably deem appropriate):

7.2.1. 	temporary or permanent withdrawal of your right to use our Site and/or closure of your account;

7.2.2. 	temporary or permanent removal of any posting or material uploaded by you to our Site;

7.2.3. 	issue of a warning to you;

7.2.4. 	legal action against you including proceedings for reimbursement of all costs on an indemnity basis (including, but not limited to, reasonable administrative and legal costs) resulting from the breach;

7.2.5. 	disclosure of such information to law enforcement authorities or third party complainants as we reasonably feel is necessary or required;

7.2.6. 	disclosure of your identity to any third party who is claiming that any material posted or uploaded by you to our Site constitutes a violation of their intellectual property rights, right to privacy or other legal rights;

7.2.7. 	use any technological, legal, operational or other means available to us to enforce the provisions of these Terms of Use.

7.3. You hereby hold harmless and indemnify us and our affiliates, officers, agents and employees from and against any claim, suit or action made by any third party arising from or related to your use of the Services or violation of these Terms of Use, including any liability or expense arising from losses, damages, claims, costs and reasonable attorneys’ fees. 


8. DELETION OF CONTENT

8.1. Except as set out in 8.2, you may delete your Content at any time using the automated account deactivation tool. When you delete your Content, our right to use it shall cease save that we may retain a copy in backup for a reasonable period of time and as necessary to comply with our legal obligations. However, the deleted Content will not be generally available to other users or registered members.

8.2. Where you make use of the interactive features of our Services to share Content with others, you may not be able to delete such shared Content. 


9. OUR SITE CHANGES REGULARLY

9.1. We aim to update our Site regularly. If the need arises such as an operational issue, we may suspend access to our Site, or close it indefinitely. Any of the material on our Site may be out of date at any given time, and we are under no obligation to update such material.

9.2. Although we aim to keep the Services available at all reasonable times, we may withdraw, suspend or amend the Services in whole or in part without notice including, for example, in the event of technical failures, upgrades, routine or emergency repair work or some reason outside our control. We will not be liable if for any reason our Services are unavailable at any time or for any period. 


10. LIMITATION OF LIABILITY

THE SERVICES AND ALL CONTENT ARE MADE AVAILABLE ON AN "AS IS" AND "AS AVAILABLE" BASIS, WITHOUT ANY REPRESENTATION OR WARRANTY OF ANY KIND, EXPRESS OR IMPLIED (INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF TITLE AND NONINFRINGEMENT AND THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE), OR ANY GUARANTY OR ASSURANCE THE SERVICES WILL BE AVAILABLE FOR USE, OR THAT ALL FEATURES, FUNCTIONS OR OPERATIONS WILL BE AVAILABLE OR PERFORM AS DESCRIBED, OR THAT THE SERVICES WILL BE FREE OF VIRUSES OR OTHER HARMFUL COMPONENTS. Without limiting the foregoing, we are not responsible or liable for any malicious code, delays, inaccuracies, errors, or omissions arising out of your use of the Services.

You understand, acknowledge and agree that you are assuming the entire risk as to your use of the Services and the Content, including without limitation the quality, accuracy, performance, timeliness, adequacy, completeness, correctness, authenticity, non-infringement, security and validity of any and all features and functions of the Services, your Content and materials associated with your use of the Services.

YOU UNDERSTAND AND AGREE THAT, TO THE FULLEST EXTENT PERMISSIBLE BY LAW, WE, ANY OF OUR AFFILIATES, OR OUR RESPECTIVE SUCCESSORS AND ASSIGNS, OR ANY OF OUR RESPECTIVE OFFICERS, DIRECTORS, EMPLOYEES, AGENTS, REPRESENTATIVES, LICENSORS, PARTNERS, OPERATIONAL SERVICE PROVIDERS, ADVERTISERS, OR SUPPLIERS, SHALL NOT BE LIABLE FOR ANY LOSS OR DAMAGE, OF ANY KIND, DIRECT OR INDIRECT, IN CONNECTION WITH OR ARISING FROM USE OF THE SERVICES, INCLUDING, WITHOUT LIMITATION, COMPENSATORY, CONSEQUENTIAL, INCIDENTAL, INDIRECT, SPECIAL OR PUNITIVE DAMAGES.

We do not claim ownership, endorse or take responsibility for any third-party product, information, guidelines, materials or services that may be offered, advertised, provided or displayed on the Site or incorporated in the Content, products or services contained on, accessible from or distributed through the Site.

Some jurisdictions do not allow for the exclusion of certain warranties or certain limitations on damages and remedies, accordingly some of the exclusions and limitations described in these Terms of Use may not apply to you. 


11. RELIANCE ON SITE INFORMATION

11.1. We do not claim that the information on any specific subject contained on our Site is accurate, comprehensive, verified, complete or error free. Commentary and other materials posted on our Site are not intended to amount to advice on which reliance should be placed. You should seek appropriate professional advice. 


12. UNITED STATES OF AMERICA FEDERAL AGENCIES

12.1. Use by U.S.A. federal agencies will follow the amended terms found here.


13. LINKS FROM OUR SITE

13.1. Where our Site contains links to other sites and resources provided by third parties, these links are provided for your information only. We have no control over the contents of those sites or resources, and accept no responsibility for them or for any loss or damage that may arise from your use of them. 


14. JURISDICTION AND APPLICABLE LAW

14.1. The English courts will have non-exclusive jurisdiction over any claim arising from, or related to, our Services although we retain the right to bring proceedings against you for breach of these conditions in your country of residence or any other relevant country. These terms of use are governed by English law. 


15. YOUR CONCERNS

15.1. If you have any comments on our Site or our Software, please contact us.

Thank you for visiting our Site and using our Software.


These Terms of Use were last updated on February 6, 2014.

Copyright © 2013 Mendeley Ltd. – All Rights Reserved.
