Yes, god yes, this. The most valuable TPMs and managers I've ever had, were valuable because they got between business/marketing and us. You should know your team well enough to know what they can realistically do, and then do everything humanly possible to set expectations of people outside the team to match. Devs should never, ever, ever get a requirement, even a simple task, from someone that is not a direct manager...one of the worst things that can happen to a dev is getting tasks from four different people, all of which are pri 1, all of which will only take a couple hours, just a couple hours. At the same time, you need to be able to give meaningful status updates to people, because devs usually can't. "When will this feature be done" means something completely different to the developer and to the guy selling it to the customer.
Devs should be accountable for their work, but you're the person they should be accountable *to*. They don't have the time to understand all the business realities outside their team, that's a fulltime job, so do it for them and keep other teams from demanding unreasonable stuff.
I have no idea how to actually do that job...which is why I'm happy to stay in development forever, but this one thing is probably the biggest factor controlling my happiness and productivity across different places I've been. Learn how to be your team's shield and do it well.
Aside from that--daily standups. SHORT daily standups. I don't care if you're doing agile or scrum or whatever, or how you're managing tasks. There need to be in-person status updates, and people should be encouraged to vent a little about what's blocking them on a daily basis. Figure out a video conferencing tool to use so that people who are working from home can participate, there's some really good free ones to use.