Do you want to also serve web services or just consume them?
I've written a WSDL server which works with OpenACS, called tWSDL. The server API is called TWiST and works pretty well. I've started working on the client API, but a decent client is much more difficult than a server. In addition, most servers use RPC/encoded, which is unfortunate. The tWSDL client will probably only work nicely with document/literal. As an example, the Google Search API is RPC, but Google's AdSense API is document/literal. Document/literal is considered to be significantly faster and programming language neutral.
However, tWSDL/TWiST has lots of helper procs which can be used to build a client. In fact, the TWiST server has a testing feature where a web form takes inputs and converts them into a correct client request. This is posted back to the same server, and both the request and response documents are shown. This is essentially what the ASP.NET server does, if you have ever seen that work. Significantly, tWSDL/TWiST can perform true validation of entire documents (either request or response) These validation services are independent of the other system components. You can test this with the examples below by supplying invalid data.
Here are some test services:
http://junom.com/ws/
There is a thin OpenACS package which can be used to download and install the releases from Google code:
http://code.google.com/p/twsdl/downloads/list
The OpenACS package should work, although you need svn installed.
You can more easily browse the source, or get a slightly more up-to-date version at
http://junom.com/gitweb/gitweb.perl?p=twsdl.git
If/when the client is finished it should work with pure Tcl, in fact, I recently got the server to work without AOLserver by writing a thin replacement for the ns_conn/ns_return API (it still requires nstclsh).
I'm not suggesting either, but it makes testing easier.