What ISP needs to provide in order to route native IPv6 /56 range to several VLANs
Solution 1:
You're not going to get a gateway address inside the allocated /56 or whatever IPv6 block that's assigned to you and routed to your premises. If you somehow do, you politely ask the ISP to put someone on the phone who knows what they're doing. Or perhaps less than politely.
Usually, you don't have to worry about the upstream IPv6 address at all, as it will be autoconfigured as soon as you plug in your router. Most ISPs seem to be doing this with DHCPv6 (with prefix delegation), though it could also be done with straight up SLAAC if you have a statically assigned prefix.
Once the /56 comes into your network, you can subnet it however you like.
An example, with one possible (only partially fleshed out, and probably not very useful as-is) network design appears below. In any case, the IPv6 address of your upstream connection to your ISP is provided by the ISP and is outside your assigned prefix. You generally only need to worry about the inside interfaces. This example supposes you have an edge router with an integrated 4-port switch, such as many small business or SOHO routers.
IPv6 Address: (static, DHCPv6) IPv6 address: (SLAAC)
2001:db8:3481:2000::2/64 2001:db8:3481:2000::021d:e1ff:fe1a:630
Gateway: (static, DHCPv6) Gateway: (SLAAC)
2001:db8:3481:2000::1 fe80::0208:30ff:fe9d:aa61%ether1
ISP <-----+
|ether1
+---------+---------+
| Edge Router |
|-------------------| Your Prefix: __
| \ / | 2001:db8:3481:a700::/56
| X | ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
| / \ | Switch Ports example:
|-------------------|
| VLAN trunk/switch | 1: VLAN 1-64 2001:db8:3481:a700::/58
+---------+---------+ 2: VLAN 65-128 2001:db8:3481:a740::/58
|ether2 3: VLAN 129-192 2001:db8:3481:a780::/58
+----> Core 4: VLAN 193-256 2001:db8:3481:a7c0::/58
Downstream in your core, you can further subnet these at core routers (or even layer 3 switches, more SOHO routers, etc.). I've also assumed every /64 will be on its own VLAN, though whether you do that is another detail you'll have to work out on your own.
You can also use DHCPv6 with prefix delegation to actually handle the addressing, which is probably easiest. Or you can go with SLAAC, which requires a bit more setup, or even assign manually, which I wouldn't generally recommend simply because it would be too labor intensive.
Solution 2:
What you need them to do is route your IPv6 prefix to your router. That could be done through prefix delegation (likely on a home/small buisness connection). It could be done through a static route (likely if you are buying a leased-line or similar). It could be done through speaking a routing protcol to you (only likely if you have multiple prefixes, multiple uplinks or another complex situation that justifies it).
In order for them to route packets to you and you to route packets to them it is nessacery for there to be addresses on the link between you and them. They could use link local adresses for this, they could allocate a seperate block or they could use a subnet from the prefix they are giving you (in which case you won't be able to use that subnet for boxes behind your router).
What you DON'T want them to do is allocate your whole prefix as "on-link" for the connection between their router and your router. If you really can't convince them to do a more sensible setup there is a program called ndppd which can be used to grab the traffic into your router by faking ndp responses but I would consider this a last resort.