Steve... I have not fished out of those islands, but I have chartered boats while on a cruise (Key West, Tampa, Cozumel). I did this by doing a search online and then writing to each outfit that had something we might want. Decide, based on your research, what size boat you'd like... 1/2 day or whole day... how much you're willing to spend... private or shared charter... then see if you can make a match. I usually send a deposit to hold the day/time/boat and then pay the balance in person. Plan on tipping the crew 15 - 20%. Ask them who you should tip... usually they say just the deckhand, not the captain.
Thing to ask are: do the crew/captain speak English (unless you speak more languages), do you pay extra for ice/bait/gear, are the fees for any licenses included, is it catch and release only or who keeps the fish, what can we fish for that time of year and can you catch the fish yourself (many of them like you to only reel in the fish... not actually catch it yourself). You'll pay a lot more for a private charter for just you and your son, but it is WORTH IT. If there are others along you and your son will have to wait for your turn to fish. I've paid more to fish with my son than anything else I've done on a cruise and I don't regret a penny of it.
For what it's worth, I think I'd start looking in St. Thomas... they would be under the guidelines of the US Coast Guard, right? Just thinking safety, etc.