Here's a very simple suggestion to force the declaration of alliances using an in game mechanic
ONLY YOUR ALLIES CAN SIGN UP FOR YOU IF YOU ARE ATTACKING
Defenders can sign anybody up so long as they are not allied with your attacker.
Alliances take 48 hours to be ratified.
Alliances can be broken instantly for a fee of 10% of your clans total gold (including what is in fiefs) or they can be broken normally for free taking 48 hours.
Alliances cost a daily fee that starts at 1% of your clans total gold per day and gradually decreases to 0.2% per day over time (decrease of 0.1% each week).
You cannot attack an ally at all, but fief ownership may be transferred between allies.
You still have to accept incoming transfers from allies.
EDIT: You are automatically allied to all your ally's allies and have to pay the appropriate fees
This would force allies working together, in order to attack other people, to declare themselves but won't hinder any clans ability to defend itself. Small clans will need allies to attack a neutral village, but after that they can dispand their official alliance but still work with others if attacked.
The fees are deliberately quite small (except the alliance breaking fee) so that alliances are not a noticeable drain on your resources, unless you have lots of them. They decrease over time to reward loyalty and also discourage the constant creation and disbanding of alliances. The alliance breaking fee is just to discourage back stabbing, however back stabbing is still possible if you stump up the cash. All the cash just disappears from the game and is taken from all members and fiefs (same % from all)
Finally, this would pave the way for limiting the power of large alliances in the future, without them just being able to split up into smaller clans. I don't want to discuss that here though.