anchor.diff:                       (:jsonrpc . ,+json-rpc-2.0+)
                        (:error . ,error)
                        (:id . ,id)))))
  -               (t 
  +               (t
                   (error "Response must have either result or error."))))
           (t (error "Unknown JSON-RPC protocol version ~a." *json-rpc-version*))))
   
  
positive.code:     )))
  
  
  (defun invoke-rpc-parsed (method params &optional id)
    (flet ((json-rpc-2.0 ()
             (equalp *json-rpc-version* +json-rpc-2.0+)))
      (restart-case
          (let ((func-type (gethash method *json-rpc-functions*)))
            (if func-type
                (handler-bind 
                    ((error #'(lambda (err)
                                (error 'json-rpc-call-error :error err))))
                  (destructuring-bind (func . type) func-type
  
negative.code: ;;;; up and incorporated this into json-rpc
  ;;;;
  ;;;;     (defmacro defun-schat-api (name params &body body)
  ;;;;        .....
  ;;;;         (setf (gethash ',name *json-rpc-method-definitions*)
  ;;;;          (list :parameters params))
  ;;;;
  ;;;;     (defun generate-smd (stream service-url)
  ;;;;       (let ((json-data
  ;;;;               `(:object
  ;;;;                  :service-type  "JSON-RPC"
  ;;;;                  :service-+url+ ,service-url
  ;;;;                 :methods
  ;;;;                  (:list
  ;;;;                   ,@(loop for fname being each hash-key of *json-rpc-method-definitions*
  ;;;;                        using (hash-value description)
  