are all verbs related to 'giving' (あげる、くれる) or receiving (もらう) things or favours. You use the particle to show to whom it goes.

Humble variants

もらう → {頂|いただく}く

Your 'circle' - Which to use?

You use くれる when it is done towards you(r circle) You use あげる when it is done outwards of your circle or outside of your circle. You use もらう to denote receiving, regardless of circle.

お母さんはノートをAさんにあげた。 Aさんはノートをお母さんにくれた お母さんはノートを私にくれた 私はノートをAさんにもらった。 Aはノートを私からもらった

に・から for もらう

For もらう, both and から can be used to denote the giver. から is preferred if に makes it ambiguous!

彼から花をもらう 彼に花をもらう to receive flowers from a boyfriend.

Volitional only

These words are all volitional, meaning that if something goes against someone's will, or it makes someone unhappy, you cannot use these words.

先生が宿しゅく題だいをたくさん~~くれた~~。 先生が宿しゅく題だいをたくさん出だした

履歴書を~~あげた~~ 履歴書を渡わたした I handed over my CV (I had to, it's not like I wanted to)

もらう when you put in effort

When you go out of your way to get something, use もらう and not くれる

種類が市役所に~~くれた~~ 種類が市役所にもらった I got the documents at the municipal office (They don't just give them to you, you have to ask them)

Also for Request, もらう can imply that you have specifically requested something

助手にかばんを買ってくれた。 ○ 助手にかばんを買ってもらった。 ○ My assistant bought this bag for me.

助手にかばんを~~買ってくれた~~。 ✕ 助手にかばんを買ってもらった。○ I got my assistent to buy this bag for me.

As auxiliary verbs

As auxiliary verbs, they have to do with asking for a favour or being thankful for having received a favour. Like the circles concept, it depends on whose perspective you see it from.

弟が本を貸してくれた I borrowed my little brothers book (he did me a favour, and I am thankful)

子供にケーキを買ってあげた I bought cake for my kid (as a favour)

Note that this is what is 「~ください」in 敬語!

教えてください Please tell me!

Request

When in a question, it is a request. This is very commonly done in the Potential form (〜eる)

手伝ってくれますか? Can you help me?

ビールを買ってもらえますか? Could you buy a beer for me?

really polite

You can make it even more polite by putting it in the negative

駅まで来てくれませんか? Couldn't you please come to the station?

Can also use the 謙譲語 (Humble language) variants:

会議に出席していただけませんか? Could I perhaps join the meeting?

Indirectness

As per usual in Japanese, being indirect is more polite. Prefer くれる over あげる (especially when the other person is higher in status)

先生に本を貸し~~てあげました~~ 先生が本を貸してもらった

With causative

When combined with Causative form (〜aせる), denotes that someone allowed you to do something (lit. To let someone receive the favour of (...))

上司が休ませてもらった。 My boss allowed to take some time off.

When very using 謙譲語 (Humble language), it is just 'doing' the thing

本を読ませてもらいます。 I read the book (humble)

明日休ませていただけませんか。 lit. Wouldn't you let me humbly receive the favour of taking tomorrow off?

Youtube - Kaname Naito - How to use もらう